РАБОТА С ТАБЛИЦАМИ В MS SQL SERVER

Save this PDF as:
 WORD  PNG  TXT  JPG

Размер: px
Начинать показ со страницы:

Download "РАБОТА С ТАБЛИЦАМИ В MS SQL SERVER"

Транскрипт

1 РАБОТА С ТАБЛИЦАМИ В MS SQL SERVER Методические указания к выполнению практической работы по курсу «Современные технологии управления базами данных» для студентов направления очной, заочной и заочно-сокращенной форм обучения

2 Цель работы: научиться создавать и изменять таблицы в Microsoft SQL Server 2005 ОСНОВНЫЕ ПОНЯТИЯ: 1. Компоненты и инструментальные средства Microsoft SQL Server 2005 Компоненты SQL Server 2005 Relational Database Engine это ядро SQL Server, использующее.net. Analysis Services службы для анализа данных, поддерживают OLAP. SQL Server Integration Services (SSIS) средства для создания решений импорта и экспорта данных и выполнения трансформирования данных при передаче. Notifiations Services службы оповещения. Reporting Services службы для создания и публикации отчетов. Service Broker механизм, основанный на очереди, для связывания различных служб приложений. Native HTTP Support встроенная поддержка HTTP. Позволяет отвечать на запросы HTTP без IIS. SQL Server Agent автоматизирует обслуживание БД и управляет задачами, событиями и оповещениями.

3 Replication ряд средств для копирования и распространения данных и объектов БД из одной БД в другую и синхронизации между БД для поддержания соответствия. Full-Text Search средство эффективного поиска в БД. Центральным средством администрирования является SQL Server Management Studio, которое позволяет управлять серверами БД, Analysis Services и серверами Reporting Services. 2. Общие сведения о среде SQL Server Management Studio SQL Server Management Studio предоставляет графические интерфейсы для интерактивной разработки и отладки команд языка Transact-SQL, пакетов команд и скриптов, а также набор средств по администрированию баз данных. SQL Server Management Studio предоставляет следующие средства для разработки команд языка Transact-SQL: текстовый редактор для ввода команд Transact SQL цветовую подсветку операторов Transact-SQL для облегчения процесса чтения сложных выражений представление результатов как в виде таблицы, так и в виде простого текста графические диаграммы, показывающие логическую последовательность действий, в которую выливается исполнение команды Transact-SQL. Это позволяет программистам определять, какие участки SQL-выражений требуют больших затрат машинных ресурсов, и оптимизировать свой код. визард для настройки индексов, который позволяет понять, может ли дополнительное число индексов улучшить производительность системы SQL Server Management Studio предоставляет интерактивное, графическое средство, которое позволяет администраторам баз данных или разработчикам создавать SQL-запросы, выполнять несколько запросов одновременно, анализировать результаты запросов и пользоваться средствами, помогающими улучшить производительность системы. В дополнение к этому SQL Server

4 Management Studio делает предложения по введению дополнительных индексов, способных повлиять на производительность. Экземпляр Microsoft SQL Server включает в себя системные базы данных (master.model, msdb, tempdb), содержащие служебную информацию, назначение которых приведено в табл 1 и пользовательские базы данных. Табл 1 Системные базы данных Каждая пользовательская база данных размещается в отдельных файлах минимум двух: один для самой базы данных файл данных (mdf-файл), и один для журнала транзакций (ldf-файл). Первый файл данных (mdf-файл) является основным и кроме самих данных содержит системную информацию, второй и все последующие файлы данных являются вторичными (ndf-файлами) и содержат непосредственно сами данные. Расположение этих файлов можно указать при создании базы данных. Все системные и пользовательские базы данных содержат в обязательном порядке 18 системных таблиц, которые хранят информацию, определяющие структуру и организацию соответствующей базы данных.

5 Основной единицей хранения данных является страница. SQL Server выполняет чтение и запись данных постранично. Вся база данных логически подразделена на страницы, нумеруемые начиная с 0. Размер страницы составляет 8 Кбайт (128 страниц на один мегабайт). Объекты базы данных Логически данные в базе данных хранятся в виде объектов базы данных. Объекты данных хранятся в схеме базы данных. SQL Server предоставляет следующие объекты данных: таблицы; представления; синонимы; индексы; хранимые процедуры; триггеры; пользовательские типы данных; функции пользователя; ключи, обеспечивающие ссылочную целостность; ограничения целостности; умолчания правила (используются для обратной совместимости) К объектам базы данных также относятся схемы, пользователи и роли. В SQL Server 2005введены новые объекты, используемые Service Broker: типы сообщений (структура сообщения, отправляемого от одного сервиса другому), контракты (соглашения между двумя сервисами), очереди (сообщения, направленные сервису), сервисы (наборы задач, где каждая задача представляется контрактом), сервисные программы. 3. Запуск SQL Server Management Studio

6 Для запуска прикладного окна Запуск SQL Server Management Studio в среде Windows нужно выбрать: Пуск > Программы > Microsoft SQL Server > SQL Server Management Studio. На экране открывается фрейм приложения SQL Server Management Studio с формой подключения к серверу баз данных, показанный на рис.1. Рис.1. Начальное окно SQL Server Management Studio Для продолжения работы следует ввести в поле Server name имя сервера баз данных, с которым осуществляется соединения: SQL2005, выбрать тип аутентификации Windows Authentication и нажать кнопку соединить После этого появится рабочее окно SQL Server Management Studio, показанное на рис.2.

7 Рис.2. Окно SQL Server Management Studio после подключения к серверу баз данных В левой части окна расположен обозреватель объектов - древовидный навигатор по ресурсам сервера баз данных, с помощью которого можно просматривать состав объектов (таблицы, хранимые процедуры, индексы) баз данных сервера. Изменение таблиц Большинство параметров, которые были указаны при первоначальном создании таблицы, можно изменить. Можно выполнить следующие действия: Можно добавить, изменить или удалить столбцы. У столбца можно изменить имя, длину, тип данных, точность, масштаб и возможность принимать значения NULL, хотя существуют некоторые ограничения. можно добавить или удалить ограничения PRIMARY KEY, FOREIGN KEY, UNIQUE и CHECK, определение DEFAULT. Ограничения

8 1) NOT NULL - данный ограничитель не позволяет принимать значения NULL. NOT NULL данный ограничитель гарантирует, что всегда будет какое либо значение. Это означает, что вы не можете вставить новую запись или изменить запись без добавления значения к этой области. Null-значение(null value) это неизвестное значение, для которого применяется обозначение NULL. Null-значение в колонке обычно означает, что для данной строки этой колонки нет данных, потому что значение неизвестно, либо не имеет смысла, либо не задано или будет задано в будущем. Null-значения это не пустые значения и не значения числа 0, их настоящие значения неизвестны (unknown), поэтому никакие два null-значения не являются равными. 2) Свойство IDENTITY задает одну из колонок как идентифицирующую колонку (identity column), добавив к определению колонки. Если колонка создается со свойством IDENTITY, то SQL Server автоматически генерирует для этой колонки значение строки, рассчитываемое по начальному значению (seed value) и значению приращения (increment value). Начальное значение (seed) является значением идентификации для первой строки, вставленной в таблицу. Приращение (increment) это величина, на которую SQL Server увеличивает значение идентификации для последовательно вводимых строк. Каждый раз при вводе строки SQL Server присваивает текущее значение идентификации элементу данных в колонке идентификации, вводимому в новую строку. Следующая введенная строка получит значение идентификации, большее, чем текущее максимальное значение идентификации на величину приращения. Таким образом, каждая вводимая строка получит уникальное значение идентификации. Свойство идентификации полезно для создания колонок, в которых каждая строка должна иметь уникальный идентификатор, например, для колонки Product_ID. Если вы разрешите SQL Server генерировать идентифицирующие значения для вводимых строк, то это окажется проще, чем следить за правильностью ввода последовательных значений. Идентифицирующие колонки обычно

9 применяются в ограничениях первичного ключа в таблицах, благодаря которым возможна уникальная идентификация строк. Например, если вы зададите IDENTITY(0, 10), то значение идентифицирующей колонки для первой введенной строки будет равно 0, для второй строки будет равно 10, для третьей строки 20, и т.д. Если начальное значение или приращение не задать, то для них будут применяться значения по умолчанию, равные 1 и 1. Вы можете задать как оба этих параметра, так и один из них. Идентифицирующие колонки не могут содержать значения по умолчанию и для них не разрешено применение null-значений. В каждой из таблиц может иметься только одна идентифицирующая колонка. По умолчанию, непосредственный ввод данных в идентифицирующие колонки невозможен и они не могут быть изменены. Если вы хотите повторить ввод удаленной строки и хотите сохранить старое идентифицирующее значение этой строки, то вы можете преодолеть стандартные настройки, применив такой оператор: SET IDENTITY_INSERT имя_таблицы ON При помощи этого оператора можно вставить строку и назначить нужное вам значение идентифицирующей колонки. Закончив ввод строки, нужно отменить возможность вставки в идентифицирующую колонку при помощи такого оператора: SET IDENTITY_INSERT имя_таблицы OFF После этого, SQL Server, в качестве начального значения, применяемого при добавлении следующих строк, возьмет самое большое значение из данной колонки. 3) Свойство UNIQUE уникальность, столбец не может содержать повторяющихся значений. 4) Ограничение PRIMARY KEY первичный ключ. Столбцы ограничения PRIMARY KEY, указанного при создании таблицы, неявно преобразуются в

10 NOT NULL. В них также не должно быть повторяющихся значений. У таблицы может быть только одно ограничение PRIMARY KEY. 5) Ограничение FOREIGN KEY внешний ключ. Необходимо для установления связи между таблицами. Таблица может содержать несколько ограничений FOREIGN KEY. 6) Ограничение CHECK служит для проверки введенного условия. Оно позволяет задать для определённой колонки выражение, которое будет осуществлять проверку, помещаемого в эту колонку значения. Если значение удовлетворяет, заданному ограничению, то выражение должно возвращать Логическое значение (истина). Например, если требуется, чтобы в колонке были только положительные цены товаров, вы можете использовать: CHECK (price > 0) Ограничение check состоит из ключевого слова CHECK, за которым следует выражение в круглых скобках. Выражение в ограничении check должно использовать ту колонку, на которую оно накладывается, в противном случае это ограничение не будет иметь смысла. 7) DEFAULT позволяет задать значение по умолчанию. Если при создании новой строки в таблице, значения для некоторых колонок не будут указаны, то эти колонки могут быть заполнены заданными для них значениями по умолчанию. Изменяет определение таблицы путем изменения, добавления или удаления столбцов и ограничений команда ALTER TABLE. 1) Добавление столбцов в таблицу: ALTER TABLE <имя таблицы> ADD <имя столбца> <тип данных> 2) Изменение типа данных ALTER TABLE <имя таблицы> ALTER COLUMN <имя столбца> <новый тип данных> 3) Удаление столбца ALTER TABLE <имя таблицы> DROP COLUMN <имя столбца> 4) Добавление ограничений

11 ALTER TABLE <имя таблицы> ADD CONSTRAINT <имя ограничения> <тип ограничения> <имя столбца> Примеры: ALTER TABLE products ADD CHECK (name <> ''); ALTER TABLE products ADD CONSTRAINT some_name UNIQUE (product_no); Примечание. Чтобы добавить ограничение not null, которое нельзя записать как ограничение на таблицу, используйте синтаксис: ALTER TABLE products ALTER COLUMN product_no SET NOT NULL 5) Удаление ограничения ALTER TABLE <имя таблицы> DROP CONSTRAINT <имя ограничения> Создание внешнего ключа с помощью запросов ALTER TABLE <имя таблицы> ADD CONSTRAINT <имя ограничения> FOREIGN KEY (<имя столбца подчиненной таблицы>) REFERENCES <имя главной таблицы> (<имя столбца главной таблицы>) Пример. ALTER TABLE Stud ADD CONSTRAINT df FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) ТЕХНОЛОГИЯ ВЫПОЛНЕНИЯ РАБОТЫ Создание новой базы данных 1 способ Для создания новой базы данных нужно выбрать пункт Создать базу данных во всплывающем меню типа объектов базы данных (рис 3).

12 Рис 3 Создание новой базы данных Открывается окно создания новой базы данных, где вводится имя базы данных, владелец и определяются файлы базы данных (рис 4) 2 способ Рис 4 Окно создания новой базы данных

13 Создаем новый запрос (рис 5) Рис 5 Создание нового запроса 1)Простейший запрос на создание базы данных Синтаксис: create database <имя базы данных>; Пример: create database student; Выполнив запрос, убедимся, что база данных успешно создана (рис 6) Рис 6 2)Расширенный запрос на создание базы данных

14 Синтаксис: create database <имя базы данных> on ( name = <имя первичного файла БД>, filename = <размещение первичного файла БД>, size = <размер первичного файла БД>) logon ( name = <имя файла журнала транзакций>, filename = <размещение файла журнала транзакций>, size = <размер файла журнала транзакций>) Пример: create database student on ( name = student, filename = C:\Program Files\ Microsoft SQL Server\MSSQL.1\MSSQL\DATA\student.mdf, size = 20 MB) logon ( name = student_log, filename = C:\Program Files\ Microsoft SQL Server\MSSQL.1\MSSQL\DATA\student_log.ldf, size = 5 MB); Выполнив запрос, убедимся, что база данных успешно создана. Создание таблиц 1 способ Для создания новой таблицы нужно выбрать пункт Создание новой таблицы во всплывающем меню типа объектов Таблицы. Окно сменяется страницей, на которой создаются основные определения столбцов таблицы:

15 вводится имя столбца (колонка Column name), выбирается тип и размер данных в столбце (колонка Data Type задается ограничение целостности NOT NULL столбцов (колонка Allow Nulls). В полях в нижней части страницы можно так же задать описание столбца (поле Description) и значение по умолчанию (поле Default Value). На рис.8 представлена страница определения состава столбцов таблицы. Рис.8. Страница определения состава столбцов таблицы При выделении в списке в верхней части страницы какого-нибудь столбца и нажатии правой кнопки мыши появляется контекстное меню, которое позволяет определять дополнительные свойства столбцов и таблиц. С помощью пункта Set Primary Key этого меню определяется (при необходимости) первичный ключ таблицы, а с помощью пункта Relstionships... определяются (при необходимости) ограничения внешних ключей. При попытке выхода с данной страницы (или при нажатии File > Save) появляется диалоговое окно подтверждения сохранения таблицы. При утвердительном ответе появляется поле, в котором предлагается ввести имя создаваемой таблицы, после ввода которого таблица сохраняется и становится доступной в списке таблиц базы данных в правой части фрейма SQL Server Management Studio.

16 2 способ Запрос на создание таблицы Create table <имя таблицы> (<имя поля 1> <тип данных> <ограничения>, (<имя поля n> <тип данных><ограничения>) Пример Create table students (id int primary key, stname varchar (10) not null, stfam varchar (10) not null) Выполнив запрос, убедимся в создании таблицы. Используемые типы данных В таблицах тип данных столбца может быть системным, т.е. встроенным в сервер или определен самим пользователем на основе системных. Числовые типы данных целочисленные Bit Принимает значения 0,1, NULL, применяется для хранения логических переменных Tinyint целый тип длиной в 1 байт и диапазоном от 0 до 255 Smallint Хранит целые числа от до Int Хранит целые числа от до Bigint Хранит целые числа от до десятичные Decimal [(p[,s])] десятичный двоично-кодированный тип с p десятичными разрядами, из которых s дробных; максимальное значение p достигает 38 Numeric [(p[,s])] С плавающей точкой Float [n] плавающий (приблизительный) тип длиной в 4 байта и с диапазоном от 1.79x до 1.79x ; значение n определяет количество бит для хранения мантисы и может принимать значения от 1 до 53. real плавающий тип, являющийся аналогом float(240) Дата/время

17 Datetime Smalldatetime Date тип данных для хранения даты (4 первых байта) и времени (4 последних байта) в диапазоне от и до года; дата хранится в виде смещения относительно базовой даты , а время является количеством миллисекунд после полуночи. тип данных для хранения даты (первых 2 байта) и времени (последние 2 байта) в диапазоне от г. до г., время задается с точностью до минуты. Хранит только дату Денежные Money Smallmoney тип данных для хранения больших денежных величин с точностью до 4 знаков после запятой в диапазоне от до ; для хранения данных отводится 8 байт тип данных для хранения нормальных денежных величин с точностью до 4 знаков после запятой в диапазоне от до ; для хранения данных отводится 4 байта. Текстовые Char (n) Varchar (n) Не поддерживающие UNICODЕ строковый тип данных фиксированной длины без поддержки Unicode длиной до 8000 байтов строковый тип, как и char(n),но с переменной длиной Nchar (n) Nvarchar (n) поддерживающие UNICODЕ строковый тип как и char(n), но с поддержкой Unicode, поэтому максимальное количество символов составляет 4000 строковый тип, как varchar(n), но с поддержкой Unicode Двоичные

18 binary(n) двоичные данные фиксированной длины до 8000 байт varbinary(n) двоичные данные переменной длины до 8000 байт image двоичные данные длиной до ; место выделяется в виде цепочки страниц Удаление базы данных 1способ выбрать команду удалить для данной базы данных 2способ запрос на удаление базы данных Drop database <имя базы данных> Пример: Drop database student 1. Создайте базу данных, позволяющую вести учет сотрудников, работающих на предприятии, а также хранить все выданные заработные платы с их расшифровкой по доходным и расходным статьям (например, оклад, подоходный налог и т.д.).

19

20 1. Добавьте в таблицу Staff столбец Adress, отображающий адрес сотрудника. Для этого выполните запрос: ALTER TABLE Staff ADD Adress char (20) not null; Проверьте правильность выполнения запроса. 2. Измените в таблице Pay тип данных для столбца Sum_pay с Numeric на Int. Для этого выполните запрос: ALTER TABLE Pay ALTER COLUMN Sum_pay int; Проверьте правильность выполнения запроса. 3. Удалите из таблицы Staff столбец Adress. Для этого выполните запрос: ALTER TABLE Staff DROP COLUMN Adress; Проверьте правильность выполнения запроса. 4. Добавьте в таблицу Pay ограничение Unique на столбец Сode_pay ALTER TABLE Pay ADD CONSTRAINT с_2 UNIQUE (Сode_pay); 5. Добавьте в каждую из таблиц ограничения первичный ключ. ALTER TABLE Staff ADD CONSTRAINT с_1 PRIMARY KEY (T_number); Аналогично создай те первичные ключи для остальных таблиц. 6. Зададим значения по умолчанию в таблице Staff в столбце Type_post - Служащий, в столбце Date_input - текущая дата. ALTER TABLE Staff ADD CONSTRAINT с_3 DEFAULT 'Служащий ' FOR Type_post ; ALTER TABLE Staff ADD CONSTRAINT с_5 DEFAULT Getdate() FOR Date_input ;

21 7. Аналогично задайте значения по умолчанию в таблице Pay в столбце Pay_day - текущая дата, в таблице Items_pay в столбце Item_pay Оклад. 8. Создайте внешние ключи в соответствии с рис. 1 ALTER TABLE Pay ADD CONSTRAINT с_4 FOREIGN KEY (T_number) REFERENCES Staff(T_number); ALTER TABLE Items_pay ADD CONSTRAINT с_5 FOREIGN KEY (Code_pay) REFERENCES Pay(Code_pay); Индивидуальные задания Создать базы данных в соответствии с вариантом. После создания таблиц: 1) Добавить и удалить столбцы 2) Добавить ограничения 3) Создать первичные и внешние ключи

22

23

24

25

26