Вопрос 10 . Язык запросов SQL . Операторы языка определения данных DDL: CREATE TABLE; DROP TABLE; ALTER TABLE; CREATE INDEX; DROP INDEX. Привести примеры.
Добавил: | DMT | ||||||||||||||
Дата создания: | 30 декабря 2007, 18:09 | ||||||||||||||
Дата обновления: | 30 декабря 2007, 20:43 | ||||||||||||||
Просмотров: | 40358 последний сегодня, 9:13 | ||||||||||||||
Комментариев: | 0 | ||||||||||||||
Вопрос 10 . Язык запросов SQL . Операторы языка определения данных DDL: CREATE TABLE; DROP TABLE; ALTER TABLE; CREATE INDEX; DROP INDEX. Привести примеры. Операторы языка SQL можно условно разделить на два подъязыка : язык определения данных ( Data Definition Language – DDL ) и язык манипулирования данными ( Data Manipulation Language – DML ). Операторы языка DDL
Инструкция CREATE TABLE . Назначение: создание новой таблицы. Синтаксис : CREATE [ TEMPORARY ] TABLE таблица ( поле _1 тип [( размер )] [ NOT NULL ] [индекс_1] [, поле_2 тип [(размер)] [ NOT NULL ] [индекс_2] [, ...]] [,составной_индекс [, ...]]) Аргументы инструкции CREATE TABLE : таблица - имя создаваемой таблицы; поле_1, поле_2 - имена одного или нескольких полей, создаваемых в новой таблице. Таблица должна содержать хотя бы одно поле; тип - тип данных поля в новой таблице; размер - размер поля в знаках (только для текстовых и двоичных полей); индекс_1, индекс_2 - предложение CONSTRAINT , предназначенное для создания простого индекса; составной_индекс - предложение CONSTRAINT , предназначенное для создания составного индекса. Дополнительные сведения: • Если для поля добавлено ограничение NOT NULL , то при добавлении новых записей это поле должно содержать допустимые данные. • Предложение CONSTRAINT устанавливает различные ограничения на поле и может быть использовано для определения ключа. Кроме того, для создания ключа или дополнительного индекса для существующей таблицы можно использовать инструкцию CREATE INDEX. • Создаваемая временная ( TEMPORARY ) таблица будет доступна только в том сеансе, котором эта таблица была создана. По завершении данного сеанса она автоматически удаляется. Например, инструкция TABLE Разделы ( Код _ раздела INTEGER NOT NULL, Название TEXT(30) NOT NULL); создаст таблицу с двумя полями: целочисленным и текстовым. Предложение CONSTRAINT . Назначение: создание или удаление индексов в инструкциях CREATE TABLE и ALTER TABLE . Существуют два типа предложений CONSTRAINT : одно для создания простого индекса (по одному полю), а второе для создания составного индекса (по нескольким полям). Синтаксис предложения CONSTRAINT для создания простого индекса: CONSTRAINT имя { PRIMARY KEY | UNIQUE | NOT NULL | REFERENCES внешняя_таблица [(внешнее_поле_1, внешнее_поле_2)] [ ON UPDATE CASCADE | SET NULL ] [ ON DELETE CASCADE | SET NULL ]} Синтаксис предложения CONSTRAINT для создания составного индекса: CONSTRAINT имя { PRIMARY KEY ( ключевое _1[, ключевое _2 [, ...]]) | UNIQUE (уникальное_1[, уникальное_2 [, ...]]) | NOT NULL (непустое_1[, непустое_2 [, ...]]) | FOREIGN KEY [ NO INDEX ] ( ссылка _1[, ссылка _2 [, ...]]) REFERENCES внешняя_таблица [(внешнее_поле_1 [, внешнее_поле_2 [, ...]])] [ ON UPDATE CASCADE | SET NULL ] [ ON DELETE CASCADE | SET NULL ]} Аргументы предложения CONSTRAINT : имя - имя создаваемого индекса; ключевое_1, ключевое_2 - имена одного или нескольких полей, которые следует обозначить как ключевые; уникальное_1, уникальное_2 - имена одного или нескольких полей, которые следует включить в уникальный индекс; непустое_1, непустое_2 - имена одного или нескольких полей, в которых запрещаются значения Null ; ссылка_1, ссылка_2 - имена одного или нескольких полей, включенных во внешний ключ, которые содержат ссылки на поля в другой таблице; внешняя_таблица - имя внешней таблицы, которая содержит поля, указанные с помощью аргумента внешнее_поле; внешнее_поле_1, внешнее_поле_2 - имена одного или нескольких полей внешней таблицы, указанные с помощью ссылки_1 и ссылки_2. Если адресуемое поле является ключом внешней таблицы, данное предложение можно опустить. Предложение CONSTRAINT позволяет создавать для поля индекс одного из описанных ниже типов: • Для создания уникального индекса используется зарезервированное слово UNIQUE . Это означает, что в таблице не может быть двух записей, имеющих одно и то же значение в этом поле. Уникальный индекс создается для любого поля или любой группы полей. Если в таблице определен составной уникальный индекс, то комбинация значений включенных в него полей должна быть уникальной для каждой записи таблицы, хотя отдельные поля и могут иметь совпадающие значения. • Для создания ключа таблицы, состоящего из одного или нескольких полей, используется зарезервированные слова PRIMARY KEY . Все значения ключа таблицы должны быть уникальными и отличаться от значения Null . Кроме того, в таблице может быть только один ключ. Примечание. Зарезервированные слова PRIMARY KEY нельзя использовать при создании индекса в таблице, в которой уже определен ключ; в противном случае возникнет ошибка. • Для создания внешнего ключа используются зарезервированные слова FOREIGN KEY . Если ключ внешней таблицы состоит из нескольких полей, необходимо использовать предложение CONSTRAINT , предназначенное для создания составного индекса. При этом следует перечислить все поля, содержащие ссылки на поля во внешней таблице, а также указать имя внешней таблицы и имена полей внешней таблицы, на которые ссылаются поля, перечисленные выше, причем в том же порядке. Если адресуемые поля являются ключами внешней таблицы, указывать эти поля не следует. Ограничения для внешних ключей определяют конкретные действия, выполняемые в случае изменения значения соответствующего ключа: Например, инструкция CREATE TABLE Книги (Код_книги TEXT (7) NOT NULL CONSTRAINT ключ2 PRIMARY KEY , Раздел TEXT (5) NOT NULL , Автор TEXT (40) NOT NULL , Название TEXT (50) NOT NULL ); создаст таблицу с четырьмя текстовыми полями, определив первое из них как ключевое. Инструкция CREATE TABLE Выдача_возврат (Код_книги TEXT (7) NOT NULL , Код_читателя TEXT (5) NOT NULL , Дата_выдачи DATETIME NOT NULL , Дата_возврата DATETIME , CONSTRAINT Ключ4 PRIMARY KEY (Код_книги, Дата_выдачи)); создаст таблицу с четырьмя полями и ключевым полем, включающим два из них. Инструкция ALTER TABLE . Назначение: изменение структуры таблицы, созданной с помощью инструкции CREATE TABLE . Синтаксис: ALTER TABLE таблица { ADD { COLUMN поле тип [(размер)] [ NOT NULL ] [ CONSTRAINT индекс ] | ALTER COLUMN тип поля [( размер )] | CONSTRAINT составной _ индекс } | DROP { COLUMN поле | CONSTRAINT имя _ индекса } } Аргументы инструкции ALTER TABLE : таблица - имя изменяемой таблицы; поле - имя поля, добавляемого в таблицу или заменяемого в таблице или удаляемого из нее; тип - тип данных поля; размер - размер поля в знаках (только для текстовых и двоичных полей); индекс - индекс для поля; составной_индекс - описание составного индекса, добавляемого к таблице; имя_индекса - имя составного индекса, который следует удалить. С помощью инструкции ALTER TABLE существующую таблицу можно изменить несколькими способами: • Добавить новое поле в таблицу с помощью зарезервированных слов ADD COLUMN . В этом случае необходимо указать имя поля, его тип и (для текстовых и двоичных полей) необязательный размер. Например, инструкция ALTER TABLE Книги ADD COLUMN Год INTEGER NOT NULL; добавит в таблицу Книги целочисленное поле Год . • Изменить тип существующего поля с помощью зарезервированных слов ALTER COLUMN . В этом случае необходимо указать имя поля, его тип и (для текстовых и двоичных полей) необязательный размер. Например, инструкция ALTER TABLE Разделы ALTER COLUMN Код_раздела TEXT (5); позволит в таблице Разделы изменить тип поля Код (первоначально определенный как INTEGER ), переопределив это поле как текстовое. • Добавить составной индекс с помощью зарезервированных слов ADD CONSTRAINT . • Удалить поле с помощью зарезервированных слов DROP COLUMN . В этом случае необходимо указать только имя поля. Например, инструкция ALTER TABLE Книги DROP COLUMN Год ; удалит из таблицы Книги поле Год . • Удалить составной индекс с помощью зарезервированных слов DROP CONSTRAINT . В этом случае необходимо указать только имя составного индекса, следующее за зарезервированным словом CONSTRAINT . Инструкция CREATE INDEX . Назначение: создание нового индекса для существующей таблицы. Синтаксис: CREATE [ UNIQUE ] INDEX индекс ON таблица (поле [ ASC | DESC ][, поле [ ASC | DESC ], ...]) [ WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }] Аргументы: индекс - имя создаваемого индекса; таблица - имя существующей таблицы, для которой создается индекс; поле - имена одного или нескольких полей, включаемых в индекс. Для создания простого индекса (состоящего из одного поля) имя поля в круглых скобках вводится сразу после имени таблицы. Для создания составного индекса (состоящего из нескольких полей) перечисляются имена всех этих полей. Для расположения элементов индекса в убывающем порядке используется зарезервированное слово DESC ; в противном случае будет принят порядок по возрастанию. Дополнительные сведения: • Зарезервированное слово UNIQUE используется для запрета совпадения значений индексированных полей в разных записях. • Необязательное предложение WITH позволяет задать условия на значения. Например: • С помощью параметра DISALLOW NULL запретить значения Null в индексированных полях новых записей. • С помощью параметра IGNORE NULL запретить включение в индекс записей, имеющих значения Null в индексированных полях. • С помощью зарезервированного слова PRIMARY назначить индексированные поля ключом. Такой индекс по умолчанию является уникальным, следовательно, зарезервированное слово UNIQUE можно опустить. Зарезервированное слово PRIMARY нельзя использовать при создании нового индекса в таблице, в которой уже определен ключ; в противном случае возникнет ошибка. Например, инструкция CREATE INDEX Ключ1 ON Разделы(Код_раздела) WITH PRIMARY ; определит в таблице Разделы поле Код_раздела как ключевое. Инструкция CREATE INDEX Индекс ON Книги(Автор); создаст в таблице Книги индекс по полю Автор . Инструкция DROP . Назначение: удаление таблицы, процедуры, представления из базы данных или удаление индекса из таблицы. Синтаксис: DROP { TABLE таблица | INDEX индекс ON таблица | PROCEDURE процедура | VIEW представление} Аргументы: таблица - имя таблицы, которую следует удалить или из которой следует удалить индекс; процедура - имя удаляемой процедуры; представление - имя удаляемого представления; индекс - имя индекса, удаляемого из таблицы. Например, инструкция DROP INDEX Индекс ON Книги; удалит из таблицы Книги индекс по полю Автор . Инструкция DROP TABLE Книги; удалит из базы данных таблицу Книги . |