Условие CHECK
Можно устанавливать любое число ограничений для данных, вводимых в таблицы, чтобы, например, ограничить диапазон вводимых данных. Опция CHECK обеспечивает ограничение, которое позволяет установить условие, которому должно удовлетворять значение, вводимое в таблицу, прежде чем оно будет принято. Ограничение CHECK состоит из ключевого слова CHECK, сопровождаемого предложением предиката, который использует указанное поле. Любая попытка модифицировать или вставить значение поля, которое могло бы сделать этот предикат неверным будет отклонена. Например:
CREATE TABLE Student( Kod_stud integer NOT NULL PRIMARY KEY,Fam char (30) NOT NULL UNIQUE,Adres char (50),Ball decimal CHECK ( Ball > 0));
Можно использовать ограничение CHECK чтобы защитить от ввода в поле определенных значений, и таким образом предотвратить ошибку. Например:
CREATE TABLE Student( Kod_stud integer NOT NULL PRIMARY KEY,Fam char (30) NOT NULL UNIQUE,Adres char (50),Ball decimal CHECK ( Ball > 0),Form_ob char(10) CHECK (Form_ob IN (‘Дневная’, ‘Заочная’, ‘Вечерняя’));
Можно также использовать CHECK в качестве табличного ограничения. Это полезно в тех случаях когда необходимо включить более одного поля строки в условие. Например:
CREATE TABLE Student( Kod_stud integer NOT NULL PRIMARY KEY,Fam char (30) NOT NULL UNIQUE,Adres char (50),Ball decimal,Form_ob char(10),CHECK (Ball > 50 OR Form_ob = ‘Дневная’));
Если строка вставляется в таблицу и не предоставляются значения для каждого поля, SQL должен иметь значения по умолчанию для заполнения ими значений полей, не заданных явно в команде; в противном случае команда вставки должна быть отвергнута. Наиболее распространенным значением по умолчанию является значение NULL. Это значение является значением по умолчанию для любого столбца, ели для него не указано ограничение NOT NULL, либо не указано значение, присвоенное по умолчанию. Для назначения иного значения по умолчанию используют ограничение DEFAULT.
CREATE TABLE Student( Kod_stud integer NOT NULL PRIMARY KEY,Fam char (30) NOT NULL UNIQUE,Ball decimal CHECK (Ball > 0),Stip decimal DEFAULT =300);