Урок 22

SQL оператор SELECT


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

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

Общая форма:

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

Пример 1. Выборка из таблицы

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

2. Оператор LIKE

Пример 2. Выборка из таблицы с использованием 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 - псевдонимы, которые могут быть использоваться для переименования таблиц и колонок.

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

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

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

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

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

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

Пример 5. Выборка из таблицы c ORDER BY

SELECT username FROM users ORDER BY username;

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

Пример 6. Выборка из таблицы c ORDER BY И DESC

SELECT username FROM users ORDER BY username DESC;

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

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

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

SELECT username FROM users WHERE id>2;

6. NULL значения

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

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

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

SELECT * FROM users WHERE username IS NULL;

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

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

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

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

8. Оператор IN

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

Пример 10. Выборка из таблицы с использованием оператора IN

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

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

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

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

9. Оператор BETWEEN

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

Пример 11. Выборка из таблицы с использованием оператора 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 используется для указания на то, что следует работать только с уникальными значениями столбца.

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

SELECT DISTINCT username FROM users; 

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

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

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

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

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

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 найти количество проданных кг для каждого магазина:

Пример 14. Использование оператора GROUP BY

SELECT магазин, SUM(количество) AS кг
FROM продажи GROUP BY магазин

Результат:

Магазин кг
АТБ 44
Дигма 68
Брусничка 88

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

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

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

Пример 15. Использование оператора HAVING

SELECT магазин, SUM(количество) AS кг
FROM продажи GROUP BY магазин
HAVING кг>60

Результат:

Магазин кг
Дигма 68
Брусничка 88


0 comments
Leave your comment: