Menu

Команды SQL: список основных операторов SQL с примерами

Команды SQL, которые нужны каждый день, сгруппированные по назначению (DDL, DML, DQL и TCL), и к каждой пример, который можно запустить в SQLite.

На этой странице есть исполняемые редакторы: меняйте, запускайте и сразу видите результат.

Команды SQL в одной таблице

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

КомандаГруппаЧто делает
CREATE TABLEDDLСоздаёт новую таблицу и её столбцы
ALTER TABLEDDLДобавляет или переименовывает столбец, переименовывает таблицу
DROP TABLEDDLУдаляет таблицу вместе со всеми строками
INSERTDMLДобавляет новые строки
UPDATEDMLИзменяет значения в существующих строках
DELETEDMLУдаляет строки
SELECTDQLЧитает строки, фильтрует их через WHERE и сортирует через ORDER BY
BEGIN, COMMIT, ROLLBACKTCLОбъединяет изменения, чтобы они выполнились или отменились вместе

DDL означает data definition language (язык определения данных), DML означает data manipulation language (язык манипулирования данными), DQL означает data query language (язык запросов), а TCL означает transaction control language (язык управления транзакциями). Важнее названий само разделение: DDL меняет форму базы данных, DML меняет её содержимое.

CREATE TABLE: создать таблицу

CREATE TABLE задаёт имя таблицы и перечисляет её столбцы с типами и правилами. Всем остальным командам на этой странице нужна таблица, с которой они будут работать.

На странице про CREATE TABLE разобраны правила вроде NOT NULL, UNIQUE и DEFAULT.

INSERT: добавить строки

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

Столбец id заполнился сам: INTEGER PRIMARY KEY получает следующий номер, если вы его не указали. Подробнее на странице INSERT.

SELECT: прочитать строки

SELECT это команда, которую вы будете писать чаще всего. Выберите столбцы, отфильтруйте строки через WHERE и отсортируйте их через ORDER BY.

Возвращаются только строки, прошедшие проверку WHERE, и первой идёт самая высокая оценка. Подробности на страницах основы SELECT и WHERE.

UPDATE: изменить строки

UPDATE записывает новые значения в уже существующие строки. Какие строки менять, решает условие WHERE; если его не указать, изменятся все строки.

Если вы не уверены, каким строкам соответствует условие WHERE, сначала выполните его как SELECT. На странице UPDATE есть другие приёмы.

DELETE: удалить строки

DELETE FROM удаляет строки, которые подходят под условие WHERE. Как и UPDATE, без условия команда затрагивает все строки.

Строки Chen больше нет, остальные не тронуты. См. DELETE.

ALTER TABLE и DROP TABLE: изменить или удалить таблицу

ALTER TABLE меняет существующую таблицу, не теряя её строк. DROP TABLE удаляет таблицу полностью.

Новый столбец в существующих строках содержит NULL, пока вы его не заполните. На странице ALTER и DROP TABLE перечислено, что разрешает SQLite.

JOIN: объединить таблицы

JOIN читает строки сразу из двух таблиц, сопоставляя их по общему столбцу.

У Boris нет записей о курсах, поэтому INNER JOIN его не включает. LEFT JOIN оставил бы его с пустым курсом.

GROUP BY: подвести итоги по группам

GROUP BY сворачивает строки с одинаковым значением в одну строку, а агрегатная функция вроде COUNT или AVG подводит итог по каждой группе.

Подробнее на страницах агрегатные функции и GROUP BY и HAVING.

BEGIN, COMMIT и ROLLBACK: объединить изменения

Транзакция заставляет несколько изменений считаться одним. COMMIT сохраняет их все, ROLLBACK отменяет их все.

Перевод был зафиксирован, а второе изменение откатилось, поэтому у Ada в итоге 70, а у Boris 80. Когда нужны транзакции, объясняет страница Транзакции.

Чем отличается SQLite

Команды на этой странице относятся к стандартному SQL, и всё, что вы изучите здесь, пригодится в MySQL и PostgreSQL. Но запускаемые примеры написаны для SQLite, и в больших СУБД меняются три детали:

  • Список таблиц. Примеры читают sqlite_master, собственную таблицу схемы SQLite. В MySQL для этого есть SHOW TABLES, а в PostgreSQL представление information_schema.tables (или \dt в psql).
  • Автоматические id. В SQLite столбец, объявленный как INTEGER PRIMARY KEY, сам нумерует новые строки, поэтому в примерах с INSERT столбец id пропущен. В MySQL столбцу нужен AUTO_INCREMENT, а в PostgreSQL столбец идентичности (GENERATED BY DEFAULT AS IDENTITY) или SERIAL.
  • Права и изменения схемы. В SQLite нет GRANT и REVOKE, потому что база SQLite представляет собой один файл без учётных записей, а её ALTER TABLE не умеет менять тип столбца.

Часто задаваемые вопросы

Какие команды SQL основные?

Пять команд покрывают большую часть повседневной работы: CREATE TABLE создаёт таблицу, INSERT добавляет строки, SELECT читает их, UPDATE изменяет, а DELETE удаляет. Следом идут ALTER TABLE, DROP TABLE, JOIN, GROUP BY и команды транзакций BEGIN, COMMIT и ROLLBACK.

Чем DDL отличается от DML?

DDL (язык определения данных) меняет структуру базы данных: CREATE, ALTER и DROP. DML (язык манипулирования данными) меняет строки внутри таблиц: INSERT, UPDATE и DELETE. SELECT только читает данные, поэтому его часто выделяют отдельно как DQL.

Важен ли регистр в командах SQL?

Нет. SELECT, select и Select работают одинаково. Писать ключевые слова заглавными буквами принято для того, чтобы они выделялись на фоне имён таблиц и столбцов. А вот текст в кавычках сравнивается точно, поэтому в SQLite 'Ada' и 'ada' это разные строки, если вы не попросите сравнение без учёта регистра.

Работают ли эти команды так же в MySQL и PostgreSQL?

Эти операторы относятся к стандартному SQL и значат одно и то же во всех трёх СУБД, так что всё, что вы изучите здесь, пригодится и там. Но запускаемые примеры написаны для SQLite: список таблиц здесь читается из sqlite_master, для автоматических id в MySQL нужен AUTO_INCREMENT, а в PostgreSQL столбец идентичности, и в SQLite нет GRANT и REVOKE.

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ