Базовые конструкции

/* 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, REVOKE

SELECT — базовая выборка

SELECT * FROM table

INSERT — Вставка данных в таблицу

INSERT INTO tableName (column1, column2, ...) VALUES (value1, value2, ...);

/* Для переноса данных из одной таблицы в другую */
INSERT INTO targetTable (column1, column2, ...)
SELECT      (column1, column2, ...)
FROM        sourceTable

UPDATE — обновление данных в таблице

UPDATE tableName
SET column1=value1, column2=value2,...
WHERE filterColumn=filterValue

DELETE — удаление данных из таблицы

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