РАБОТА С ТАБЛИЦАМИ В MS SQL SERVER Методические

advertisement
РАБОТА С ТАБЛИЦАМИ В MS SQL SERVER
Методические указания к выполнению лабораторной работы
по курсу «Технология построения распределенных информационных систем»
для студентов специальности
230201.65 очной формы обучения
Цель работы: научиться создавать и изменять таблицы в 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 – автоматизирует
задачами, событиями и оповещениями.
обслуживание
БД
и
управляет
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
Management Studio делает предложения по введению дополнительных
индексов, способных повлиять на производительность.
Экземпляр Microsoft SQL Server включает в себя системные базы данных
(master.model, msdb, tempdb), содержащие служебную информацию, назначение
которых приведено в табл 1 и пользовательские базы данных.
Табл 1 Системные базы данных
Каждая пользовательская база данных размещается в отдельных файлах –
минимум двух: один для самой базы данных – файл данных (mdf-файл), и один
для журнала транзакций (ldf-файл). Первый файл данных (mdf-файл) является
основным и кроме самих данных содержит системную информацию, второй и
все последующие файлы данных
являются вторичными (ndf-файлами) и
содержат непосредственно сами данные. Расположение этих файлов можно
указать при создании базы данных.
Все
системные
и
пользовательские
базы
данных
содержат
в
обязательном порядке 18 системных таблиц, которые хранят информацию,
определяющие структуру и организацию соответствующей базы данных.
Основной единицей хранения данных является страница. SQL Server
выполняет чтение и запись данных постранично. Вся база данных логически
подразделена на страницы, нумеруемые начиная с 0. Размер страницы
составляет 8 Кбайт (128 страниц на один мегабайт).
Объекты базы данных
Логически данные в базе данных хранятся в виде объектов базы данных.
Объекты данных хранятся в схеме базы данных.
SQL Server предоставляет
следующие объекты данных:
 таблицы;
 представления;
 синонимы;
 индексы;
 хранимые процедуры;
 триггеры;
 пользовательские типы данных;
 функции пользователя;
 ключи, обеспечивающие ссылочную целостность;
 ограничения целостности;
 умолчания
 правила (используются для обратной совместимости)
К объектам базы данных также относятся схемы, пользователи и роли.
В SQL Server 2005введены новые объекты, используемые Service Broker:
 типы сообщений (структура сообщения, отправляемого от одного
сервиса другому),
 контракты (соглашения между двумя сервисами),
 очереди (сообщения, направленные сервису),
 сервисы
(наборы
задач,
где
каждая
контрактом), сервисные программы.
3. Запуск SQL Server Management Studio
задача
представляется
Для запуска прикладного окна Запуск 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.
Рис.2. Окно SQL Server Management Studio после подключения к серверу баз
данных
В левой части окна расположен обозреватель объектов - древовидный
навигатор по ресурсам сервера баз данных, с помощью которого можно
просматривать состав объектов (таблицы, хранимые процедуры, индексы) баз
данных сервера.
Изменение таблиц
Большинство параметров, которые были указаны при первоначальном
создании таблицы, можно изменить. Можно выполнить следующие действия:
 Можно добавить, изменить или удалить столбцы. У столбца можно
изменить имя, длину, тип данных, точность, масштаб и возможность
принимать значения NULL, хотя существуют некоторые ограничения.
 можно добавить или удалить ограничения PRIMARY KEY, FOREIGN
KEY, UNIQUE и CHECK, определение DEFAULT.
Ограничения
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 генерировать идентифицирующие значения
для вводимых строк, то это окажется проще, чем следить за правильностью
ввода последовательных значений. Идентифицирующие колонки обычно
применяются в ограничениях первичного ключа в таблицах, благодаря
которым возможна уникальная идентификация строк.
Например,
если
вы
зададите
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, указанного при создании таблицы, неявно преобразуются в
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) Добавление ограничений
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).
Рис 3 Создание новой базы данных
Открывается окно создания новой базы данных, где вводится имя базы данных,
владелец и определяются файлы базы данных (рис 4)
Рис 4 Окно создания новой базы данных
2 способ
Создаем новый запрос (рис 5)
Рис 5 Создание нового запроса
1)Простейший запрос на создание базы данных
Синтаксис: create database <имя базы данных>;
Пример: create database student;
Выполнив запрос, убедимся, что база данных успешно создана (рис 6)
Рис 6
2)Расширенный запрос на создание базы данных
Синтаксис:
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 способ
Для создания новой таблицы нужно выбрать пункт Создание новой
таблицы во всплывающем меню типа объектов Таблицы. Окно сменяется
страницей, на которой создаются основные определения столбцов таблицы:
вводится имя столбца (колонка Column name), выбирается тип и размер
данных в столбце (колонка Data Type задается ограничение целостности NOT
NULL столбцов (колонка Allow Nulls). В полях в нижней части страницы
можно так же задать описание столбца (поле Description) и значение по
умолчанию
(поле
Default
Value).
На
рис.8
представлена
страница
определения состава столбцов таблицы.
Рис.8. Страница определения состава столбцов таблицы
При выделении в списке в верхней части страницы какого-нибудь
столбца и нажатии правой кнопки мыши появляется контекстное меню,
которое позволяет определять дополнительные свойства столбцов и таблиц.
С помощью пункта Set Primary Key этого меню определяется (при
необходимости)
первичный
ключ
таблицы,
а
с
помощью
пункта
Relstionships... определяются (при необходимости) ограничения внешних
ключей.
При попытке выхода с данной страницы (или при нажатии File > Save)
появляется диалоговое окно подтверждения сохранения таблицы. При
утвердительном ответе появляется поле, в котором предлагается ввести имя
создаваемой таблицы, после ввода которого таблица сохраняется и
становится доступной в списке таблиц базы данных в правой части фрейма
SQL Server Management Studio.
2 способ
Запрос на создание таблицы
Create table <имя таблицы>
(<имя поля 1> <тип данных> <ограничения>,
…
(<имя поля n> <тип данных><ограничения>)
Пример
Create table students (id int primary key, stname varchar (10) not null, stfam varchar
(10) not null)
Выполнив запрос, убедимся в создании таблицы.
Используемые типы данных
В таблицах тип данных столбца может быть системным, т.е. встроенным в
сервер или определен самим пользователем на основе системных.
Числовые типы данных
Bit
Tinyint
Smallint
Int
Bigint
Decimal [(p[,s])]
целочисленные
Принимает значения 0,1, NULL, применяется для
хранения логических переменных
целый тип длиной в 1 байт и диапазоном от 0 до 255
Хранит целые числа от -32768 до 32767
Хранит целые числа от -231 до 231-1
Хранит целые числа от -263 до 263-1
десятичные
десятичный двоично-кодированный тип с p
десятичными разрядами, из которых s – дробных;
максимальное значение p достигает 38
Numeric [(p[,s])]
Float [n]
real
Дата/время
С плавающей точкой
плавающий (приблизительный) тип длиной в 4 байта и
с диапазоном от –1.79x10308 до 1.79x10308 ; значение
n определяет количество бит для хранения мантисы
и может принимать значения от 1 до 53.
плавающий тип, являющийся аналогом float(240)
Datetime
Smalldatetime
Date
тип данных для хранения даты (4 первых байта) и
времени (4 последних байта) в диапазоне от
1.1.1753 и до 31.12.9999 года; дата хранится в виде
смещения относительно базовой даты 1.1.1753, а
время является количеством миллисекунд после
полуночи.
тип данных для хранения даты (первых 2 байта) и
времени (последние 2 байта) в диапазоне от
1.1.1900г. до 6.6.2079г., время задается с точностью
до минуты.
Хранит только дату
Денежные
Money
Smallmoney
тип данных для хранения больших денежных
величин с точностью до 4 знаков после запятой в
диапазоне от –922 337 203 685 477.5808 до +922 337
203 685 477.5807; для хранения данных отводится 8
байт
тип данных для хранения нормальных денежных
величин с точностью до 4 знаков после запятой в
диапазоне от –214 748.3648 до 214 748.3647; для
хранения данных отводится 4 байта.
Текстовые
Char (n)
Varchar (n)
Nchar (n)
Nvarchar (n)
Двоичные
Не поддерживающие UNICODЕ
строковый тип данных фиксированной длины без
поддержки Unicode длиной до 8000 байтов
строковый тип, как и char(n),но с переменной
длиной
поддерживающие UNICODЕ
строковый тип как и char(n), но с поддержкой
Unicode, поэтому максимальное количество
символов составляет 4000
строковый тип, как varchar(n), но с поддержкой
Unicode
binary(n)
varbinary(n)
image
двоичные данные фиксированной длины до 8000
байт
двоичные данные переменной длины до 8000 байт
двоичные данные длиной до 231 – 1; место
выделяется в виде цепочки страниц
Удаление базы данных
1способ – выбрать команду удалить для данной базы данных
2способ – запрос на удаление базы данных
Drop database <имя базы данных>
Пример:
Drop database student
1. Создайте базу данных, позволяющую вести учет сотрудников,
работающих на предприятии, а также хранить все выданные
заработные платы с их расшифровкой по доходным и расходным
статьям (например, оклад, подоходный налог и т.д.).
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 ;
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) Создать первичные и внешние ключи
Download