Операторы языка SQL для определения данных.
DDL – data definition language - язык определения(описания) данных
Операторы определения данных включают: операторы создания ( CREATE ), удаления ( DROP ) и изменения структуры ( ALTER ) объектов, таких, как таблицы ( TABLE ), представления ( VIEW ), триггеры ( TRIGGER ), пользователи ( USER ) и т.п.
Создание таблиц :
Создание таблицы осуществляется посредством
оператора CREATE TABLE:
CREATE TABLE Имя_таблицы
( Имя_столбца Тип_данных [NULL | NOT NULL ] [,...]};
Оператор такого вида приведет к созданию таблицы с именем Имя_таблицы , которая будет содержать столько столбцов, сколько их задано в операторе.
При определении столбца необходимо задать его имя,
тип данных, к которому будут относиться значения этого столбца, а также определить, можно ли в качестве значения рассматриваемого столбца использовать ключевое слово NULL. Ключевым словом NULL помечается такой столбец, который может содержать неопределенные значения.
Пример: создать таблицу s1 БД СЕССИЯ.
CREATE TABLE s1 ( ФИО VARCHAR (20) NOT NULL,
Дисциплина VARCHAR (20) NOT NULL,
Оценка SMALLINT NOT NULL);
Полное описание оператора CREATE TABLE должно включать средства поддержки целостности данных. Такие средства представляют собой спецификаторы, позволяющие задать ограничения для предотвращения попыток нарушить согласованность данных.
Политики ссылочной целостности
- Политика IGNORE означает, что никаких проверок и ограничений не предусматривается.
- Политика RESTRICT действует, когда применяются ограничения внешних ключей.
- При использовании политики CASCADE необходимо предусмотреть собственную программную обработку, т.е. при изменении родительских таблиц вносить изменения в дочерние таблицы программным образом.
- Политика SET DEFAULT состоит в том, что при изменении данных в родительских таблицах дочерним таблицам назначаются значения по умолчанию. Например, при удалении отдела можно записать его сотрудников в некоторый другой отдел, который считается отделом по умолчанию.
- Политика SET NULL похожа на предыдущую политику, только вместо значений по умолчанию назначаются NULL-значения.
Declarative Referential Integrity ( декларативная ссылочная целостность)
На уровне определения таблиц осуществляется декларативная политика ссылочной целостности с помощью внешних ключей. Она требует, чтобы в поле внешнего ключа можно было вводить только такие значения первичного ключа , которые присутствуют в родительской таблице.
Базовое определение оператора CREATE TABLE имеет следующий формат:
CREATE TABLE имя_таблицы
({ имя_столбца тип_даных [NOT NULL] [UNIQUE]
[DEFAULT значение по умолчанию]
[CHECK (условие проверки на допустимость) [,...] }
[PRIMARY KEY (список столбцов),]
{[UNIQUE (список столбцов),] [,...]}
{[FORING KEY {список столбцов внешних ключей)
REFERENCES имя родительской таблицы [(список столбцов
ключей-кандидатов)],
[MATCH {PARTIAL | FULL}
[ON UPDATE правило ссылочной целостности]
[ON DELETE правило ссылочной целостности]] [,...]}
{[CHECK (условие проверки на допустимость)] [,...]});
Пример: Перепишем оператор создания таблицы s1 БД Сессия следующим образом:
CREATE TABLE s1 ( ФИО VARCHA R (20) NOT NULL,
Дисциплина VA R CHAR (20) NOT NULL,
Оценка SMALLINT NOT NULL) ,
PRIMARY KEY (ФИО, Дисциплина),
FORING KEY ФИО REFERENCES S2 ,
ON UPDATE CASCADE ,
ON DELETE CASCADE);
Операторы языка SQL транслируются в режиме интерпретации, создавать таблицы необходимо в определенном порядке: вначале родительские, а затем дочерние.
В противном случае появятся сообщения об ошибке, когда в определении дочерней таблицы будут присутствовать ссылки на еще не существующую родительскую таблицу.
Обновление таблиц
В созданную таблицу изменения можно внести с помощью оператора ALTER TABLE , который имеет следующий обобщенный формат:
ALTER TABLE имя_таблицы
[ADD [COLUMN] имя столбца тип даных [NOT NULL] [UNIQUE]
[DEFAULT значение по умолчанию] [CHECK (условие проверки на
допустимость)]]
[DROP [COLUMN] ] имя_столбца [RISTRICT | CASCADE]]
[ADD [CONSTRAINT [имя ограничения)] ограничение]
[DROP CONSTRAINT имя ограничения [RISTRICT I CASCADE]]
[ALTER [COLUMN] SET DEFAULT значение по умолчанию]
[ALTER (COLUMN] DROP DEFAULT];
В данном формате предусмотрены возможности для выполнения ряда действий:
• добавить новый столбец в существующую таблицу — ADD COLUMN;
• удалить столбец из существующей таблицы — DROP COLUMN;
• добавить в определение таблицы новое ограничение — ADD CONSTRAINT;
• удалить из определения таблицы существующее ограничение — DROP CONSTRAINT;
• задать для существующего столбца значение по умолчанию — ALTER [COLUMN] SET DEFAULT;
• отменить установленное для столбца значение по умолчанию ALTER [COLUMN] DROP DEFAULT.
Пример: Добавить в таблицу s1 столбец Группа, содержащий символьный тип данных, можно с помощью оператора:
ALTER TABLE s1 ADD Группа varchar (7) NOT NULL;
Удаление таблиц
Таблица может быть удалена из базы данных
оператором:
DROP TABLE имя таблицы [RISTRICT | CASCADE];
Ключевые слова RISTRICT и CASCADE используются
для определения условий удаления таблицы в том
случае, если в базе данных присутствуют ее дочерние
таблицы.
Ключевое слово RISTRICT при наличии в базе данных
зависимых от удаляемой таблицы объектов вызовет
отмену удаления.
Ключевое слово CASCADE в этой ситуации вызовет
автоматическое удаление всех объектов базы данных,
существование которых зависит от данной таблицы.
Пример: Удалим таблицу s1:
DROP TABLE s1 ;
Операторы создания и удаления индексов
Для увеличения скорости выборки в БД обычно
используют специальную структуру, которая называется
индексом.
Операторы создания и удаления индекса имеют
следующий формат:
Создать индекс:
CREATE [UNIQUE] INDEX имя_индекса
OK имя_таблицы (столбец [ASC| DESC] [,_.]) ;
Удалить индекс:
DROP INDEX имя_индекса;
Если в операторе CREATE INDEX используется
квалификатор UNIQUE, то уникальность значений
индекса автоматически поддерживается
системой.
Для каждого из ключевых столбцов можно
указать порядок следования значений: по возрастанию
ASC (используется по умолчанию) и по убыванию - DESC.