Основные команды DDL и DML: Create, Select, Update, Delete

Освойте основные операции с базами данных MySQL с помощью этого практического руководства по командам DDL и DML. Узнайте, как определять структуры таблиц с помощью `CREATE TABLE` и манипулировать данными с помощью `INSERT`, `SELECT`, `UPDATE` и `DELETE`. Эта статья содержит понятный синтаксис, реальные примеры и важные советы для эффективного управления данными в MySQL.

38 просмотров

Основные команды DDL и DML: Создание, Выборка, Обновление, Удаление

Работа с базами данных, особенно реляционными, такими как MySQL, по существу включает определение структуры ваших данных и последующее взаимодействие с этими данными. Этот процесс обычно делится на две основные категории SQL-команд: язык определения данных (DDL) и язык манипулирования данными (DML). Команды DDL используются для определения и управления объектами базы данных, такими как таблицы, в то время как команды DML используются для вставки, извлечения, изменения и удаления записей в этих таблицах.

В этом руководстве мы рассмотрим наиболее важные команды MySQL DDL и DML: CREATE TABLE для определения структур данных и INSERT, SELECT, UPDATE и DELETE для манипулирования самими данными. Освоение этих команд является важным шагом для всех, кто хочет эффективно управлять базой данных MySQL и использовать ее.

Язык определения данных (DDL): Создание таблиц

Команды DDL касаются схемы и структуры объектов вашей базы данных. Самая фундаментальная команда DDL для хранения данных — это CREATE TABLE, которая позволяет определить шаблон (чертеж) для ваших данных.

Синтаксис CREATE TABLE

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

CREATE TABLE имя_таблицы (
    столбец1 тип_данных ограничения,
    столбец2 тип_данных ограничения,
    столбец3 тип_данных ограничения,
    ...
);
  • имя_таблицы: Имя, которое вы хотите присвоить таблице. Оно должно быть уникальным в пределах базы данных.
  • имя_столбца: Имя каждого отдельного поля в таблице.
  • тип_данных: Указывает тип данных, который будет храниться в столбце (например, INT для целых чисел, VARCHAR(255) для строк переменной длины, DATE для дат, DECIMAL(10, 2) для точных десятичных чисел).
  • ограничения: Правила, применяемые к столбцу для обеспечения целостности данных. Распространенные ограничения включают:
    • NOT NULL: Гарантирует, что столбец не может содержать значение NULL.
    • UNIQUE: Гарантирует, что все значения в столбце различны.
    • PRIMARY KEY: Комбинация NOT NULL и UNIQUE. Каждая таблица должна иметь первичный ключ для уникальной идентификации каждой строки.
    • FOREIGN KEY: Связывает столбец в одной таблице с первичным ключом другой таблицы, обеспечивая ссылочную целостность.
    • DEFAULT значение: Устанавливает значение по умолчанию для столбца, если значение не указано при вставке.

Пример CREATE TABLE

Давайте создадим простую таблицу products для хранения информации о товарах на складе:

CREATE TABLE products (
    product_id INT AUTO_INCREMENT PRIMARY KEY,
    product_name VARCHAR(100) NOT NULL UNIQUE,
    category VARCHAR(50),
    price DECIMAL(10, 2) NOT NULL,
    stock_quantity INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

В этом примере:
* product_id — это целое число, которое автоматически увеличивается и служит первичным ключом.
* product_name — обязательная строка, которая должна быть уникальной.
* price — обязательное десятичное число.
* stock_quantity по умолчанию равно 0, если не указано.
* created_at записывает временную метку, когда была создана строка.

Язык манипулирования данными (DML): Работа с данными

Команды DML используются для управления записями (строками) в ваших таблицах базы данных. Это наиболее часто используемые команды для повседневных операций с базой данных.

Команда INSERT: Добавление новых данных

Команда INSERT используется для добавления новых строк данных в таблицу.

Синтаксис INSERT

Существует несколько способов использования INSERT:

  1. Указание значений для всех столбцов:
    sql INSERT INTO имя_таблицы VALUES (значение1, значение2, значение3, ...);
    Порядок значений должен соответствовать порядку столбцов в определении таблицы.

  2. Указание значений для определенных столбцов:
    sql INSERT INTO имя_таблицы (столбец1, столбец2, столбец3, ...) VALUES (значение1, значение2, значение3, ...);
    Это, как правило, предпочтительнее, поскольку это более читабельно и менее подвержено ошибкам, если структура таблицы изменится.

Пример INSERT

Используя нашу таблицу products:

-- Вставка значений для всех столбцов (предполагая AUTO_INCREMENT для product_id)
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES ('Ноутбук Pro', 'Электроника', 1200.50, 50);

-- Вставка значений для определенных столбцов
INSERT INTO products (product_name, price)
VALUES ('Механическая клавиатура', 75.99);

-- Вставка нескольких строк одновременно
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES 
('Эргономичная мышь', 'Электроника', 25.00, 120),
('Настольная лампа', 'Товары для дома', 45.00, 75);

Команда SELECT: Извлечение данных

Команда SELECT является краеугольным камнем извлечения данных. Она позволяет запрашивать базу данных и получать конкретные данные на основе различных критериев.

Синтаксис SELECT
SELECT столбец1, столбец2, ...
FROM имя_таблицы
WHERE условие
ORDER BY имя_столбца [ASC|DESC]
LIMIT число;
  • столбец1, столбец2, ...: Столбцы, которые вы хотите извлечь. Используйте * для выбора всех столбцов.
  • FROM имя_таблицы: Таблица, из которой выполняется запрос.
  • WHERE условие: (Необязательно) Фильтрует строки на основе указанного условия. Условия могут включать операторы сравнения (=, !=, >, <, >=, <=), логические операторы (AND, OR, NOT) и сопоставление с шаблоном (LIKE).
  • ORDER BY имя_столбца [ASC|DESC]: (Необязательно) Сортирует результирующий набор по одному или нескольким столбцам. ASC для сортировки по возрастанию (по умолчанию), DESC для сортировки по убыванию.
  • LIMIT число: (Необязательно) Ограничивает количество возвращаемых строк.
Примеры SELECT
-- Выбрать все столбцы для всех продуктов
SELECT *
FROM products;

-- Выбрать только название и цену продуктов
SELECT product_name, price
FROM products;

-- Выбрать продукты в категории 'Электроника'
SELECT *
FROM products
WHERE category = 'Electronics';

-- Выбрать продукты с ценой больше 100, отсортированные по цене по убыванию
SELECT product_name, price
FROM products
WHERE price > 100
ORDER BY price DESC;

-- Выбрать топ-5 самых дорогих продуктов
SELECT product_name, price
FROM products
ORDER BY price DESC
LIMIT 5;

-- Выбрать продукты, название которых начинается с 'L'
SELECT *
FROM products
WHERE product_name LIKE 'L%';

Команда UPDATE: Изменение существующих данных

Команда UPDATE позволяет изменять существующие записи в таблице.

Синтаксис UPDATE
UPDATE имя_таблицы
SET столбец1 = значение1, столбец2 = значение2, ...
WHERE условие;
  • имя_таблицы: Таблица, содержащая записи для обновления.
  • SET столбец1 = значение1, ...: Указывает, какие столбцы обновить и какие новые значения им присвоить.
  • WHERE условие: Критически важно! Этот раздел определяет, какие строки будут обновлены. Если его опустить, будут обновлены все строки в таблице.
Примеры UPDATE
-- Увеличить цену 'Ноутбук Pro' на 50
UPDATE products
SET price = price + 50.00
WHERE product_name = 'Laptop Pro';

-- Обновить категорию и количество на складе для 'Механическая клавиатура'
UPDATE products
SET category = 'Аксессуары', stock_quantity = 100
WHERE product_name = 'Mechanical Keyboard';

-- **ПРЕДУПРЕЖДЕНИЕ**: Это обновит цену ВСЕХ продуктов до 10.00
-- UPDATE products
-- SET price = 10.00;

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

Команда DELETE: Удаление данных

Команда DELETE используется для удаления строк из таблицы.

Синтаксис DELETE
DELETE FROM имя_таблицы
WHERE условие;
  • имя_таблицы: Таблица, из которой нужно удалить строки.
  • WHERE условие: Критически важно! Этот раздел определяет, какие строки удалять. Если его опустить, будут удалены все строки в таблице.
Примеры DELETE
-- Удалить продукт с названием 'Настольная лампа'
DELETE FROM products
WHERE product_name = 'Desk Lamp';

-- Удалить все продукты, у которых закончились запасы (stock_quantity равен 0)
DELETE FROM products
WHERE stock_quantity = 0;

-- **ПРЕДУПРЕЖДЕНИЕ**: Это удалит ВСЕ записи из таблицы 'products'!
-- DELETE FROM products;

Внимание: Подобно UPDATE, пропуск условия WHERE в операторе DELETE является разрушительной операцией, которая удалит все данные из таблицы. Используйте с особой осторожностью.

Резюме

Понимание и эффективное использование команд DDL и DML является основой управления базами данных. CREATE TABLE позволяет определить структуру ваших данных, в то время как INSERT, SELECT, UPDATE и DELETE позволяют вам заполнять, запрашивать, изменять и управлять этими данными.

Практикуя эти команды с четкими условиями WHERE, особенно для UPDATE и DELETE, вы можете заложить прочный фундамент для работы с базами данных MySQL и обеспечить целостность и точность ваших данных. Всегда помните о резервном копировании данных перед выполнением потенциально разрушительных операций.