- •Точные числовые типы:
- •Integer;
- •Приблизительные числовые типы:
- •Is null;
- •Is null
- •1. Строковые функции
- •5.1. Подзапросы
- •Intersect
- •Intersect corresponding (id_компонента, Тип_компонента)
- •Insert into Клиенты (Имя, Адрес, Телефон)
- •Insert into Клиенты (Имя, Адрес, Телефон)
- •Id_студента integer,
- •Id_студента integer primary key,
- •Id_студента integer primary key,
- •Insert into Студент (Фамилия, Имя, Отчество, Специальность) values ('Петров', 'Петр', 'Петрович', 5);
- •Insert into Студент (Фамилия, Имя, Отчество, Специальность) values ('Петров', 'Петр', 'Иванович', 5);
- •Id_заказа integer,
- •Id_клиента integer,
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 Студент (