Определение ограничений целостности таблицы

Синтаксис для определения ограничений целостности таблицы представлен следующими правилами:

<определение ограничений целостности таблицы>::= <определение ограничения уникальности> | <определение ограничения по ссылкам> | <определение проверочного ограничения>

<определение ограничения уникальности>::=<спецификация уникальности>(<список столбцов>)

<спецификация уникальности>::= UNIQUE | PRIMARY KEY

<список столбцов>::= <имя столбца>[{,<имя столбца>}..]

<определение ограничения по ссылкам>::= FOREIGN KEY (<ссылающиеся столбцы>)<спецификация ссылок>

<спецификация ссылок>::== REFERENCES <ссылаемая таблица и столбцы>

<ссылаемая таблица и столбцы>::=<имя таблицы>[(<список столбцов>)]

<определение проверочного ограничения>::= CHECK (<условие поиска>)

Действие ограничения уникальности состоит в том, что в таблице не допускается появление двух или более строк, значения столбцов уникальности которых совпадают. Среди ограничений уникальности таблицы не должно быть более одного определения первичного ключа (ограничения уникальности с ключевым словом PRIMARY KEY).

Ограничения по ссылкам в данной работе не используются, и поэтому подробно не рассматриваются.

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

Примеры создания таблиц с ограничениями:

CREATE TABLE employee

(emp_id INTEGER CONSRAINT p1 PRIMARY KEY,

fname CHAR(20) NOT NULL,

minitial CHAR(1) NULL,

lname VARCHAR(30) NOT NULL,

job_id SMALLINT NOT NULL DEFAULT 1

REFERENCES jobs(job_id)

CREATE TABLE inventory

(code CHAR(4) NOT NULL

CONSTRAINT c1 CHECK(code LIKE"[0-9][0-9][0-9][0-9]"),

high INT NOT NULL CHECK (high>0),

low INT NOT NULL CHECK (low>0),

CONSTRAIN c4 CHECK (hign>=low AND high-low<1000)

 

Изменение таблиц

Для изменения таблицы, а именно: для включения новых столбцов и ограничений, а также удаления ограничений, используется оператор ALTER TABLE, имеющий следующий синтаксис:

<оператор изменения таблицы>::= ALTER TABLE <имя таблицы> {ADD <элемент таблицы>[{,<элемент таблицы>}...] | DROP CONSTRAINT <имя ограничения>[{,<имя ограничения>}...]}

Пример включения нового столбца в таблицу:

ALTER TABLE names2 ADD middle_name VARCHAR(20) NULL, fax VARCHAR(15) NULL

 

Создание представлений

Механизм представлений является мощным средством языка SQL, позволяющим скрыть реальную структуру БД от некоторых пользователей за счет определения представления БД. Представление реально является некоторым хранимым в БД запросом с именованными столбцами, а для пользователя ничем не отличается от базовой таблицы БД. Представляемая таблица является виртуальной. Обычно вычисление представляемой таблицы производится каждый раз при использовании представления.

Оператор определения представления имеет следующий синтаксис:

 

<оператор создания представления>::= CREATE VIEW <имя таблицы>[(список столбцов)] AS <спецификация запроса> [WITH CHECK OPTION]

<спецификация запроса>::= SELECT [ALL | DISTINCT] <список выборки><табличное выражение>

<список столбцов>::=<имя столбца>[{,<имя столбца>}...]

ТребованиеWITH CHECK OPTIONимеет смысл только в случае определения изменяемой представляемой таблицы, которая определяется спецификацией запроса, содержащей раздел WHERE. При наличии этого требования не допускаются изменения представляемой таблицы, приводящие к появлению в базовых таблицах строк, не видимых в представляемой таблице.

Примеры создания представлений:

CREATE VIEW ta_limited AS

SELECT au_id, title_id, au_ord FROM titleauthor

CREATE VIEW cal_publishers AS

SELECT * FROM publishers WHERE state="CA"

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: