Топ-100DDL в SQL: создание и удаление таблиц - CodOrbits
LogoCodOrbits

Раздел: SQL

Раздел посвящён языку SQL: создание таблиц, запросы, фильтрация данных и работа с реляционными базами.

Все разделы
Иконка SQL

DDL в SQL: создание и удаление таблиц

Last updated: 8 мая 2025 г.

Командой create database создадим базу данных с именем ecommerce, то есть интернет магазин.

Search Icon

Перед прохождением раздела по 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
мин.

Similar Articles Icon
Divider

Агрегатные функции в SQL

11
мин.

Similar Articles Icon
Divider

Group By и Having в SQL

15
мин.

Similar Articles Icon