Мы собираем файлы cookie и применяемрекомендательные технологии

Основные команды SQL-команды: базовый синтаксис SQL и типы SQL-запросов
  • Разработка

Основные команды SQL и запросы с примерами для каждого разработчика

5

Представьте, что компании нужно работать с гигантской библиотекой клиентской информации. Чтобы быстро находить нужные «книги» и управлять ими, нужен понятный язык. Для самых популярных типов баз данных — реляционных — таким языком стал SQL.

SQL — это универсальный ключ к данным. Простыми словами, SQL — это язык, который помогает «общаться» с сервером и получать из него нужную информацию. Он логичный, мощный и довольно простой, если разобраться.

И это не просто теория: по данным JetBrains, каждый второй разработчик регулярно использует SQL в своих проектах. То есть вы точно не зря его изучаете.

Типы SQL-запросов

Основные SQL-запросы делятся на несколько типов.

DDL — группа команд для управления объектами в таблицах. Нужна для разработки и описания структур баз данных. DDL-запросы предназначены для регулирования расположения информации в БД. К ним относятся:

  • CREATE
  • RENAME
  • DROP
  • ALTER
  • MODIFY

DML — группа команд, которая отвечает за контроль над данными. К этому типу относятся запросы по добавлению, получению, сохранению, обновлению или удалению различных данных из БД. В число DML-запросов входят такие операторы, как:

  • SELECT
  • DELETE
  • UPDATE
  • INSERT

DCL — группа команд, используемых для предоставления разрешений или запретов пользователям БД. К этому типу относятся запросы настройки СУБД:

  • GRANT
  • DENY
  • REVOKE

TCL — группа команд для управления транзакциями. С их помощью можно контролировать изменения в БД (это делают с использованием DML-запросов). При необходимости их объединяют в пакеты транзакций.

  • BEGIN
  • ROLLBACK
  • COMMIT

Базовые команды SQL

С помощью SQL вы можете попросить базу показать нужную информацию, добавить новую запись или даже перестроить целые таблицы.

Что можно делать с помощью базовых команд:

  • Находить нужные данные в огромных таблицах
  • Создавать новые таблицы и структуры
  • Добавлять и обновлять информацию
  • Удалять то, что больше не нужно

Прелесть SQL в том, что его команды выглядят как обычные фразы на английском — они интуитивно понятные и логичные. Это делает работу с данными точнее, а сами базы — защищённее.

Давайте рассмотрим команды, которые нужны чаще всего, — соберём своего рода стартовый набор для комфортной работы с базами данных.

CREATE TABLE

Благодаря CREATE TABLE в БД появляется таблица с необходимым количеством столбцов.

Синтаксис:

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

Например:

CREATE TABLE employee ( employee_id INT PRIMARY KEY, FirstName VARCHAR(200), LastName VARCHAR(200) );

Здесь у нас создалась новая таблица под названием "employee".

SELECT

SELECT применяется для извлечения нужных сведений из обозначенных столбцов, выражений и вычислений, находящихся в БД.

Синтаксис:

SELECT column1, column2, ... FROM table_name;

Например:

SELECT FirstName, LastName FROM clients;

FROM

Этот вспомогательный SQL-оператор используют для указания места (таблица), где будет происходить выборка данных по SELECT-запросу.

Синтаксис:

SELECT column1, column2, ... FROM table_name;

Пример есть выше с SELECT, но его также можно использовать с подзапросом, который приведён в скобках ниже:

SELECT FirstName, LastName FROM (SELECT ...);

WHERE

Оператор WHERE применяют для фильтрации или ограничения затрагиваемых строк. Его используют совместно с командами SELECT, UPDATE и DELETE. Вы указываете условия, которые должны быть истинными, чтобы оператор повлиял на строку.

Синтаксис:

SELECT column1, column2, ... FROM table_name WHERE condition;

Например:

SELECT FirstName, LastName FROM clients WHERE status = 'Active';

Этот запрос покажет всех клиентов, у которых значение статуса равно «Активный». Если строка клиента не равна «Активному», она не будет отображаться.

GROUP BY

Эту команду используют в запросе SELECT для объединения или агрегирования данных в группы.

Синтаксис:

SELECT column1, column2, ... FROM table_name GROUP BY column_name;

Например:

SELECT FirstName, COUNT(*) FROM clients GROUP BY FirstName;

Запрос покажет все значения FirstName и количество этих значений в таблице клиентов.

HAVING

Команда HAVING используется с GROUP BY для фильтрации результатов запроса SELECT после того, как он сгруппирован. Функции похожи на WHERE, однако WHERE работает до группирования данных, а HAVING — после.

Например:

SELECT first_name, COUNT(*) FROM customer GROUP BY first_name HAVING COUNT(*) > 1;

Такая конструкция покажет все значения first_name, а также число их вхождений для тех, количество которых больше 1.

ORDER BY

ORDER BY в SQL используется для указания порядка, в котором должны отображаться результаты запроса SELECT. Разносит информацию по столбцам в нужном виде (например, в порядке возрастания или убывания).

Синтаксис:

SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC;

Пример:

SELECT LastName, FirstName FROM clients ORDER BY FirstName ASC;

При этом будут показаны имена ваших клиентов по алфавиту.

INNER JOIN

При использовании этого SQL-оператора сведения в нескольких таблицах объединяются, после чего отображаются совпадающие в них строки.

Синтаксис:

SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;

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

Например:

SELECT orders.order_id, clients.FirstName FROM clients INNER JOIN orders ON clients.client_id = orders.client_id;

Запрос выявит все идентификаторы заказа и имена клиентов, если они совпадают в обозначенных таблицах. Условие после оператора ON показывает, что нужно выбирать лишь те строки, у которых значение client_id в таблице clients соответствует значению client_id в таблице orders.

LEFT JOIN

Команда обозначает тип соединения, при котором две таблицы связываются вместе. Однако в таблице слева от оператора JOIN выводит на экран все записи, и при наличии совпадений в таблице справа они также отобразятся, в противном случае высветится значение NULL.

Синтаксис:

SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name;

Например:

SELECT orders.order_id, clients.FirstName FROM clients LEFT JOIN orders ON clients.client_id = orders.client_id;

Этот запрос покажет имена всех клиентов, а если они оформили заказы, то и идентификаторы. Если заказа нет, отображается значение NULL.

RIGHT JOIN

Команда обозначает тип соединения, при котором две таблицы связаны. Однако в правой от оператора JOIN таблице будут отображены все записи, и при наличии совпадений в таблице слева они также подтянутся в общий список. В противном случае мы увидим значение NULL.

Синтаксис:

SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;

Например:

SELECT orders.order_id, clients.FirstName FROM clients RIGHT JOIN orders ON clients.client_id = orders.client_id;

Запрос отобразит все заказы, и если есть связанный клиент, то и его имя. Если у заказа нет клиента, выводится значение NULL.

FULL JOIN

FULL JOIN представляет собой симбиоз левого и правого соединения и показывает совпадающие строки между двумя таблицами. Если в одной таблице нет совпадений со строкой из другой, отображается значение NULL. Недоступно в MySQL.

Синтаксис:

SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;

Например:

SELECT orders.order_id, clients.FirstName FROM clients FULL JOIN orders ON clients.client_id = orders.client_id;

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

AS

Ключевое слово AS позволяет задать псевдоним столбцу или таблице.

Псевдоним в качестве заголовка столбца может быть более читабельным:

SELECT COUNT(FirstName) AS count_fn FROM clients;

Также его используют в запросе вместо полного имени таблицы:

SELECT o.order_id, c.FirstName FROM clients AS c INNER JOIN orders AS o ON c.client_id = o.client_id;

DISTINCT

Ключевое слово DISTINCT, как правило, применяется сразу после SELECT для удаления повторяющихся строк из результата.

Если в результатах запроса SELECT строка дублируется, то добавление DISTINCT гарантирует, что появится только один экземпляр строки (дубликаты игнорируются).

Например:

SELECT DISTINCT LastName, FirstName FROM clients;

LIKE

LIKE нужен для выполнения поиска по подстановочным знакам или по частичному совпадению строковых значений в WHERE-предложении.

Применяется в выражениях для сравнения значений полей со строками.

Синтаксис:

SELECT column1, column2, ... FROM table_name WHERE column LIKE pattern;

Например:

SELECT COUNT(*) FROM clients WHERE FirstName LIKE 'A%';

Этот запрос покажет количество записей, имя которых начинается с буквы «А».

AND

Ключевое слово AND позволяет использовать два условия в предложении WHERE и указывает на то, что они оба должны быть истинными.

Синтаксис:

SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2 AND condition3 ...;

Вы можете применять в своих запросах столько операторов AND, сколько необходимо.

Например:

SELECT FirstName, LastName FROM clients WHERE status = 'Active' AND region = 'North';

Этот запрос показывает имя и фамилию клиента со статусом «Активен» и регионом «Север».

OR

Ключевое слово OR позволяет использовать два условия в предложении WHERE и указывает на то, что хотя бы одно из них должно быть истинным.

Синтаксис:

SELECT column1, column2, ... FROM table_name WHERE condition1 OR condition2 OR condition3 ...;

Можно использовать любое необходимое количество ключевых слов и критериев «ИЛИ».

Например:

SELECT FirstName, LastName FROM clients WHERE status = 'Active' OR status = 'Pending';

Запрос показывает фамилию и имя клиента со статусом «Активен» или «Ожидание».

BETWEEN

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

Синтаксис:

SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;

Значения в предложении BETWEEN инклюзивные.

Например:

SELECT order_id FROM orders WHERE order_amount BETWEEN 100 AND 200;

Этот запрос покажет идентификаторы заказов, у которых order_amount находится в диапазоне от 100 до 200 включительно.

EXISTS

С помощью ключевого слова EXISTS проверяют, найдены ли записи в подзапросе. Если найдена хотя бы одна, её можно вернуть в основной запрос и использовать с такими операторами, как SELECT, INSERT, UPDATE и DELETE.

Синтаксис:

SELECT column_name(s) FROM table_name WHERE EXISTS (SELECT column_name FROM table_name WHERE condition);

Например:

SELECT city_name FROM cities WHERE EXISTS (SELECT id FROM olympics WHERE olympics.city_name = cities.city_name);

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

IN

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

Синтаксис:

SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2, ...);

Это можно сделать с конкретными значениями:

SELECT COUNT(*) FROM clients WHERE status IN ('Active', 'Pending', 'Paused');

Или с помощью подзапроса:

SELECT COUNT(*) FROM clients WHERE status IN (SELECT status_value FROM status_lookup);

Указанные запросы ищут клиентов, которые имеют определённые значения статуса.

UNION

Ключевое слово UNION позволяет объединить результаты двух запросов. Тип данных и количество столбцов должны совпадать.

Синтаксис:

SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;

Например:

SELECT FirstName, LastName FROM clients UNION SELECT FirstName, LastName FROM employee;

Запрос покажет один список результатов с именами и фамилиями — как клиентов, так и сотрудников.

LIMIT

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

LIMIT применяется в MySQL и PostgreSQL, но недоступно в Oracle или SQL Server. В Oracle есть похожая функция ROWNUMBER, а в SQL Server — ключевое слово TOP.

Синтаксис:

SELECT columns FROM table LIMIT number;

Например:

SELECT FirstName, LastName FROM clients LIMIT 10;

Команда выберет первые 10 строк в обозначенной таблице. Её часто используют с предложением ORDER BY, чтобы расположить результаты в определённом порядке.

UPDATE

UPDATE — базовая команда SQL для внесения изменений в данные таблицы без необходимости их удалять и заново добавлять.

Предложение WHERE является необязательным.

Синтаксис:

UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

Например:

UPDATE clients SET status = 'Inactive' WHERE client_id = 4;

Запрос обновит статус на «Неактивный» для строки в таблице клиентов, где идентификатор клиента равен 4. Ключевое слово SET указывает, в каких столбцах и какие значения в таблице будут обновлены.

DELETE

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

Синтаксис:

DELETE FROM table_name WHERE condition;

Например:

DELETE FROM clients WHERE client_id = 4;

Запрос удалит записи в таблице клиентов, где client_id равен 4.

INSERT

Команда INSERT добавит новую запись в таблицу.

Синтаксис:

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

Например:

INSERT INTO clients (client_id, FirstName, LastName) VALUES (35, 'Ivan', 'Petrov');

ALTER TABLE

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

Синтаксис:

ALTER TABLE table_name ADD column_name datatype;

Например:

ALTER TABLE clients ADD client_type VARCHAR(20);

Так мы добавили в таблицу клиентов новый столбец с именем client_type.

BEGIN

Оператор BEGIN создан для обозначения новой транзакции. Любые другие команды, следующие за ним, будут рассматриваться как часть этой транзакции, пока она не будет зафиксирована (COMMIT) или отменена (ROLLBACK).

Например:

BEGIN; UPDATE users SET name = 'John' WHERE id = 1; COMMIT;

Или:

BEGIN; UPDATE users SET name = 'John' WHERE id = 1; ROLLBACK;

COMMIT

Команду COMMIT используют для сохранения изменений текущей открытой транзакции в базе данных. При этом изменения будут сохранены навсегда, поскольку в зависимости от настроек вашей базы данных и IDE они могут не зафиксироваться автоматически.

Синтаксис:

COMMIT;

После любого изменения данных оператор фиксирует транзакцию.

Пример:

BEGIN; UPDATE users SET name = 'John' WHERE id = 1; COMMIT;

ROLLBACK

Команда ROLLBACK отменяет любые изменения, внесённые в текущую открытую транзакцию. Они не применяются к базе данных.

Синтаксис:

ROLLBACK;

Использование ROLLBACK откатит транзакцию к предыдущему состоянию.

Например:

DELETE FROM clients WHERE Country = 'Russia'; ROLLBACK;

Заключение

Представьте, что SQL — это такой универсальный ключ, который открывает двери к данным в любом проекте. Когда вы знаете его основы, ваши сервисы начинают работать быстрее и стабильнее.

Что это даёт на практике:

  • Сервисы работают чётче и отзывчивее
  • API становятся удобнее и логичнее
  • Данные всегда там, где они нужны

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

Думайте о SQL как о прочном фундаменте: освоите основы — сможете строить что угодно. И это точно окупится в любом вашем проекте.

Оцените статью:
Предыдущая статья Следующая статья
Содержание статьи
Решения МТС Exolve
Рассылки в мессенджерах
Подробнее
Бесплатные SMS-рассылки
Подробнее
Внедрение и настройка amoCRM
Подробнее
Решения МТС Exolve
Рассылки в мессенджерах
Подробнее
Бесплатные SMS-рассылки
Подробнее
Внедрение и настройка amoCRM
Подробнее