Основные команды 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:
-
Указание значений для всех столбцов:
sql INSERT INTO имя_таблицы VALUES (значение1, значение2, значение3, ...);
Порядок значений должен соответствовать порядку столбцов в определении таблицы. -
Указание значений для определенных столбцов:
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 и обеспечить целостность и точность ваших данных. Всегда помните о резервном копировании данных перед выполнением потенциально разрушительных операций.