3.2 Команды определения данных
Команды определения данных иногда выделяют как отдельный язык DDL (Data Definition Language). Эти команды дают возможность создавать объекты БД (таблицы и индексы), определять их структуру, устанавливать свойства полей и поддержки целостности данных по ссылкам.
Рассмотрим синтаксис команды создания таблицы.
CREATE TABLE <имя таблицы> (<эл_табл> [{,<эл_табл>}...])
<Эл_табл> ::= <определение поля>
| <определение ограничения на таблицу>
<Определение поля> ::=<имя поля> <тип данных>
[DEFAULT { <литерал> | NULL } ] раздел умолчания
[NOT NULL [UNIQUE | PRIMARY KEY] ограничение на поле
| [FOREIGN KEY(поле)
REFERENCES <ссылочные таблицы и поля>] спецификация ссылок
| [CHECK (<условии поиска>)] проверочное ограничение
Тип данных определяется реализацией. По стандарту имеем
<Тип данных> ::=CHAR[ACTER] [(<длина>)] , строки символов
| NUMERIC [(<точность> [,<масштаб>])] точный числовой тип
| DEC[IMAL] [(<точность> [,<масштаб>])]
| INT[EGER]
| SMALLINT
| FLOAT [(<точность>)] приближенный цифровой тип|
| REAL
| DOUBLE PRECISION
<Длина> ::= <целое без знака>, которое должно быть больше 0 ,
если длина пропущена, то она предполагается равной 1.
<Точность> ::= <целое без знака>, которое должно быть больше 0,
если точность пропущена, то значение определяется в реализации.
<Масштаб> ::= <целое без знака>, если он не указан, то предполагается 0.
Если раздел умолчания отсутствует или в нем не указано NOT NULL, то неявно вводится DEFAULT NULL. В качестве <литерала> используется или символьная строка, или число в зависимости от типа данных поля.
Рассмотрим ограничения для таблицы, которые фактически проверяются после выполнения каждого оператора SQL.
<Определение ограничения на таблицу> ::=
[UNIQUE
| PRIMARY KEY (<имя поля> [{,<имя поля>}...])] уникальность
| [FOREIGN KEY ( <имя поля> [{,<имя поля>}...]
REFERENCES <имя таблицы> [(<имя поля> [{,<имя поля>}...)]]
ограничения на ссылки
| [CHECK (<условие поиска>)] проверочное ограничение
Рассмотрим пример создания таблицы тСотрудники. Ее логическая структура приведена в табл. 3.1.
Таблица 3.1 Логическая структура тСотрудники
-
№
Поле
Тип
1
Код сотрудника
Ч
2
Фамилия
Т
3
Имя
Т
4
Отчество
Т
5
Пол
Т
6
Дата рождения
Д
7
Город
Т
8
Дата приема
Д
8
Дата увольнения
Д
Для удобства изложения примеры в данном разделе будем номеровать порядковыми числами. В конце команды не будем ставить никаких знаков (точка з запятой или точка). Также никаких знаков не будем применять при переносе команд по строкам.
Для удобства далее вместо полных имен будем использовать сокращения:
тСотрудники → тС
Код сотрудника → Код_с Дата рождения → Д_рожд
Фамилия → Фам Дата приема → Д_пр
Отчество → От Дата увольнения → Д_ув
Команда создания тС
1) CREATE TABLE тС
(Код_с INT NOT NULL ,
Фам C(15) NOT NULL,
Имя C(15) NOT NULL,
От C(15) NOT NULL,
Д_рожд D NOT NULL,
Пол C(1) NOT NULL
DEFAULT 'Ж'
CHECK (пол='Ж' OR пол='М'),
Город C(10) DEFAULT 'Донецк' ,
Д_пр D NOT NULL,
Д_ув D)
В процессе изучения студент должен самостоятельно определить результаты выполнения команд, т.е. составить заголовок таблицы-результата и ее тело.
Команда изменения таблиц ALTER TABLE используется для модификации существующей таблицы, например, для добавления полей или изменения ограничений на таблицу.
2) ALTER TABLE тС;
ADD PRIMARY KEY Код_с
Команда создания индексов CREATE INDEX позволяет определять простые и составные индексы, устанавливать ключи.
Следует заметить, что синтаксис команд определения данных в различных СУБД может иметь отличия от стандарта.
Для удаления объектов из БД используются команды:
удаления пустой таблицы DROP TABLE <имя таблицы>;
удаление индекса DROP INDEX <имя индекса>.
Допустим создана копия тС с именем тС2.
3) DROB TABLE тC2.