- •Точные числовые типы:
- •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 primary key,
ФИО CHAR(20) NOT NULL,
Специальность INTEGER CHECK (Специальность < 12),
Примечание VARCHAR);
Однако можно сначала определить домен с именем specDomain, задав для него тип данных и ограничение:
CREATE DOMAIN specDomain INTEGER
CHECK (Специальность < 12);
В определении домена, пока не связанного ни с каким столбцом какой-либо таблицы, задается тип значений домена и ограничение на эти значения.
С учетом того, что домен specDomain создан, определение таблицы Студент можно задать следующим образом:
CREATE TABLE Студент (
Id_студента integer primary key,
ФИО CHAR(20) NOT NULL,
Специальность specDomain,
Примечание VARCHAR );
Рассмотрим еще один пример. Предположим, в нескольких таблицах вашей базы данных имеется столбец с именем Код_продукта и типом данных char(6), значения которого должны начинаться с символа 'А', 'с' или 'х’. Для таких столбцов, раз их несколько, можно предварительно создать общий домен:
CREATE DOMAIN ProdDomain CHAR (6)
CHECK (SUBSTRING (VALUE, 1, 1) IN ('A', 'C, 'X'));
После определения домена можно создать таблицу, использующую этот домен:
CREATE TABLE Товары (
Код_продукта ProdDomain,
Описание VARCHAR );
Ограничения для таблиц
Ограничения на вводимые данные можно назначить не только для отдельных столбцов, но и для таблицы в целом. Это удобно в тех случаях, когда необходимо для нескольких столбцов назначить одинаковые ограничения.
Кроме того, если первичный ключ составной (т. е. состоит из нескольких столбцов), то указать его можно только как ограничение для таблицы, а не для столбца. Все определение ограничения для таблицы указывается после определений столбцов и состоит из ключевого слова constraint, за которым следует выражение, определяющее непосредственно само ограничение.
Основные ограничения для таблицы.
Определение Описание
UNIQUE(списокСтолбцов) Значения в столбцах, указанных в списке, должны быть уникальными
PRIMARY KEY В каждой таблице должен быть только один первичный
(списокСтолбцов) ключ, который определен либо как ограничение для столбца, либо как ограничение для таблицы. Если первичный ключ составной, то он должен быть определен как ограничение для таблицы. В скобках указывается список столбцов, определяющих составной первичный ключ.
CHECK(условие) Позволяет производить проверку условия при вводе данных. Значение будет сохранено , если условие выполняется, в противном случае - нет. В отличие от ограничения для столбца, здесь можно использовать условия, оперирующие значениями различных столбцов таблицы.
FOREIGN KEY… Ограничения типа “внешний ключ”.
REFERENCES …
В следующем примере создается таблица студент (Фамилия, имя, Отчество, специальность, Примечание). Предполагается, что комбинация значений первых трех столбцов должна однозначно идентифицировать запись в таблице, т. е. являться первичным ключом.
CREATE TABLE Студент (
Фамилия CHAR(20),
Имя CHAR(15),
Отчество CHAR(20),
Специальность INTEGER,
Примечание VARCHAR,
CONSTRAINT PRIMARY KEY (Фамилия, Имя, Отчество)
);
Следующие два запроса на добавление записей будут выполнены, поскольку комбинации значений столбцов, определяющих первичный ключ, не содержат null и отличаются друг от друга: