Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_KL_2010_14.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
28.97 Mб
Скачать

Предложение unique

Для того чтобы сервер автоматически проверял и поддерживал уникальность для некоторого поля, надо для данного поля ввести ограничитель на уникальность. Для этого используется предложение UNIQUE инструкции CREATE TABLE.

Ниже приведена модифицированная инструкция CREATE TABLE для таблицы OFFISY с включением в нее условием уникальности для столбца CITY:

CREATE TABLE OFFISY

(

ID_OFC INTEGER NOT NULL,

CITY VARCHAR(15) NOT NULL,

REGION VARCHAR(10) NOT NULL,

MNGR INTEGER,

TARGET MONEY,

SALES MONEY NOT NULL,

PRIMARY KEY (OFFICE),

CONSTRAINT HASMGR

FOREIGN KEY (MNGR) REFERENCES SLUZHASCHIE ON DELETE SET NULL,

UNIQUE (CITY) );

Если первичный или внешний ключ включают в себя только один столбец, либо если условие уникальности или условие на значения касаются одного столбца, то разрешается использовать «сокращенную» форму ограничения, при которой оно просто добавляется в конец определения столбца, как это показано в нижеследующем примере:

CREATE TABLE OFFISY

(ID_OFC INTEGER NOT NULL,

CITY VARCHAR(15) NOT NULL UNIQUE,

REGION VARCHAR(10) NOT NULL,

MNGR INTEGER,

TARGET MONEY,

SALES MONEY NOT NULL,

PRIMARY KEY (OFFICE),

CONSTRAINT HASMGR

FOREIGN KEY (MGR) REFERENCES SLUZHASCHIE ON DELETE SET NULL);

Предложение check

Когда создается таблица, то для каждого поля задается тип его значения. Это может быть INTEGER, CHAR и т. п. Тип определяет допустимое множество значений для данного поля. Но в некоторых случаях это множество значений много шире реально используемого множества. В SQL есть средства для более тонкого описания множества допустимых значений поля (в теории это множество называется доменом). Задать домен для того или иного поля можно с помощью ограничений на значение. Этот ограничитель указывается при создании таблицы. После типа поля или значения по умолчанию надо указать ключевое слово CHECK и логическое выражение в скобках

CREATE TABLE OFFISY

(

ID_OFC INTEGER NOT NULL,

CITY VARCHAR(15) NOT NULL,

REGION VARCHAR(10) NOT NULL,

MNGR INTEGER,

TARGET MONEY,

SALES MONEY NOT NULL,

PRIMARY KEY (OFFICE),

CONSTRAINT HASMGR

FOREIGN KEY (MGR) REFERENCES SLUZHASCHIE ON DELETE SET NULL,

CHECK (TARGET >= 0.00) );

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

3.3.2.Инструкция alter table

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

  • добавить в каждую строку таблицы CUSTOMERS имя и номер телефона служащего компании клиента, через которого поддерживается контакт;

  • добавить в таблицу PRODUCTS столбец с указанием минимального количества товара, чтобы иметь возможность предупреждения о том, что запас какого-либо товара стал меньше допустимого предела;

  • сделать столбец REGION в таблице OFFISY внешним ключом для вновь созданной таблицы REGIONS, первичным ключом которой является название региона;

  • удалить определение внешнего ключа для столбца CUST таблицы ZAKAZY, связывающего ее с таблицей CLIENTY, и заменить его определениями двух внешних ключей, связывающих столбец CUST с двумя вновь созданными таблицами CUST_INFO и ACCOUNT_INFO.

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

  • добавить новый столбец в уже существующую и заполненную таблицу;

  • удалить столбец из существующей таблицы;

  • изменить значение по умолчанию для какого-либо столбца;

  • добавить или удалить первичный ключ таблицы;

  • добавить или удалить внешний ключ таблицы;

  • добавить или удалить условие уникальности;

  • добавить или удалить условие проверки для любого столбца или для таблицы в целом.

Однако оператором ALTER TABLE можно провести только одно из перечисленных изменений, например, за один раз можно добавить 1 столбец.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]