Uploaded by ilya.sm95

Лабораторная работа №1

advertisement
ЛАБОРАТОРНАЯ РАБОТА №1
Цель: знакомство с СУБД MS SQL Server, создание базы данных, создание таблиц базы данных,
работа с данными таблиц.
Оглавление
Описание работы .................................................................................................................................................................. 1
Задание на самостоятельную работу: ............................................................................................................................... 21
Результаты работы для демонстрации преподавателю ................................................................................................. 21
Описание работы
Microsoft SQL Server — система управления реляционными базами данных (РСУБД), разработанная
корпорацией Microsoft. Основной используемый язык запросов — Transact-SQL, создан совместно
Microsoft и Sybase. Это РСУБД промышленного применения, чьи возможности имеют высокий уровень
соответствия стандартам SQL.
Утилита SQL Server Management Studio
Подавляющую массу задач администрирования SQL Server можно выполнить в графической утилите
SQL Server Management Studio. В ней можно создавать базы данных и все ассоциированные с ними
объекты (таблицы, представления, хранимые процедуры и др.). Здесь вы можете выполнить
последовательности инструкций Transact-SQL (запросы). В этой утилите можно выполнить типовые
задачи обслуживания баз данных, такие как резервирование и восстановление. Здесь можно настраивать
систему безопасности базы данных и сервера, просматривать журнал ошибок и многое другое.
Для запуска Management Studio в меню «Пуск» операционной системы выберите пункт «Microsoft SQL
Server 2014\ SQL Server 2014 Management Studio». Когда откроется окно программы, вас попросят
подключиться к какому-либо серверу баз данных SQL Server.
В окне «Соединение с сервером» необходимо указать следующую информацию:



Тип сервера. Здесь следует выбрать, к какой именно службе необходимо подключится. Оставьте
вариант «Компонент Database Engine».
Имя сервера. Позволяет указать, к какому серверу будет осуществляться подключение. По
умолчанию имя SQL Server совпадает с именем компьютера. Выберите ваш локальный
компьютер (ТГТУ-ПК\SQLEXPRESS).
Проверка подлинности. Способ аутентификации, можно выбрать «Проверка подлинности
Windows» или «Проверка подлинности SQL Server». Первый способ использует учетную запись,
под которой текущий пользователь осуществил вход в Windows. Вариант SQL Server использует
свою собственную систему безопасности. Оставьте вариант проверки подлинности Windows.
1
После подключения экземпляр сервера будет отображаться на панели «Обозреватель объектов».
Окно Management Studio имеет следующую структуру:
1. Оконное меню – содержит полный набор команд для управления сервером и выполнения
различных операций.
2. Панель инструментов – содержит кнопки для выполнения наиболее часто производимых
операций. Внешний вид данной панели зависит от выполняемой операции.
3. Панель «Обозреватель объектов». Это панель с древовидной структурой, отображающая все
объекты сервера, а также позволяющая производить различные операции, как с самим сервером,
так и с его базами данных и их объектами. Обозреватель объектов является основным
инструментом для разработки.
4. Рабочая область. В рабочей области производятся все действия с базой данных, а также
отображается её содержимое.
2
Прежде чем перейти к созданию своих собственных рабочих баз данных рассмотрим служебные базы данных
SQL Server, которые создаются автоматически в процессе его установки. Если мы раскроем узел «Базы данных –
Системные базы данных» в обозревателе объектов, то увидим следующий набор служебных баз данных:




master. Главная служебная база данных всего сервера. В ней хранится общая служебная информация
сервера: настройки его работы, список баз данных на сервере с информацией о настройках каждой базы
данных и ее файлах, информация об учетных записях пользователей, серверных ролях и т.п.
msdb. Эта база данных в основном используется для хранения информации службы SQL Server Agent
(пакетных заданий, предупреждений и т.п.), но в нее записывается и другая служебная информация
(например, история резервного копирования).
model. Эта база данных является шаблоном для создания новых баз данных в SQL Server. Если внести в
нее изменения, например, создать набор таблиц, то эти таблицы будут присутствовать во всех
создаваемых базах данных.
tempdb. Эта база данных предназначена для временных таблиц и хранимых процедур, создаваемых
пользователями и самим SQL Server. Эта база данных создается заново при каждом запуске SQL Server.
Создание пользовательских баз данных
База данных представляет собой группу файлов, хранящихся на жестком диске. Эти файлы могут относиться к
трем типам: файлы с первичными данными, файлы с вторичными данными и файлы журнала транзакций. Любая
база данных SQL Server содержит, по крайней мере, два файла: первичный файл данных (с расширением .mdf) и
файл журнала транзакций (с расширением .ldf).
Создание баз данных в SQL Server Management Studio
Использование данной утилиты является самым простым способом создания базы данных. Создадим базу
данных PERSONAL (Сотрудники) для хранения информации о сотрудниках фирмы.
1. В корневом каталоге диска С: создайте папку для создаваемой базы данных: «C:\PersDB».
2. В окне «Обозреватель объектов» найдите и раскройте папку «Базы данных». Щелкните на ней правой
кнопкой мыши и выберите команду «Создать базу данных…».
3. В открывшемся диалоговом окне «Создание базы данных» на странице «Общие» введите следующую
информацию:
Имя базы данных: PERSONAL
Владелец: sa
В таблице «Файлы базы данных» измените путь к файлам данных и журнала на ваш каталог.
Для всех остальных параметров оставьте значения по умолчанию.
3
4. Для создания базы данных щелкните «OK». Вы должны увидеть свою новую базу данных в окне
«Обозреватель объектов».
Отсоединение и присоединение базы данных
Для переноса базы данных на другой сервер необходимо отсоединить ее от текущего сервера. Для этого в
контекстном меню базы данных PERSONAL выберите команду «Задачи - Отсоединить…». В диалоговом окне
«Отсоединение базы данных» нажмите кнопку «OK» и убедитесь, что БД PERSONAL исчезла из списка баз данных
в дереве обозревателя объектов. Теперь файлы базы данных могут быть перенесены на другой сервер.
Для присоединения базы данных к серверу выберите в контекстном меню узла «Базы данных» команду
«Присоединить…». В диалоговом окне «Присоединение базы данных» с помощью кнопки «Добавить…»
выберите созданный на предыдущих этапах файл PERSONAL.mdf (ldf файл будет определен системой
автоматически), измените владельца на sa и нажмите кнопку «OK». База данных PERSONAL должна появиться в
списке дерева обозревателя объектов.
4
Создание таблиц базы данных
Таблица БД - это набор связанных записей, расположенных в рядах и столбцах. База данных состоит из
нескольких таблиц, каждая хранит набор связанных данных. Таблицы в самой базе данных
взаимосвязаны.
После того, как структура базы данных будет определена, можно создавать таблицы БД. Обычно
данные хранятся в постоянных таблицах. Таблицы доступны любому пользователю, который имеет
соответствующие разрешения. Такие таблицы существуют в базе данных до тех пор, пока они не будут
удалены. Перед созданием таблицы нам необходимо определить состав полей и их тип данных.
Поддерживаемые типы данных один из самых важных аспектов любой СУБД. Тип данных определяет,
какой тип информации может быть сохранен в столбце. При создании таблицы нам необходимо
назначить свой тип данных на каждый столбец. Типы данных определяют значения данных, которые
будут храниться в каждом столбце. Например, если необходимо включить в таблицу столбец для
хранения фамилий, то мы должны назначить символьный тип данных для него.
5
MS SQL Server поддерживает следующие типы данных:
Назначение
Тип данных
Описание
Целочисленные данные
bit
Может хранить только значения 0, 1 или null
(пустое значение, сообщающее об отсутствии
данных). Его удобно использовать в качестве
индикатора состояния – включено/выключено,
да/нет, истина/ложь.
tinyint
Целые значения от 0 до 255
smallint
Диапазон значений от -215 (-32768) до 215
(3767).
int
Может содержать целочисленные данные от 231 (-2147483648) до 231 (21474833647)
bigint
Включает
в
себя
данные
от
-263
(9223372036854775808)
до
263
(9223372036854775807). Удобен для хранения
очень больших чисел, не помещающихся в
типе данных int
Текстовые данные
char
Содержит символьные не Unicode-данные
фиксированной длины до 8000 знаков.
varchar
Содержит символьные не Unicode-данные
переменной длины до 8000 знаков
nchar
Содержит данные Unicode фиксированной
длины до 4000 символов. Подобно всем типам
данных Unicode его удобно использовать для
хранения небольших фрагментов текста,
которые будут считываться разноязычными
клиентами
nvarchar
Содержит данные Unicode переменной длины
до 4000 символов
Десятичные данные
decimal
Содержит числа с фиксированной точностью
от -1038-1 до 1038-1. Он использует два
параметра: точность и степень. Точностью
называется общее количество знаков,
хранящееся в поле, а степень – это количество
знаков справа от десятичной запятой.
numeric
Это синоним типа данных decimal – они
идентичны.
Денежные типы данных
money
Содержит денежные значения от -263 до 263 с
десятичной точностью от денежной единицы.
Удобен для хранения денежных сумм,
превышающих 214768,3647
smallmoney
Содержит значения от -214748,3648 до
214748,3647 с десятичной точностью
Данные с плавающей точкой
float
Содержит числа с плавающей запятой от 1,79Е+38 до 1,79Е+38.
real
Содержит числа с плавающей запятой от 3,40Е+38 до 3,40Е+38.
Типы данных даты и времени
datetime
Содержит дату и время в диапазоне от 1
января 1753 года до 31 декабря 9999 года с
точностью 3,33 мс.
smalldatetime
Содержит дату и время, начиная от 1 января
1900 года и заканчивая 6 июнем 2079, с
точностью до 1 минуты
6
Таким образом, любое поле таблицы характеризуется как минимум тремя обязательными свойствами:
 Имя столбца. Реализует способ обращения к конкретному полю в таблице. Рекомендуется всегда
присваивать полям смысловые имена.
 Тип данных. Определяет, информация какого типа может храниться в данном поле.
 Разрешить значения null. Определяет, допустимо ли для данного поля отсутствие фактических
данных, для обозначения которого используется так называемый маркер пустого значения null.
Создадим в базе данных таблицу PERSONAL (для хранения информации о сотрудниках фирмы) и
таблицу DEPATMENT (для хранения сведений о подразделениях фирмы). Ниже представлены поля
этих таблиц и их основные свойства.
Имя
столбца
Тип данных
Num
int
LName
FName
SName
BDay
Post
Adres
Phone
Marital
Child
Dep_code
nvarchar(35)
nvarchar(35)
nvarchar(35)
smalldatetime
nvarchar(50)
nvarchar(200)
nvarchar(20)
nvarchar(20)
bit
int
Id
Name
Room
int
nvarchar(50)
nvarchar(5)
Разрешить
Описание
null
Таблица PERSONAL
Табельный номер. Уникальный идентификационный
нет
номер клиента, на который можно ссылаться в других
таблицах
нет
Фамилия сотрудника
нет
Имя сотрудника
нет
Отчество сотрудника
да
День рождения
да
Должность
да
Адрес
да
Телефонный номер сотрудника
да
Семейное положение
да
Наличие детей
нет
Внешний ключ на таблицу DEPATMENT
Таблица DEPATMENT
нет
Уникальный идентификационный номер отдела
нет
Наименование отдела
да
Номер комнаты отдела в офисе
Значение «Нет» в столбце «Разрешить null» говорит о том, что значение этого поля должно быть
обязательно заполнено у каждой записи данной таблицы.
Сначала создадим таблицу PERSONAL:
1. В дереве обозревателя объектов в базе данных PERSONAL в контекстном меню узла «Таблицы»
выберите команду «Таблица…». В рабочей области должна появиться вкладка с конструктором
таблиц.
2. В первую строку в столбце «Имя столбца» введите Num, в столбце «Тип данных» выберите int.
Убедитесь, что параметр «Разрешить значения null» отключен.
3. Аналогичным образом введите описания всех остальных полей. В окне «Свойства» введите в
качестве имени таблицы: PERSONAL. Сохраните изменения и закройте окно конструктора
таблиц. Вновь созданная таблица должна появиться в дереве обозревателя объектов в папке
«Таблицы».
7
Если позже вам потребуется отредактировать структуру таблицы, щелкните правой клавишей мыши на
имени таблицы в обозревателе объектов для вызова контекстного меню. В меню выберите команду
«Проект» - откроется окно редактирования полей таблицы.
8
Первичный ключ используется для обеспечения гарантии уникальности каждой записи в таблице. Он
состоит из одного (простой ключ) или нескольких (составной ключ) столбцов с гарантированно
уникальными значениями для каждой записи таблицы. Если пользователь попытается ввести в поля
первичного ключа дублирующее значение будет сгенерирована ошибка и модификация данных будет
отменена.
В качестве примера создадим первичный ключ для таблицы Personal. В данном роль первичного ключа
выполняет столбец Num – табельный номер сотрудника. Следует отметить, что в качестве первичного
ключа могут быть взяты различные разновидности, так называемых, суррогатных ключей. Суррогатный
ключ — это дополнительное служебное поле, добавленное к уже имеющимся информационным полям
таблицы, единственное предназначение которого — служить первичным ключом. Суррогатный ключ
обеспечивает большую степень сущностной целостности (поскольку реальные атрибуты могут все же
со временем измениться).
Для создания первичного ключа в таблице Personal выполните следующие шаги:
1. В контекстном меню таблицы Personal выберите команду «Проект».
2. В окне конструктора таблиц щелкните правой кнопкой мыши на поле Num и выберите команду
«Задать первичный ключ» или нажмите кнопку
на панели инструментов. Обратите
внимание на то, что слева от поля Num теперь отображается значок ключа, указывающий, что
поле является первичным ключом.
9
3. Закройте конструктор таблиц с сохранением изменений
4. Аналогичным образом создайте первичный ключ для таблицы Department.
Свяжем обе наши таблицы Department и Personal отношением один ко многим (в одном отделе работает
несколько сотрудников; один сотрудник работает только в одном отделе). Для этого в таблице Personal
мы добавили служебное поле (внешний ключ) Dep_code, которое в точности соответствует первичному
ключу таблицы Department по типу и размеру. Необходимо обеспечить целостность ссылок. Суть
обеспечения целостности ссылок очевидна из названия: данные в одной таблице, ссылающиеся на
данные из другой таблицы, защищены от некорректного обновления. В терминологии SQL Server это
называется декларативной ссылочной целостностью и достигается путем связывания первичного ключа
одной из таблиц с внешним ключом другой таблицы (создается так называемое ограничение внешнего
ключа).
Для создания описанного ограничения внешнего ключа в Management Studio выполните следующие
шаги:
10
1. В контекстном меню папки «Ключи» таблицы Personal выберите команду «Создать внешний
ключ…».
2. В открывшемся окне «Отношения внешнего ключа» заполните следующие поля:
 (Имя): FK_PERSONAL_DEPART
 Спецификация таблиц и столбцов: для заполнения данного блока щелкните на кнопке с
многоточием и в появившемся окне «Таблицы и столбцы». В качестве таблицы первичного
ключа выберите Department, а поля первичного ключа - Id. Для таблицы Personal укажите
поле внешнего ключа – Dep_code.
11
3. Закройте все открывшиеся окна с сохранением изменений.
4. В итоге, у вас должны появиться в базе данных следующие ключи:
Создание диаграмм баз данных
Диаграммы базы данных представляют собой графическое отображение схемы (целиком или частично)
базы данных с таблицами и столбцами, а также связей между ними. Создадим диаграмму базы данных:
1. В контекстном меню папки «Диаграммы базы данных» выберите команду «Создать диаграмму
базы данных».
12
2. В диалоговом окне «Добавление таблиц» выберите все таблицы и нажмите на кнопку
«Добавить».
3. Добавив таблицы, щелкните на кнопке «Закрыть» и вы увидите созданную диаграмму базы
данных.
13
Используя диаграмму базы данных, ограничения внешнего ключа можно создавать значительно
быстрее: лишь перетаскивая поля из одной таблицы в другую.
Добавление данных в таблицы базы данных
В контекстном меню таблицы выберите команду «Изменить первые 200 строк» и на появившейся в
рабочей области вкладке введите новые записи, заполняя все необходимые столбцы.
В процессе внесения данных проверьте работоспособность всех созданных ранее ограничений:


Ограничений первичного ключа: попробуйте ввести в таблицы записи с дублирующими
значениями первичного ключа.
Ограничений внешнего ключа: попробуйте ввести несогласованные данные в связанные
таблицы, например, ввести для сотрудника несуществующий код подразделения или удалить
запись из таблицы Department, при наличии связанных записей в подчиненной таблице Personal.
Создание (перенос) БД с помощью DDL скрипта
Data Definition Language (DDL) - язык описания данных. На текущий момент наиболее популярным
языком DDL является SQL, используемый для получения и манипулирования данными в реляционных
СУБД. Функции языков DDL определяются первым словом в предложении (часто называемом
запросом), которое почти всегда является глаголом. В случае с SQL это глаголы — «create» («создать»),
14
«alter» («изменить»), «drop» («удалить»). Эти запросы или команды часто смешиваются с другими
командами SQL, в связи с чем DDL не является отдельным компьютерным языком.
Довольно часто возникает потребность генерации скриптов для создания или удаления различных
объектов БД MS SQL Server. Например, для создания идентичной по структуре базы данных на другом
сервере или для сохранения БД перед внесением каких-либо серьезных изменений. В SQL Server
Management Studio есть мощный встроенный механизм генерации скриптов. Для этого достаточно
щелкнуть правой клавишей мыши на нужной базе данных и выбрать пункт «Задачи / Сформировать
скрипты…» для запуска мастера генерации скриптов.
Первую страницу мастера можно пропустить, т.к. она является информационной и лишь кратко
описывает процесс, через который предстоит пройти. Вы также можете выбрать опцию не показывать
больше эту страницу в дальнейшем.
15
Следующим этапом будет выбор объектов, для которых мы хотим сгенерировать скрипты. Можно
оставить опцию по умолчанию, чтобы сгенерировать скрипты для всех объектов в базе данных, либо
выбрать только нужные.
16
На следующей странице находится, пожалуй, самое важное – опции генерации скриптов. От них
зависит, что в итоге будет сгенерировано для указанных нами раньше объектов. Мы не будем
рассматривать возможность публикации сгенерированных скриптов на веб сервис, а ограничимся
только сохранением их локальной копии.
17
Здесь мы можем выбрать путь, куда будет выложен один большой скрипт для всего, либо для каждого
отдельного объекта. Также формат файла: Unicode или ANSI. Для сгенерированного скрипта есть
возможность не сохранять его в файл, а либо скопировать в буфер обмена, либо открыть его сразу в
новом окне редактора запросов. Выбрав кнопку «Дополнительно» можно настроить дополнительные
опции генерации скрипта, в том числе возможность выгрузки данных из таблиц.
Завершив работу мастера получим файл со следующим DDL скриптом:
USE [PERSONAL]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[DEPARTMENT](
[Id] [int] NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Room] [nvarchar](5) NULL,
18
CONSTRAINT [PK_DEPARTMENT] PRIMARY KEY CLUSTERED
([Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY =
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PERSONAL](
[Num] [int] NOT NULL,
[LName] [nvarchar](35) NOT NULL,
[FName] [nvarchar](35) NOT NULL,
[SName] [nvarchar](35) NOT NULL,
[BDay] [smalldatetime] NULL,
[Post] [nvarchar](50) NULL,
[Adres] [nvarchar](200) NULL,
[Phone] [nvarchar](20) NULL,
[Marital] [nvarchar](20) NULL,
[Child] [bit] NULL,
[Dep_code] [int] NOT NULL,
CONSTRAINT [PK_PERSONAL] PRIMARY KEY CLUSTERED
([Num] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY =
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PERSONAL] WITH CHECK ADD
[FK_PERSONAL_DEPART] FOREIGN KEY([Dep_code])
REFERENCES [dbo].[DEPARTMENT] ([Id])
GO
CONSTRAINT
ALTER TABLE [dbo].[PERSONAL] CHECK CONSTRAINT [FK_PERSONAL_DEPART]
GO
Для создания БД с помощью DDL-скрипта необходимо выбрать пункт меню «Файл / Создать / Запрос в
текущем соединении». В рабочей области менеджера появиться пустое окно запроса, в которое можно
скопировать DDL-скрипт создания БД. Перед выполнением скрипта необходимо создать БД или в
начало скрипта добавить SQL-оператор (CREATE DATABASE <имя БД>). Для выполнения скрипта
следует выбрать пункт меню «Запрос / Выполнить». При успешном создании таблиц БД, они появятся в
обозревателе объектов БД.
Пояснения по созданному скрипту.
19
В скрипте для создания таблиц БД используется команда SQL:
CREATE TABLE <Имя таблицы>(
<Имя столбца1> <Тип данных>,
<Имя столбца2> <Тип данных>,
…)
Подстрока «NOT NULL» говорит о том, что значение этого поля должно быть обязательно заполнено у
каждой записи данной таблицы.
Для изменения таблиц БД используется команда ALTER TABLE. Она используется для изменения
структуры таблицы: добавления, изменения или удаления столбцов или ограничений. При
необходимости один оператор может выполнять несколько изменений.
Пример. Для добавления первичного ключа в таблице PERSONAL необходимо выполнить команду:
ALTER TABLE [dbo].[PERSONAL] WITH CHECK ADD CONSTRAINT [PK_PERSONAL]
PRIMARY KEY CLUSTERED ([Num] ASC)
Для удаления таблицы и ее данных из базы данных используется команда DROP TABLE. Это удаление
не может быть отменено. Синтаксис команды DROP TABLE:
DROP TABLE <имя таблицы>
Директива GO — информирует SQL Server о завершении команды (пакета команд) и отправляет ее на
выполнение.
20
Задание на самостоятельную работу:
Необходимо спроектировать и разработать в СУБД MS SQL Server базу данных для хранения
информации об объектах предметной области согласно выданному преподавателем варианту задания.
База данных должна содержать ОДНУ основную таблицу и ТРИ вспомогательные (справочники).
Основная таблица необходима для хранения сведений об объектах предметной области.
Вспомогательные таблицы служат для определения некоторых характеристик хранимых объектов.
По аналогии с рассмотренным примером в лабораторной работе: таблица сотрудников (Personal) –
основная, а таблица подразделений организации (Department) – справочник, необходимый для
определения соответствующего отдела, где работает сотрудник. Еще двумя справочниками, для нашего
примера, могут быть следующие таблицы: Должность (содержит перечень должностей сотрудников
организации – в этом случае, поле Post должно стать внешним ключом) и Образование (содержит
перечень уровней подготовки сотрудников – высшее, среднее профессиональное, среднее общее и т.п.).
Таким образом, схема данных должна иметь следующий вид:
M
M
Основная таблица
M
Таблицасправочник №1
Таблицасправочник №3
1
1
1
Таблицасправочник №2
База данных должна удовлетворять 1, 2 и 3 нормальным формам.
Требования к результатам работы:
1. Основная таблица должна содержать не менее 8 полей (не считая ключевых).
2. В основной таблице должно быть хотя бы одно поле следующих типов данных: bit, числовое,
текстовое, дата/время.
3. Рекомендация - в основной таблице не должно быть полей денежного типа данных.
4. Таблицы - справочники могут иметь произвольное количество полей.
5. Добавить данные в созданные таблицы. В основную таблицу должно быть добавлено не менее 20
записей. Данные должны отражать характер связей между таблицами БД.
6. Создать диаграмму БД. Диаграмма должна отображать все созданные таблицы БД и связи между
ними.
7. Сгенерировать DDL cкрипт для создания схемы БД по своей предметной области.
Результаты работы для демонстрации преподавателю
1. В SQL Server Management Studio продемонстрировать диаграмму созданной БД.
2. Продемонстрировать созданные таблица БД с введенными данными.
3. Продемонстрировать созданный DDL cкрипт для создания схемы БД по своей предметной
области.
21
Download