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 |

Please log in or register to have a possibility to add comment.