Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯЗЫК SQL.doc
Скачиваний:
17
Добавлен:
16.11.2018
Размер:
903.17 Кб
Скачать

Id_студента integer,

ФИО CHAR.(20)-,

Специальность CHAR (15),

Примечание VARCHAR );

Данный запрос создает таблицу студент, содержащую четыре столбца. Первый столбец целочисленный, а три других — сим­вольные.

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

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

Нередко ограничения устанавливаются и отслеживаются в при­ложениях, работающих с базами данных. Тем не менее, ограни­чения могут быть установлены и могут поддерживаться многими современными СУБД.

Если вы создаете таблицу посредством SQL, то также имеете возможность задать эти ограничения, а выполнять их будет СУБД. При этом если одна и та же база данных используется несколькими приложениями, то вам при­дется установить ограничения только один раз, а не столько, сколько имеется приложений.

Ограничения для столбцов

Определение Описание

NOT NULL Столбец не может содержать значение NULL,

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

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

primary key Столбец является первичным ключом. В каждой таблице только один столбец может быть первичным ключом. Это означает, что он не может содержать значение null, a вводимое в него значение должно отличать­ся от всех остальных значений в этом столб­це. Таким образом, primary key является комбинацией null и unique

DEFAULT(значение)

Устанавливает значение по умолчанию. Так, при добавлении новой записи столбец с та­ким ограничением автоматически получит указанное значение

CHECK (условие)

Позволяет производить проверку условия при вводе данных. Значение будет сохране­но, если условие выполняется, в противном случае — нет

Примечание Microsoft Access не поддерживает ключевые слова default и check в определениях ограничений.

Рассмотрим в качестве примера создание таблицы

Студент (ID_студента, ФИО, Специальность, Примечание).

Идентификатор студента (целочисленный столбец ID_студента) должен одно­значно идентифицировать запись о студенте, т. е. иметь опреде­ленные и уникальные значения. Таким образом, данный столбец должен быть первичным ключом.

От столбца фио (фамилия, имя и отчество) потребуем, чтобы в нем не было неопределенных значений. Целочисленный столбец Специальность должен со­держать номера специальностей, которые не превышают 12.

Тогда запрос на создание такой таблицы будет иметь вид:

CREATE TABLE Студент (

ID_студента INTEGER PRIMARY KEY, ФИО CHAR(20) NOT NULL,

Специальность INTEGERCHECK(Специальность<12)

Примечание VARCHAR);

Предположим, что данный запрос выполнен. Тогда следующий запрос на добавление новой записи в таблицу студент вызовет сообщение об ошибке и не будет выполнен:

INSERT INTO Студент;

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

А следующий запрос, добавляющий в таблицу первую за­пись и устанавливающий определенные значения для столбцов, не вызовет проблем со стороны СУБД:

INSERT INTO Студент (ID_студента, ФИО, Специальность)

VALUES (1, 'Иванов Иван Иванович', 9);

Попытаемся вслед за данным запросом добавить еще одну запись:

INSERT INTO Студент (ID_студента, ФИО, Специальность)

VALUES (1, 'Петров Петр Петрович', 5);

Данный запрос не будет выполнен из-за нарушения ограниче­ния, наложенного на первый столбец: его значения должны быть не только определенными (отличными от null), но и уни­кальными.

Запись можно добавить, если столбцу ID_студента присвоить, например, значение 2.

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

Домен в реляционной тео­рии связывается с атрибутом отношения и, как таковой, опреде­ляет некоторое ограничение на этот атрибут (атрибут может принимать значения только из этого домена). В SQL можно соз­дать домен, сначала не связанный ни с какими атрибутами (столбцами), определив для него допустимые значения: тип дан­ных и дополнительные ограничения. Затем этот домен можно задать в качестве ограничений для любого столбца в любой таб­лице подобно тому, как задаются типы столбцов. Другими сло­вами, домен можно связать с одним или несколькими столбца­ми различных таблиц.

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

Чтобы создать домен, используется такой синтаксис:

CREATE DOMAIN имяДомена типДанных Ограничения;

Например, таблицу Студент (ID_студента, ФИО, Специальность,Примечание) можно определить традиционным образом:

CREATE TABLE Студент (