Шпаргалка по SQL – базовые запросы
Порядок выполнения ключевых слов отличается от последовательности в SQL-запросе:
- Сначала выполняется оператор
FROM
— происходит выбор нужной таблицы. - Затем
SELECT
— отбираются указанные столбцы. - Потом
ORDER BY
— производится сортировка результирующей таблицы. - И в самом конце
LIMIT
— ограничивается количество выводимых записей.
SELECT
Чтобы вывести все записи со значениями во всех колонках, необходимо либо перечислить все колонки в операторе SELECT
, либо указать после оператора специальный символ «*»:
SELECT column_1, column_2, ...
FROM table
SELECT *
FROM table
ORDER BY
Для сортировки значений по какой-либо колонке в SQL используется оператор ORDER BY
с ключевыми словами ASC
(по возрастанию) или DESC
(по убыванию).
При этом по умолчанию сортировка происходит по возрастанию, т.е. ASC
указывать не обязательно. Для сортировки по убыванию после ORDER BY
необходимо явно указать DESC
:
SELECT column_1, column_2
FROM table
ORDER BY column_1 -- сортировка по возрастанию
SELECT column_1, column_2
FROM table
ORDER BY column_1 ASC -- сортировка по возрастанию
SELECT column_1, column_2
FROM table
ORDER BY column_1 DESC -- сортировка по убыванию
Сортировать результат SQL-запроса можно сразу по нескольким колонкам, указывая их после ORDER BY
через запятую вместе с направлением сортировки (ASC
или DESC
):
SELECT column_1, column_2
FROM table
ORDER BY column_1 DESC, column_2 -- сначала сортировка по первой колонке (по убыванию),
-- затем по второй (по возрастанию)
AS
При составлении SQL-запросов колонкам в результирующей таблице можно присваивать любые другие имена (их ещё называют «алиасами»). Это можно делать с помощью оператора AS
:
SELECT name AS new_name
FROM table
SELECT name new_name
FROM table
Функции
В SQL-запросах к колонкам таблиц можно применять разные функции — так же, как, например, в Excel.
SELECT function(a, b, c, …)
FROM table
В SQL, как и во многих других языках, функции можно применять к результату других функций, т.е. последовательно:
SELECT function_one(function_two(a, b), c)
Строки
Список функций со строковыми данными
Типы данных
Иногда возникает необходимость изменить тип данных в какой-нибудь колонке результирующей таблицы, не меняя при этом свойства исходной таблицы — например, преобразовать число в текст (тип данных VARCHAR
). Для этого существует функция CAST
.
На вход функции CAST
необходимо подать имя колонки, указав через AS
тип данных, к которому нужно привести все значения:
SELECT CAST(column AS VARCHAR)
FROM table
Также изменить тип данных можно с помощью специального синтаксиса с двумя двоеточиями («::»):
SELECT column::VARCHAR
FROM table
Подробнее о преобразовании типов данных.
Конкатенация
Функция CONCAT
принимает на вход несколько аргументов и возвращает результат их последовательного сложения друг с другом:
SELECT CONCAT('SQL', ' ', 'Simulator ', 2022)
Результат:
SQL Simulator 2022
Подробнее о конкатенации в примерах.
Дата и время
Подробнее о DATE_PART.
COALESCE
Функция COALESCE читает список значений слева направо и, как только видит значение, которое не является NULL
, сразу же возвращает его и прекращает чтение списка.
SELECT COALESCE(NULL, 'I am not NULL' , 'karpov.courses')
Результат:
I am not NULL
SELECT COALESCE(NULL, 25, 100, 150)
Результат:
25
SELECT COALESCE('NULL', 'I am not NULL', 'karpov.courses')
Результат:
NULL
Математика и арифметика
SELECT (column_1 + column_2) / 2 AS average
FROM table
SELECT ROUND(100.5454, 2)
Результат:
100.55
SELECT ROUND(100.551, 1)
Результат:
100.6
SELECT ROUND(100.5511)
Результат:
101.0
Условия CASE
CASE
WHEN logical_expression_1 THEN expression_1
WHEN logical_expression_2 THEN expression_2
...
ELSE expression_else
END AS case_example
- На каждом этапе WHEN – THEN вычисляется некоторое логическое выражение logical_expression, стоящее после
WHEN
. Если оно оказывается истинным (TRUE
), то в качестве результата оператор возвращает выражение expression, стоящее послеTHEN
, и заканчивает свою работу. - Если выражение оказывается ложным (
FALSE
), то оператор продолжает работу и проверяет следующее условие. - Если ни одно из условий не проходит проверку на истинность, то возвращается выражение, указанное после
ELSE
. При этомELSE
указывать не обязательно — если его не указать, то вернётся пустое значениеNULL
(в случае, если все проверки послеWHEN
оказались ложными). - В конце обязательно указывается ключевое слово
END
, которое говорит об окончании конструкцииCASE
. Также послеEND
новому расчётному полю с помощьюAS
можно присвоить некоторое имя, но это делать не обязательно. Обязательными являются только ключевые словаCASE
,WHEN
,THEN
иEND
.