Основные команды DDL и DML: CREATE, SELECT, UPDATE, DELETE

Изучите основные команды MySQL DDL и DML: CREATE TABLE, INSERT, SELECT, UPDATE и DELETE.

Основные команды DDL и DML: CREATE, SELECT, UPDATE, DELETE

Работа с MySQL обычно начинается с двух задач: определения таблиц и работы со строками внутри них. Основные команды DDL и DML — это то, как вы делаете это безопасно.

Команды DDL определяют объекты базы данных, такие как таблицы. Команды DML вставляют, читают, обновляют и удаляют данные таблиц. В приведенных ниже примерах используется небольшая таблица products, чтобы вы могли увидеть команды в контексте.

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

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

Синтаксис CREATE TABLE

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

CREATE TABLE table_name (
    column1 datatype constraints,
    column2 datatype constraints,
    column3 datatype constraints,
    ...
);

table_name должно быть уникальным в текущей базе данных. Каждый столбец должен иметь имя, тип данных и необязательные ограничения, такие как NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY или DEFAULT value.

Пример 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. Указание значений для всех столбцов:

    INSERT INTO table_name
    VALUES (value1, value2, value3, ...);
    

    Порядок значений должен соответствовать порядку столбцов в определении таблицы.

  2. Указание значений для определенных столбцов:

    INSERT INTO table_name (column1, column2, column3, ...)
    VALUES (value1, value2, value3, ...);
    

    Обычно это предпочтительнее, так как более читаемо и менее подвержено ошибкам при изменении структуры таблицы.

Пример INSERT

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

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

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

-- Вставка нескольких строк одновременно
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES 
('Ergonomic Mouse', 'Electronics', 25.00, 120),
('Desk Lamp', 'Home Goods', 45.00, 75);

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

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

Синтаксис SELECT

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

Примеры SELECT

-- Выбрать все столбцы для всех продуктов
SELECT *
FROM products;

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

-- Выбрать продукты в категории 'Electronics'
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 table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
  • table_name: Таблица, содержащая записи для обновления.
  • SET column1 = value1, ...: Указывает, какие столбцы обновлять и их новые значения.
  • WHERE condition: Критически важно! Это предложение определяет, какие строки будут обновлены. Если его опустить, будут обновлены все строки в таблице.

Примеры UPDATE

-- Увеличить цену 'Laptop Pro' на 50
UPDATE products
SET price = price + 50.00
WHERE product_name = 'Laptop Pro';

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

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

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

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

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

Синтаксис DELETE

DELETE FROM table_name
WHERE condition;
  • table_name: Таблица, из которой нужно удалить строки.
  • WHERE condition: Критически важно! Это предложение определяет, какие строки удалить. Если его опустить, будут удалены все строки в таблице.

Примеры DELETE

-- Удалить продукт с именем 'Desk Lamp'
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 и обеспечить целостность и точность ваших данных. Всегда помните о резервном копировании данных перед выполнением потенциально разрушительных операций.