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

Тема 4: Операции с ограничениями.

  1. Виды ограничений.

  2. Создание ограничений.

  3. Добавление и удаление ограничений.

  4. Разрешение и запрет ограничений.

1. Виды ограничений.

Ограничения реализуют правила по обеспечению целостности данных на уровне столбца или таблицы, предотвращают удаление таблицы при наличии ссылок.

В Oracle существуют следующие виды ограничений:

  • NOT NULL

  • UNIQUE

  • PRIMARY KEY

  • FOREIGN KEY

  • CHECK

Ограничения можно создавать либо в момент создания таблицы, либо после создания таблицы.

2. Создание ограничений.

Обычно ограничения создаются одновременно с созданием таблицы, но добавлять их можно и после создания таблицы. Кроме того, ограничения могут быть временно запрещены.

Определение ограничений.

Уровень ограничения

Описание

Столбец

Ссылается на единственный столбец и описывается в пределах характеристик соответствующего столбца. Позволяет задать правила целостности любого типа.

Таблица

Ссылается на один или несколько столбцов и описывается независимо от определения столбцов в данной таблице. Позволяет задать любое ограничение, кроме Not Null.

Таким образом, ограничения можно создать на одном из двух уровней.

Синтаксис ограничения на уровне столбца

Имя_столбца [CONSTRAINT имя_ограничения    тип_ограничения]

Синтаксис ограничения на уровне таблицы

Имя_столбца1, Имя_столбца2,… [CONSTRAINT имя_ограничения] тип_ограничения

Ограничение NOT NULL

Запрещает наличие неопределенных значений в столбце. Задается только на уровне столбца. Столбцы, не связанные ограничением NOT NULL, могут содержать неопределенные значения по умолчанию.

Пример 1. Ограничение NOT NULL для столбца Phone без имени ограничения (Oracle создаст имя сам).

CREATE TABLE Friends

(Phone Varchar2(15) NOT NULL …);

Пример 2. Ограничение NOT NULL для столбца Phone с именем ограничения.

CREATE TABLE Friends

(Phone Varchar2(15)

CONSTRAINT Friends Phone NOT NULL …);

Ограничение UNIQUE.

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

Неопределенные значения возможны, если уникальный ключ основан на одном столбце. Эти ограничения могут использоваться как для столбца, так и для таблицы. Составной уникальный ключ создается с помощью определения на уровне таблицы. Для уникального ключа на уровне столбца автоматически создается уникальный ключ.

Ограничение PRIMARY KEY.

Синтаксис:

CREATE TABLE имя_ таблицы

(имя_столбца1 тип_данных тип_ограничения,…);

Пример3. Создание таблицы Friends c первичным ключом Phone:

CREATE TABLE Friends

(Kod integer NOT NULL PRIMARY KEY,…);

Ограничение FOREIGN KEY.

Направлено на ограничение целостности ссылок, задает столбец или набор столбцов в качестве внешнего ключа, устанавливает связь с первичным или уникальным ключом в той же самой таблице или между таблицами. Значение внешнего ключа должно совпадать с существующим значением первичного ключа в родительской таблице или быть неопределенным (NULL).

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

Внешний ключ описывается комбинацией следующих слов:

FOREIGN KEY – задает значение таблицы как ограничение на уровне таблицы;

REFERENCES – указывает на таблицу и столбец в родительской таблице;

ON DELETE CASCADE- при удалении строки в родительской таблице разрешает удаление зависимых строк в дочерней таблице. Если этот параметр опущен, то строка в родительской таблице не может быть удалена, если на нее имеется ссылка в дочерней таблице.

Синтаксис:

CREATE TABLE имя_таблицы1

(имя_столбца1 тип_данных, FOREIGNKEY(имя_внешнего_ключа) REFERENCES имя_таблицы2 (имя_столбца2),…);

где имя_таблицы2 (имя_столбца2)- это название подчиненной таблицы и соответствующего первичного ключа, с которым будет связана таблица 1(родительская таблица)

Пример 4. Создание таблицы Friends c внешним ключом Phone:

Friends

(Kod_phon integer,

FOREIGN KEY (Phone) REFERENCES Kollegi (Phonekod),

);

где Kollegi (Phonekod) – имя таблицы Kollegi, которая содержит столбец Phonekod. Phonekod является первичным ключом.

Ограничение CHECK.

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

  • ссылки на псевдостолбцы CURRVAL, NEXTVAL, LEVEL и ROWNUM;

  • вызовы функций SYSDATE, UID, USER и USERENV;

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

Пример 5. Использование ограничения CHECK

CHECK(Friends Cod Between 31 and 55)

Где Friends – имя таблицы

Cod – имя столбца

3. Добавление и удаление ограничений

Добавление ограничения.

Синтаксис команды:

ALTER TABLE имя таблицы1

ADD| MODIFY ([CONSTRANT имя_ограничения] тип_ограничения (имя_столбца) REFERENCES имя_таблицы2;

где тип_ограничения – это первичный или внешний ключ

Пример 6. Добавление в таблицу ограничения – первичный ключ.

alter table Oklad

add constraint d_pk primary key (dolzhn);

Добавление ограничения (внешнего ключа)

alter table dolzhn add constraint d_fk foreign key (dolzhn) references Oklad;

Удаление ограничения.

Синтаксис команды:

ALTERTABLE имя таблицы DROP [PRIMARY KEY| UNIQUE (столбец) CONSTRAINT ограничение [CASCADE];

CONSTRAINT необязательно и его можно опустить.

Пример 7. Удаление ограничения – первичного ключа

ALTER TABLE prep DROP PRIMARY KEY CASCADE;

  1. Разрешение и запрет ограничений.

С помощью команды ALTER TABLE с предложениями ENABLE и DISABLE можно разрешать и запрещать действия ограничений, не удаляя их.

Синтаксис команды:

ALTER TABLE имя_таблицы ENABLE | DISABLE CONSTRAINT ограничение [CASCADE];

Параметр CASCADE используется для одновременного запрета всех зависимых ограничений.

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