SQL: оператор SELECT

1. Назначение SELECT

Выборка в базе данных производится с помощью оператора SELECT.

Общая форма:

SELECT названия_полей FROM названия_таблиц
WHERE условие [ORDER BY]

Выборка из таблицы:

SELECT * FROM users; - выбрать все поля
SELECT username FROM users; - выбрать поле username
SELECT* FROM phones WHERE phone_number='0959872323'; - выбрать поля id, user_id  где phone_number= ‘0959872323’

2. Оператор LIKE

Выборка из таблицы с использованием LIKE:

SELECT id FROM phones WHERE phone_number LIKE '%3'; 

- выбираем из phones все значения поля id, для которых phone_number заканчивается на цифру 3 (% означает любое количество любых символов; LIKE проверяет совпадение символьной строки с заданным шаблоном).

LIKE применим только к полям типа CHAR или VARCHAR.

Символ подчеркивания (_) замещает любой одиночный символ. Например, 'b_t' будет соответствовать словам 'bat' или 'bit', но не будет соответствовать 'brat'.

Знак процента (%) замещает последовательность любого числа символов. Например '%p%t' будет соответствовать словам 'put', 'posit', или 'opt', но не 'spite'.

3. SQL Alias

SQL Alias - псевдонимы, которые могут быть использоваться для переименования таблиц и колонок.

Выборка из таблицы c использованием Alias:

SELECT persons.username FROM users AS persons 
WHERE persons.username LIKE 'P%‘

AS является необязательным:

Выборка из таблицы c использованием Alias:

SELECT persons.username FROM users persons 
WHERE persons.username LIKE 'P%‘

4. Оператор ORDER BY

Выборка из таблицы c ORDER BY:

SELECT username FROM users ORDER BY username;

- выбрать поле username и отсортировать ORDER BY используется для сортировки по одному из полей, указанных после оператора SELECT. По умолчанию делается возрастающая сортировка, если хотим использовать сортировку в обратном порядке то после поля необходимо добавить DESC:

Выборка из таблицы c ORDER BY И DESC:

SELECT username FROM users ORDER BY username DESC;

5. Реляционные операторы

  • = Равный
  • > Больше чем
  • < Меньше чем
  • >= Больше чем или равно
  • <= Меньше чем или равно
  • <> Не равно

Выборка из таблицы с использованием реляционного оператора:

SELECT username FROM users WHERE id>2;

6. NULL значения

NULL обозначает отсутствующее или неизвестное значение и обрабатывается отличным от других значений образом.

Проверить значение на равенство NULL с помощью обычных арифметических операторов сравнения (=, < или <>) нельзя. Вместо этого нужно пользоваться операторами IS NULL и IS NOT NULL:

Выборка из таблицы строк со значением NULL:

SELECT * FROM users WHERE username IS NULL;

7. Булевы операторы

Операторы AND, OR, NOT.

Выборка из таблицы с использованием булевых операторов:

SELECT username FROM users WHERE id>1 AND id<3;
SELECT username FROM users WHERE NOT username='Sidorov';

8. Оператор IN

Оператор IN определяет набор значений в которое данное значение может или не может быть включено.

Например, вместо

SELECT username FROM users WHERE username='Sidorov' OR username='Petrov';

можно написать

SELECT username FROM users WHERE username IN ('Sidorov', 'Petrov');

9. Оператор BETWEEN

BETWEEN используется для сравнения диапазонов.

Выборка из таблицы с использованием оператора BETWEEN:

SELECT * FROM employees WHERE salary BETWEEN 3000 AND 4000;

что можно переписать следующим образом:

SELECT * FROM employees WHERE salary >= 3000 AND salary <= 4000;

При использовании ключевого слова BETWEEN граничные значения также попадают в диапазон, поэтому запрос вернет, в том числе сотрудников с зарплатой в 3000 и 4000.

10. Оператор DISTINCT

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

Выборка не повторяющихся значений из столбца username:

SELECT DISTINCT username FROM users; 

11. Агрегатные функции

Агрегатные функции выполняют вычисление на наборе значений и возвращают одиночное значение.

  • COUNT - производит подсчет строк, удовлетворяющих условию запроса.
  • SUM - вычисляет арифметическую сумму всех значений колонки.
  • AVG - вычисляет среднее арифметическое всех значений.
  • MAX - определяет наибольшее из всех выбранных значений.
  • MIN - определяет наименьшее из всех выбранных значений.

Агрегатные функции, за исключением COUNT, не учитывают значения NULL.

Использование агрегатных функций:

SELECT count(DISTINCT username) FROM users;  - количество неповторяющихся значений из столбца username.
SELECT MAX(id) FROM users;
SELECT MIN(id) FROM users;

12. Оператор GROUP BY

Оператор GROUP BY используется для объединения результатов выборки по одному или нескольким столбцам. Он имеет следующий синтаксис: GROUP BY column_name.

Предположим есть таблица, содержащая информацию о том, сколько кг каждого вида фруктов продал магазин:

Продажи
id магазин продукт кг
1 АТБ яблоки 10
2 АТБ груши 14
3 АТБ виноград 20
4 Дигма яблоки 20
5 Дигма виноград 34
6 Дигма лимоны 34
7 Брусничка лимоны 14
8 Брусничка яблоки 54

Используя оператор GROUP BY найти количество проданных кг для каждого магазина:

SELECT магазин, SUM(количество) AS кг
FROM продажи GROUP BY магазин
Результат
Магазин кг
АТБ 44
Дигма 68
Брусничка 88

13. Оператор SQL HAVING

Оператор SQL HAVING является указателем на результат выполнения агрегатных функций. 

Используя оператор SQL HAVING вывести название магазинов, которые продали более 60 кг:

SELECT магазин, SUM(количество) AS кг
FROM продажи GROUP BY магазин
HAVING кг>60
Результат
Магазин кг
Дигма 68
Брусничка 88
Читайте также:
Trustpilot
Trustpilot
Комментарии