docs »
Оператор создает таблицу
CREATE
[TEMP | TEMPORARY] TABLE [IF NOT EXISTS]
[<название БД>.]<название таблицы>
(
<название поля> [<тип поля>] [<опции>],
...,
[<дополнительные опции>])
TEMP, TEMPORARY - временная таблица
IF NOT EXISTS - если таблица уже существует, то создавать таблицу заново не нужно
int - целое число
smalint - целое число
integer - целое число
numeric - целое число
dec - число
decimal - число
double - число
double - precision число
float - число
real - число
char(num) - строка, num - max количесвто символов, дефолтное значение 1
varchar(num) - строка переменной длины, num - max количесвто символов, дефолтное значение зависит от БД
date - дата
CHECK(<условие>) - значение, вставляемое в поле, должно удовлетворять условию
BINARY - значение по умолчанию
NOCASE - без учета регистра
RTRIM
CURRENT_TIME - текущее время UTC в формате чч:мм:сс
CURRENT_DATE - текущая дата UTC в формате гггг-мм-дд
CURRENT_TIMESTAMP - текущая дата и время UTC в формате гггг-мм-дд чч:мм:сс
NOT NULL [<обработка ошибок>] - поле обязательно должно иметь значение при вставке
PRIMARY KEY [ASC | DESC] [<обработка ошибок>] [AUTOINCREMENT] - поле является первичным ключом таблицы.
UNIQUE [<обработка ошибок>] - поле может содержать только уникальные значения
дополнительные опции - задают дополнительные опции
CHECK(<условие>) - значение должно удовлетворять указанному значению
PRIMARY KEY (<список полей через запятую>) [<обработка ошибок>] - позволяет задать первичный клч для нескольких полей
UNIQUE (<список полей через запятую>) [<обработка ошибок>] - указывает, что заданные поля могут содержать только уникальные значения
Необязательный параметр <обработка ошибок> задает способ разрешения конфликтных ситуации. Формат конструкции ON CONFLICT <алгоритм>. Алгоритмы:
ABORT - при ошибке, аннулируются все изменения и выводится сообщение об ошибке
FAIL - при ошибке, изменения сохраняются, выполнение команды прерывается и выводится сообщение об ошибке
IGNORE - ошибка игнорируется
при нарушении условия UNIQUE существующая запись удаляется, а новая вставляется. сообщение об ошибке не выводится
при нарушении условия NOT NULL, значение NULL заменяется значением по умолчанию, а если он не задан то выполняется алгоритм ABORT
если нарушено условие CHECK, применяется алгоритм IGNORE
ROLLBACK - при ошибке, транзакция завершается с откатом всех изменений, дальнейшее выполнение прерывается и выводится сообщение об ошибке. Если активной транзакций нет, то используется алгоритм ABORT
CREATE TABLE table (
snum int
, sname char(10)
, sname char(10) DEFAULT='123'
, snum1 integer UNIQUE
, snum2 integer NOT NULL
, snum3 integer PRIMARY KEY
, snum4 integer REFERENCES table1
, comm decimal CHECK(comm<1)
, comm1 decimal CHECK(comm in (1,2,3,4))
-- вариант определения уникальных полей, уникальность смотрится по комбинации по полям
UNIQUE(snum2, snum3),
-- аналогично unique
PRIMARY KEY(snum2, snum3)
-- аналогично unique
FOREIGN KEY (snum) REFERENCES Salespeople
)
Оператор создает таблицу индексов
CREATE [UNIQUE] INDEX <таблицаИндексов> ON <таблица>(<столбец>)