FoxelyssFoxelyss
Vasulio-crtVasulio-crt
Время чтения: 4 min
Изменено:18.09.2026, 19:57:57

Data Definition Language - позволяет создавать объекты

Код SQL читается программой сверху вниз, слева направо. Команда читается до ;, поэтому вместо пробелов можно также ставить переносы строк, если так удобнее.

Также ключевые слова и типы данных можно писать и заглавными, и прописными буквами, а вот идентификаторы нужно писать чётко, как задавали командами.

Идентификатор — название чего-либо в БД

Команда — некоторое ключевое слово

Оператор — ключевое слово, которое расширяет функционал команды.

Пока что нам нужны ИНДФ:

  1. Таблица - ИДТ
  2. Столбца - ИДС

Главные правила:

  1. Максимальная длина 128 символов
  2. ИНДФ не начинается с числа
  3. ИНДФ не содержит пробелов (а если содержит, то пишется только в двойных кавычках)

Important

"" — определяет границы одного ИНДФ

Виды таблиц:

  1. Исходные (пользовательские)
  2. Серверные (системные, хранят служебную информацию, пользователей, привилегии и так далее).
  3. Временные (результирующие, создаются в рамках запроса).

Комментарии создаются двумя путями:

-- Вот так (однострочный)

/*(многострочный)
	И вот так
*/

Данные:

Виды данных

  1. Числовые
  2. Символьные

Типы данных

  1. Целочисленные
  2. С плавающей точкой
  3. Символьные
  4. Логические
  5. Дата/Время

Виды типов данных

  • Стандартные(int, float,bool,text)
  • Кастомные (money, bigint (10+ цифр), smallint (меньше 10 цифр), name, timestamp)

Некоторые из типов данных:

Больше типов данных 🔗

ИМЯПСЕВДОНИМЧТО ХРАНИТ?
smallintint2знаковое двухбайтное целое
integerint, int4знаковое четырёхбайтное целое (примерно 10 цифр максимум)
bigintint8знаковое целое из 8 байт
smallserialserial2двухбайтное целое с автоувеличением
serialserial4четырёхбайтное целое с автоувеличением
bigserialserial8восьмибайтное целое с автоувеличением
booleanboolлогическое значение (true/false)
bit(N)битовая строка фиксированной длины N
varbit(N)bit varying(N)битовая строка переменной длины
char(N)character(N)символьная строка фиксированной длины N, но до 255 символов
varchar(N)character varying(N)символьная строка переменной длины N, можно более 256 символов
textТекст, поддерживает самую большую длину (символьная строка переменной длины)
realfloat4число одинарной точности с плавающей точкой (4 байта)
floatdouble precision, float8число двойной точности с плавающей точкой (8 байт), ограничение задает количество цифр после запятой(точность).
numeric (p, s)decimal (p, s)вещественное число заданной точности
moneyденежная сумма
dateкалендарная дата (год, месяц, день), не имеет ограничений на тип данных
timeвремя суток (без часового пояса)
timestampдата и время (без часового пояса)
uuidуниверсальный уникальный идентификатор
jsonтекстовые данные JSON
xmlXML-данные

Ограничение на поле — это ограничение, накладываемое во время объявления типов данных при создании столбцов.

Для символьных это длина

varchar(30) -- 30 максимум
char(40) -- 40 максимальная длина

Если не указать длину, то будет 1!

char=char(1)

С плавающей точкой точность

float(1)
float(3)

Если не ограничивать по дефолту стоит максимальная точность

У целочисленных типов данных нет ограничений на поле, также и на битовые, дата/время.

Команды:

create table - создание таблицы

Общий вид:

create table ИДТ(
ИДС тип_данных ограничения_на_поля... ,
ИДС тип_данных ограничения_на_поля... ,
ИДС тип_данных ограничения_на_поля... ,
ИДС тип_данных ограничения_на_поля...
);

Обращаю внимание!

Запятая после объявления последнего столбца никогда не должна ставиться!

Пример:

create table Employees(
id serial primary key,
surname char(25),
name char(15) not null,
age int check(age > 16)
);

Ограничения на столбец:

  1. null - может быть пустым(содержать null), по умолчанию
  2. not null - не может быть пустым, должно быть заполнено
  3. unique - каждое значение в столбце уникально, не может повторяться
  4. primary key - объявление первичного ключа, объединяет в себе unique и not null
  5. check - проверка на удовлетворение условию.
  6. cascade - это автоматические изменения, внесение, удаление данных, происходящее по связям.
  7. index
  8. references
  9. и так далее.
Primary key:
  1. Объявляется внутри строки id serial primary key
  2. Отдельным столбцом primary key(ИДС)
Foreign Key:
  1. Объявляется внутри строки ‘ИДС Тип_данных references ИДТ(ИДС)
  2. Отдельным столбцом ИДС references ИДТ(ИДС)
cascade - это автоматическое изменение, внесение, удаление данных, происходящее по связям:

Бывает

  1. на внесение ‘id serial cascade insert
  2. на обновление ‘id serial cascade update
  3. на удаление ‘id serial cascade delete
  4. Сразу несколько ‘id serial cascade insert, update ...
Check - правило на столбец:

Check - правило на столбец, которое позволяет ограничить какое-либо значение, которое будет вноситься

Общий вид: check (ИДС вид-усл значение)

Пример: check(age > 17)

Виды условий:

  1. Сравнительные: < > >= <= = !=, где >= и <= — это условия, где значение используется включительно, != — неравенство, ” — одинарные кавычки позволяют искать по символам, например, name = ‘Степан’

alter table - изменение таблицы

Общий вид: alter table ИДТ оператор

ДействиеОператор
Добавление столбцаadd column ИДС тип_данных ограничения
Удаление столбцаdrop column ИДС
Добавление ограничений на столбецadd constraint ИДС ограничения
Удаление всех ограничений на столбецdrop constraint ИДС
Переименованиеrename ИДС to ИДС

Примеры:

alter table test
add RegistrDate date not null;

alter table test
add constraint RegistrDate unique;

alter table test
drop constraint RegistrDate;

alter table test
drop column RegistrDate;

Нюансы:

  1. Все новые столбцы будут добавлены в конец таблицы
  2. Можно добавлять несколько столбцов за 1 раз через запятую
  3. Если есть хотя бы одна строка данных, то добавить ограничение not null не получится

drop table - удаление таблицы

Общий вид:

drop table ИДС 

Оператор команды есть только один - cascade, для удаление связей между таблицами(Foreign Key)

Пример:

drop table test