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

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

Search Icon

Перед прохождением раздела по SQL очень желательно пройти предыдущий раздел по базам данных чтобы всё было понятно 😉

Команды работы с БД делятся на группы. Рассмотрим группу DDL.

В нее входят команды определения структуры данных в БД. Точнее говоря команды для создания таблиц и удаления.

Создать таблицу можно командой create table, удалить drop table.

Запрос для создания таблицы с продуктами выглядит так:

# Комментарии в SQL это два прочерка “--” или “#” # Создаем таблицу с именем products CREATE TABLE `product` ( # Здесь в скобочках команды CREATE TABLE # определяем атрибуты таблицы, в которые # потом будем записывать данные. # Добавляем атрибут `id`. В столбце этого # атрибута будут храниться ключи продуктов. # Ключи будут числового типа BIGINT. # В скобках после типа всегда указывается # количество символов. То есть максимум # число может содержать 20 цифр. # С помощью NOT NULL указываем, что столбец # не может содержать пустых значений. # С помощью AUTO_INCREMENT указываем, что # при добавлении новой строки в таблицу # не нужно будет вписывать значение в этот столбец вручную # вместо этого будет автоматически увеличиваться # последнее значение, которое присутствовало на единицу # значение, которое присутствовало в этом # столбце перед добавлением новой строки, # и получившееся увеличенное значение будет # ключом новой добавляемой строки. `id` BIGINT(20) NOT NULL AUTO_INCREMENT, # Добавим атрибут `name` – будут храниться # наименования продуктов. VARCHAR значит, что # этот атрибут будет хранить строковые # значения. `name` VARCHAR(255) DEFAULT NULL, # цена продукта. DECIMAL – дробное значение `unit_price` DECIMAL(13,2) DEFAULT NULL, # и т.д. `description` VARCHAR(255) DEFAULT NULL, `additional_info` VARCHAR(255) DEFAULT NULL, `rating` DECIMAL(4,2) DEFAULT NULL, `listings_amount` INT(11) DEFAULT NULL, `image_url` VARCHAR(255) DEFAULT NULL, `is_active` BIT DEFAULT 1, `units_in_stock` INT(11) DEFAULT NULL, `date_created` DATETIME DEFAULT NULL, `last_updated` DATETIME DEFAULT NULL, # С помощью PRIMARY KEY указываем, какой # атрибут будет ключом в таблице. PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT = 1;

Теперь давайте используем этот запрос чтобы создать таблицу с продуктами.

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

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

Воспользуемся таким запросом для создания таблицы с категориями (здесь ничего нового):

CREATE TABLE `product_category` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `category_name` VARCHAR(255) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT = 1;

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

CREATE TABLE `product` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) DEFAULT NULL, `unit_price` DECIMAL(13,2) DEFAULT NULL, `description` VARCHAR(255) DEFAULT NULL, `additional_info` VARCHAR(255) DEFAULT NULL, `rating` DECIMAL(4,2) DEFAULT NULL, `ratings_amount` INT(11) DEFAULT NULL, `image_url` VARCHAR(255) DEFAULT NULL, `active` BIT DEFAULT 1, `units_in_stock` INT(11) DEFAULT NULL, `date_created` DATETIME DEFAULT NULL, `last_updated` DATETIME DEFAULT NULL, # Добавляем столбец внешнего ключа. `category_id` BIGINT(20) NOT NULL, # В category_id будут храниться ключи # из таблицы с категориями. # Таким образом мы связываем строки двух таблиц. PRIMARY KEY (`id`), # Связанный столбец `category_id` в этой таблице # с ключом `id` из таблицы `product_category` # с помощью конструкции FOREIGN KEY … REFERENCES … FOREIGN KEY (`category_id`) REFERENCES `product_category` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT = 1;

Теперь мы можем вводить SQL команды для работы с СУБД.

Давайте воспользуемся этими запросами.

Создадим таблицу категорий.

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

Теперь при заполнении таблицы продуктов в столбец category_id нужно будет для каждого продукта писать ключ соответствующей ему категории из другой таблицы. Это увидим в следующем уроке.

DML команды в SQL

Освойте DML команды SQL: SELECT, INSERT, UPDATE, DELETE. Практическое руководство по манипуляции данными в таблицах с примерами запросов и WHERE-условиями.
Time to read: 13

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

Изучите агрегатные функции SQL: SUM(), AVG(), COUNT(), MIN(), MAX(). Узнайте, как применять их для анализа данных в столбцах таблиц с примерами запросов.
Time to read: 11

Group By и Having в SQL

Группировка данных в SQL: как GROUP BY и HAVING помогают агрегировать и фильтровать результаты. Практические примеры с COUNT и условиями выборки.
Time to read: 15