CREATE

CREATE TABLE

Оператор создает таблицу

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(<условие>) - значение, вставляемое в поле, должно удовлетворять условию

    • COLLATE <функция> - задает функцию сравнения для класса TEXT. В качестве функции можно задать следующие функции:
      • BINARY - значение по умолчанию
      • NOCASE - без учета регистра
      • RTRIM
    • DEFAULT <значение> - значение по умолчанию для поля. в качестве значения можно укзать и константы:
      • 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 - ошибка игнорируется

  • REPLACE
    • при нарушении условия 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 INDEX

Оператор создает таблицу индексов

CREATE [UNIQUE] INDEX <таблицаИндексов> ON <таблица>(<столбец>)