DDL в SQL: создание и удаление таблиц
Last updated: 8 мая 2025 г.Командой create database
создадим базу данных с именем ecommerce, то есть интернет магазин.

Перед прохождением раздела по SQL очень желательно пройти предыдущий раздел по базам данных чтобы всё было понятно 😉
Команды работы с БД делятся на группы. Рассмотрим группу DDL
.
В нее входят команды определения структуры данных в БД. Точнее говоря команды для создания таблиц и удаления.
Создать таблицу можно командой create table
, удалить – drop table
.
Запрос для создания таблицы с продуктами выглядит так:
1# Комментарии в SQL это два прочерка "–" или "#"
2
3# Создаем таблицу с именем products
4
5CREATE TABLE `product` (
6 # Здесь в скобочках команды CREATE TABLE
7 # определяем атрибуты таблицы, в которые
8 # потом будем записывать данные.
9
10 # Добавляем атрибут `id`. В столбце этого
11 # атрибута будут храниться ключи продуктов.
12 # Ключи будут числового типа BIGINT.
13 # В скобках после типа всегда указывается
14 # количество символов. То есть максимум
15 # число может содержать 20 цифр.
16 # С помощью NOT NULL указываем, что столбец
17 # не может содержать пустых значений.
18 # С помощью AUTO_INCREMENT указываем, что
19 # при добавлении новой строки в таблицу
20 # не нужно будет вписывать значение в этот столбец вручную
21 # вместо этого будет автоматически увеличиваться
22 # последнее значение, которое присутствовало на единицу
23 # значение, которое присутствовало в этом
24 # столбце перед добавлением новой строки,
25 # и получившееся увеличенное значение будет
26 # ключом новой добавляемой строки.
27 `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
28
29 # Добавим атрибут `name` – будут храниться
30 # наименования продуктов. VARCHAR значит, что
31 # этот атрибут будет хранить строковые
32 # значения.
33 `name` VARCHAR(255) DEFAULT NULL,
34
35 # цена продукта. DECIMAL – дробное значение
36 `unit_price` DECIMAL(13,2) DEFAULT NULL,
37
38 # и т.д.
39 `description` VARCHAR(255) DEFAULT NULL,
40 `additional_info` VARCHAR(255) DEFAULT NULL,
41 `rating` DECIMAL(4,2) DEFAULT NULL,
42 `listings_amount` INT(11) DEFAULT NULL,
43 `image_url` VARCHAR(255) DEFAULT NULL,
44 `is_active` BIT DEFAULT 1,
45 `units_in_stock` INT(11) DEFAULT NULL,
46 `date_created` DATETIME DEFAULT NULL,
47 `last_updated` DATETIME DEFAULT NULL,
48
49 # С помощью PRIMARY KEY указываем, какой
50 # атрибут будет ключом в таблице.
51 PRIMARY KEY (`id`)
52)
53
54ENGINE=InnoDB AUTO_INCREMENT = 1;
Теперь давайте используем этот запрос чтобы создать таблицу с продуктами.

Теперь удалим таблицу.

Давайте теперь сначала создадим таблицу с категориями продуктов, а потом таблицу продуктов чтобы потом соединить их связью Один ко Многим с помощью внешнего ключа.
Воспользуемся таким запросом для создания таблицы с категориями (здесь ничего нового):
1CREATE TABLE `product_category` (
2 `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
3 `category_name` VARCHAR(255) NULL DEFAULT NULL,
4 PRIMARY KEY (`id`)
5)
6ENGINE=InnoDB AUTO_INCREMENT = 1;
Теперь воспользуемся таким запросом чтобы опять создать таблицу с продуктами, но уже со столбцом внешнего ключа и конструкцией для связывания таблиц с его помощью.
1CREATE TABLE `product` (
2 `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
3 `name` VARCHAR(255) DEFAULT NULL,
4 `unit_price` DECIMAL(13,2) DEFAULT NULL,
5 `description` VARCHAR(255) DEFAULT NULL,
6 `additional_info` VARCHAR(255) DEFAULT NULL,
7 `rating` DECIMAL(4,2) DEFAULT NULL,
8 `ratings_amount` INT(11) DEFAULT NULL,
9 `image_url` VARCHAR(255) DEFAULT NULL,
10 `active` BIT DEFAULT 1,
11 `units_in_stock` INT(11) DEFAULT NULL,
12 `date_created` DATETIME DEFAULT NULL,
13 `last_updated` DATETIME DEFAULT NULL,
14 # Добавляем столбец внешнего ключа.
15 `category_id` BIGINT(20) NOT NULL,
16 # В category_id будут храниться ключи
17 # из таблицы с категориями.
18 # Таким образом мы связываем строки двух таблиц.
19 PRIMARY KEY (`id`),
20 # Связанный столбец `category_id` в этой таблице
21 # с ключом `id` из таблицы `product_category`
22 # с помощью конструкции FOREIGN KEY … REFERENCES …
23 FOREIGN KEY (`category_id`) REFERENCES `product_category` (`id`)
24) ENGINE=InnoDB AUTO_INCREMENT = 1;
Теперь мы можем вводить SQL команды для работы с СУБД.
Давайте воспользуемся этими запросами.
Создадим таблицу категорий.

Создадим таблицу продуктов, которая будет связана с таблицей категорий с помощью внешнего ключа.

Теперь при заполнении таблицы продуктов в столбец category_id нужно будет для каждого продукта писать ключ соответствующей ему категории из другой таблицы. Это увидим в следующем уроке.
Следующие уроки
DML команды в SQL
13
мин.
Агрегатные функции в SQL
11
мин.
Group By и Having в SQL
15
мин.