Оператор создания таблицы


База данных обычно содержит несколько таблиц, а также и индексы и некоторые другие информационные объекты.

SQL оперирует с данными, представленными в виде таблиц. Каж­дая таблица содержит множество строк. Различают базовые таблицы – таблицы, определенные с помощью их описания на языке описания данных, и производные таблицы, получаемые из одной (или несколь­ких других) таблицы путем выполнения некоторого запроса. Базовые таблицы бывают постоянные или временные. Если со­здается временная таблица, то используется параметр TEMPORARY. В этом случае при определении таблицы должны быть указаны до­полнительные параметры GLOBAL или LOCAL.

Таблица описывается с помощью оператора CREATE TABLE. Таблица определяется путем задания содержащихся в ней столбцов. Все значения в столбце имеют один и тот же тип данных. При описа­нии таблиц могут задаваться ограничения целостности данных.

Следующий оператор создает новую таблицу в существующей БД. Упрощенный синтаксис оператора имеет вид:

 

CREATE TABLE <таблица>

( <определение столбца>

[, {<определение столбца> | <ограничение таблицы>}, …]);

 

Здесь <таблица> - уникальное внутри БД имя, присваиваемое таблице,

<определение столбца> - описание столбца таблицы, которое может основываться на ранее определенном домене, а также содержать ограничения целостности, предъявляемые к вводимым в столбец значениям. Таблица должна содержать хотя бы один столбец.

<ограничение таблицы> - описание ограничения целостности, предъявляемого к сочетанию значений, введенных в строку таблицы в нескольких столбцах. В описании таблицы может определяться несколько ограничений таблицы.

В определениях столбцов и в ограничениях таблицы могут также задаваться ограничения ссылочной целостности для поддержки связей между данными в разных таблицах.

Упрощенный синтаксис определения столбца имеет вид:

 

< определение столбца > = <столбец > {< тип > | <домен >}

[DEFAULT <значение> ]

[NOT NULL]

[ <ограничение столбца>, … ]

 

Здесь <столбец> - уникальное внутри таблицы имя, присваиваемое столбцу,

{< тип> | <домен>} – тип данных столбца или домен, свойства которого наследует столбец,

DEFAULT, NOT NULL – аналогичны объявлениям, рассмотренным для домена,

<ограничение столбца> - требование, которое должно выполняться для вводимых в столбец значений. Набор видов ограничений столбца имеет вид:

UNIQUE – требование уникальности значений в столбце;

PRIMARY KEY – объявление столбца первичным ключом. Это автоматически накладывает требование уникальности на значения в столбце. Кроме того, для столбца должно быть явно указано требование NOT NULL;

Ограничение столбца представляется в виде ограничений ссылочной целостности и ограничений по значению:

REFERENCES <таблица> [(<столбец>)]

[ON DELETE

{NO ACTION | CASCADE | SET DEFAULT | SET NULL}]

[ON UPDATE

{NO ACTION | CASCADE | SET DEFAULT | SET NULL}]

- ограничение ссылочной целостности.

CASCADE - каскадное удаление или изменение внешних ключей с соответствии с удалением или изменением в главной таблице;

SET DEFAULT – установка некорректных значений внешних ключей в заданное для столбца значение по умолчанию;

SET NULL – очистка позиций некорректных значений внешних ключей путем записи в них значения NULL.

CHECK (<предикат>) – ограничивающее условие, проверяемое при вводе или изменении значения в столбце. Преди­кат использует значения столбцов в выражении для вычис­ления значения

Простыми формами задания условия являются:

<столбец> <оператор сравнения > <значение>,

<столбец > [NOT] BETWEEN <значение> AND <значение>,

<столбец > [NOT] IN (<список значений>),

<столбец > IS [NOT] NULL.

Предикат может принимать значения TRUE, FALSE или UNKNOWN. Ограничение считается нарушенным, когда преди­кат принимает значение FALSE.

Более сложные условия задаются с использованием кванторов и операторов выборки. Также как для домена простые условия могут соединяться в более сложные с помощью логических функций AND, OR и NOT.

Ограничения таблицы аналогичны ограничениям столбца, но предъявляются не к одному столбцу, а к набору столбцов:

PRIMARY KEY (<список столбцов>) – объявление набора столбцов первичным ключом;

UNIQUE (<список столбцов>) – требование уникальности сочетаний значений в наборе столбцов,

FOREIGN KEY (<список столбцов>) REFERENCES <таблица>

ON DELETE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]

ON UPDATE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]

- объявление набора столбцов внешним ключом;

CHECK ( <предикат>) – задание ограничивающего условия, включающего значения из нескольких столбцов.

Ниже приведен пример описания трех связанных таблиц: «Spr_mat» — справочник материалов, «Spr_post» — справочник постав­щиков и «Post» - таблица, содержащая информацию о поставках. При включении в базу данных информации о конкретной поставке долж­но проверяться наличие вводимых значений кода материала (kod_mat) и кода поставщика (kod_post) в соответствующих справочниках.

 

CREATE TABLE spr_mat

(kod_mat CHAR(3) NOT NULL PRIMARY KEY,

naim_mat CHAR (30) NOT NULL UNIQUE);

 

CREATE TABLE spr_post

(kod_post CHAR(5) NOT NULL,

naim_post CHAR (30) NOT NULL,

PRIMARY KEY (kod_post),

UNIQUE (naim_post));

 

CREATE TABLE post

(kod_post CHAR(5) NOT NULL,

kod_mat CHAR(3) NOT NULL,

data_post DATE NOT NULL,

kolv NUMERIC NOT NULL,

PRIMARY KEY (kod_post, kod_mat, data_post),

FORIGN KEY (kod_mat) REFERENCES spr_mat (kod_mat),

FORIGN KEY (kod_post) REFERENCES spr_post (kod_post));

 

Структуру существующей таблицы можно изменять с помощью оператора ALTER TABLE.

 

ALTER TABLE <имя таблицы>

[ADD [COLUMN] <определение столбца>]

| [ALTER [COLUMN] <имя столбца> <изменяющее действие>]

| [DROP [COLUMN] <имя столбца> RESTRICT | CASCADE]

| [ADD <определение ограничения для таблицы>]

| [DROP CONSTAINT <имя ограничения> RESTRICT | CASCADE];

 

изменяющее действие::=

[SET DEFAULT <значение по умолчанию>] | [DROP DEFAULT]

 

Как видно, с помощью оператора ALTER TABLE можно добавить новый столбец в таблицу, изменить определение существующего стол­бца, добавив/удалив значение по умолчанию, добавить/удалить огра­ничения целостности, а также удалить столбец из таблицы. При уда­лении столбца, если будет использован параметр RESTRICT, то в слу­чае наличия каких-либо ссылок на этот столбец (в представлениях, ограничениях, условиях) оператор будет отвергнут. Если же будет ис­пользован параметр CASCADE, то все объекты, имеющие ссылки на этот столбец, будут уничтожены.

Оператор ALTER TABLE присутствует не во всех СУБД. Часто реализация этого оператора не полностью соответствует стандарту.

Таблицы могут быть удалены с помощью оператора DROP TABLE.

 



Дата добавления: 2016-12-27; просмотров: 1810;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.013 сек.