Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Авт_ПМП / Tema_SQL.doc
Скачиваний:
10
Добавлен:
05.02.2016
Размер:
462.34 Кб
Скачать

Check (Naukov_stupin in(‘не має’, ‘кадидат’, ‘доктор’))

задаватиме допустимі значення для поля Naukov_stupin. Тобто ніякі інші значення в це поле СУБД не дозволить внести.

Всі інші фрази оператора CREATE TABLE, що залишились називають обмеженнями для таблиці і можуть відокремлюватись (не обовязково) фразою

CONSTRAINT constraint_name.

Використанння цієї фрази дозволить в подальшому відмінити те чи інше обмеження за допомогою оператора ALTER TABLE.

Фраза PRIMARY KEY визначає стовпчик або стовпчики, які утворюють первинний ключ таблиці. Визначення любої таблиці повинно містити не більше однієї фрази PRIMARY KEY. Система заблокує виконання любого оператора INSERT аба UPDATE який створює рядок з дубльованими значеннями в стовпчиках, вказаних у фразі PRIMARY KEY. Наприклад, якщо S1 i S2 – стовпчики, які вказані у фразі PRIMARY KEY, і в таблиці вже є рядок зі значеннями a i b у цих стовпчиках відповідно, то спроба вставити новий рядок зі значеннями a i b у цих стовпчиках буде заблокована.

Фраза FOREIGN KEY дозволяє визначити зовнішні ключі таблиці. Фраза містить такі елементи:

  • список list_of_foreign_key_columns складається з імен одного або більше стовпчиків, які утворюють даний зовнішній ключ;

  • фразу REFERENCES, яка визначає батьківську таблицю з іменем parent_table_name, яка містить потенційний ключ, поля якого визначені зовнішнім ключем (задаються списком list_of_candidate_key_columns);

  • необовязкову фразу ON UPDATE для виначення правила поновлення даних, які задаються параметром referential_action. Цей параметр може приймати одне з таких значеннь: CASCADE, SET NULL, SET DEFAULT, NO ACTION. Якщо фраза ON UPDATE опущена, за змовчуванням використовується правило NO ACTION;

  • необовязкову фразу ON DELETE для виначення правила поновлення даних, які задаються параметром referential_action. Цей параметр може приймати одне з таких значеннь: CASCADE, SET NULL, SET DEFAULT, NO ACTION. Якщо фраза ON DELETE опущена, за змовчуванням використовується правило NO ACTION.

Правила підтримки цілісності посилань, які задаються у фразі FOREIGN KEY після ON UPDATE і ON DELETE:

  • CASCADE – виконується поновлення/видалення рядка з батьківської таблиці з автоматичним поновленням/видаленням всіх рядків дочірньої таблиці, повязаних з даним рядком батьківської таблиці;

  • SET NULL – виконується видалення рядка з батьківської таблиці, а у зовнішні ключі дочірньої таблиці, повязаних з даним рядком батьківської таблиці заноситься значенння NULL. Цей варіант застосовується лише для тих стовпчиків зовнішнього ключа, у визначенні яких задано NULL;

  • SET DEFAULT - виконується видалення рядка з батьківської таблиці, а у зовнішні ключі дочірньої таблиці, повязаних з даним рядком батьківської таблиці заноситься значенння за змовчуванням.

  • NO ACTION операція видалення рядка з батьківської таблиці відміняється. Це значення використовується за змовчуванням.

Приклади. Оператор

CREATE TABLE Vidom(

kod INTEGER NOT NULL,

year SMALLINT NOT NULL,

mounth SMALLINT NOT NULL,

D REAL NOT NULL DEFAULT 0 ,

CONSTRAINT ind PRIMARY KEY (kod,year, mounth))

створить таблицю з назвою Vidom, яка матиме стовпчики - kod, year, mounth, D і первинний ключ з іменем ind, який визначається стовпчиками kod,year, mounth. Причому поля kod,year, mounth, D не можуть приймати значення NULL, а поле D за змовчуванням прийматиме значення 0, тобто оператор INSERT, що не містить явного задання значення поля D, автоматично підставлятиме значення 0. Приклад використання CHECK для недопущення вводу помилкових значень.

CREATE TABLE Osoba

(ID_OSOBA INTEGER NOT NULL,

PRIZ VARCHAR(50) NOT NULL,

NAME VARCHAR(50) NOT NULL,

POBAT VARCHAR(50) NOT NULL,

SEX CHAR(4) CHECK (SEX IN (‘жін.’,’чол.’)),

ID_FACULT SMALLINT NOT NULL)

Цей оператор створить таблицю Osoba з відповідними стовпчиками, причому в стовпчик SEX система не дозволить ввести нічого крім значень ‘жін.’і ’чол.’.

Слід зауважити, що не всі діалекти SQL підтримують фразу DEFAULT (Access 97 не підтримує цієї фрази).

Видалення таблиць (оператор DROP TABLE).

Непотрібні таблиці видаляються з бази з допомогою оператора DROP TABLE, який має формат:

DROP TABLE table_name [RESTRICT | CASCADE]

Наприклад, для видалення таблиці Vidomist з бази необхідно застосувати оператор:

DROP TABLE Vidomist

Якщо в операторі вказано ключове слово RESTRICT і в базі існує хоча б один об’єкт, який пов’язаний з таблицею table_name (наприклад, VIEW в якому використовується ця таблиця), операція видалення буде відхиленна. Якщо в операторі вказано ключове слово CASCADE, автоматично буде видалена таблиця table_name і всі об’єкти, які пов’язані з цією таблицею.

Створенння індексу (оператор CREATE INDEX).

Індекс – це обєкт бази даних, з допомогою якого істотньо збільшується швидкість пошуку даних в таблицях. Створення індексів не передбачено стандртом, але більшість розробників СУБД підтримують такий оператор:

CREATE [UNIQUE] INDEX index_name

ON table_name(column [ASC | DESC][,…])

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

CREATE INDEX ind_osoba ON Osoba (kod ASC)

створює індекс ind_osoba по полю kod у висхідному порядку для таблиці Osoba.

Якщо в операторі вказано ключове слово UNIQUE, автоматично буде підтримуватись унікальність значень ключа. Тобто СУБД не дозволить існування двох рядків з одинаковим значенням індексу. В нашому прикладі це означає, що СУБД не допустить двох і більше рядків у таблиці Osoba з одннаковим кодом.

Видалення індексу (оператор DROP INDEX).

Оператор DROP INDEX виддаляє з бази створений раніше індекс. Він має формат:

DROP INDEX index_name

Наприклад, оператор

DROP INDEX ind_osoba

видаляє з бази створений раніше індекс ind_osoba для таблиці Osoba.

Модифікація структури таблиці (оператор ALTER TABLE)

Для зміни структури існуючої тавблиці стандартом ISO передбачено оператор ALTER TABLE. Визначення цього оператора містить шість параметрів для виконання таких операцій:

  • вставка в таблицю нового стовпчика;

  • видалення стовпчика з таблиці;

  • видалення з визначення таблиці існуючого обмеження;

  • визначення для зазначеного стовпчика значення за змовчуванням;

  • відміна встановленого значення за змовчуванням для даного стовпчика.

Оператор ALTER TABLE має такий формат:

ALTER TABLE table_name

[ADD [COLUMN] column_name data_type [NOT NULL] [UNIQUE]

[DEFAULT default_option] [CHECK (search_condition)]]

[DROP [COLUMN] column_name [RESTRICT | CASCADE]]

[ADD [CONSTRAINT [constrain_name]] table_constraint_definition]

[DROP CONSTRAINT constrain_name [RESTRICT | CASCADE]]

[ALTER [COLUMN] SET DEFAULT default_option]

[ALTER [COLUMN] DROP DEFAULT]

Тут параметри мають ті ж призначення, що і в операторі CREATE TABLE. Параметр table_constraint_definition може приймати одне з таких значень: PRIMARY KEY, UNIQUE, FOREIGN KEY, CHECK. У фразі DROP COLUMN column_name задається ім’я стовпчика, який видаляється з таблиці. Кваліфікатор RESTRICT означає, що якщо на даний стовпчик посилається який небудь інший об’єкт бази, він з таблиці не видалиться; кваліфікатор CASCADE означає, що крім стовпчика вказаної таблиці будуть видалені всі посилання на данний стовпчик в базі. За змовчуванням діє кваліфікатор RESTRICT.

Оператор ALTER TABLE реалізовано не у всіх діалектах SQL. В деяких діалектах підтримується урізаний варіант цього оператора (не дозволяється видаляти вже існуючі стовпчики).

Соседние файлы в папке Авт_ПМП