/* DML - Data Manipulation Language (язык манипулирования данными) */
SELECT, INSERT, UPDATE, DELETE, MERGE
/* DDL - Data Definition Language (язык описания данных) */
CREATE, ALTER, DROP, RENAME, TRUNCATE
/* TCL - Transaction Control Language (контроль транзакций) */
COMMIT, ROLLBACK, SAVEPOINT
/* DCL - Data Control Language */
GRANT, REVOKESELECT — базовая выборка
SELECT * FROM tableINSERT — Вставка данных в таблицу
INSERT INTO tableName (column1, column2, ...) VALUES (value1, value2, ...);
/* Для переноса данных из одной таблицы в другую */
INSERT INTO targetTable (column1, column2, ...)
SELECT (column1, column2, ...)
FROM sourceTableUPDATE — обновление данных в таблице
UPDATE tableName
SET column1=value1, column2=value2,...
WHERE filterColumn=filterValueDELETE — удаление данных из таблицы
DELETE FROM table WHERE condition
/* Удаление с JOIN из одной таблицы */
DELETE Reservations FROM
Reservations JOIN Rooms ON
Reservations.room_id = Rooms.id
WHERE Rooms.has_kitchen = false;
/* Удаление с JOIN из нескольких таблиц */
DELETE Reservations, Rooms FROM
Reservations JOIN Rooms ON
Reservations.room_id = Rooms.id
WHERE Rooms.has_kitchen = false;MERGE — выбор строк из одного или нескольких источников для обновления или вставки в таблицу или представление. Вы можете указать условия, определяющие, следует ли обновлять или вставлять данные в целевую таблицу или представление.
Следующий оператор сравнивает содержимое people_target и people_source с помощью столбца person_id. Значения в таблице people_target обновляются при совпадении в таблице people_source.
MERGE INTO people_target pt
USING people_source ps
ON (pt.person_id = ps.person_id)
WHEN MATCHED THEN UPDATE
SET pt.first_name = ps.first_name,
pt.last_name = ps.last_name,
pt.title = ps.title;Оптимизатор запросов СУБД MySQL автоматически использует оператор TRUNCATE, если оператор DELETE не содержит условия WHERE или конструкции LIMIT
TRUNCATE — удаляет данные внутри таблицы, но не саму таблицу.
- Не срабатывают триггеры, в частности, триггер удаления
- Удаляет все строки в таблице, не записывая при этом удаление отдельных строк данных в журнал транзакций
- Сбрасывает счётчик идентификаторов до начального значения
- Чтобы использовать, необходимы права на изменение таблицы
ORDER BY — используется для упорядочивания данных.
Работает после основной выборки, ASC — по возрастанию (дефолт), DESC — по убыванию
Может быть применен к нескольким атрибутам таблицы
NULL — означает «нет данных», «нет значения». Можно считать что null это непригодные данные для вычислений.
Функция COALESCE возвращает первый аргумент, который не равняется NULL.
SELECT COALESCE(NULL, 1, 2, 3); -> Вернет 1Функция NULLIF возвращает NULL, если два аргумента равны
SELECT NULLIF('Hello', 'Hello'); -> вернет nullлюбые прямые сравнения с null вернут false а вычисления всегда null
если нам надо заменить в выборке null на что то другое то
SELECT COALESCE(price, 0) FROM products;Как можно проверить, что два столбца имеют одинаковые значения, включая NULL
SELECT FROM users WHERE name IS NOT DISTINCT FROM address