Основы языка SQL: запросы выборки SELECT, фильтрация WHERE и сортировка ORDER BY
Язык структурированных запросов SQL, команда выборки SELECT, фильтрация WHERE, логические связки AND/OR/NOT, поиск по маске LIKE, сортировка ORDER BY.
SQL (Structured Query Language — язык структурированных запросов) — универсальный декларативный язык программирования, применяемый для создания, модификации и выборки данных в реляционных базах данных.
В отличие от процедурных языков (Python, C++), где программист пошагово описывает алгоритм получения результата («как сделать»), в SQL используется декларативный подход: программист описывает, КАКИЕ данные ему нужны, а СУБД сама находит оптимальный путь извлечения информации из диска.
SQL нечувствителен к регистру ключевых слов (команды select и SELECT одинаковы), однако по международному соглашению ключевые слова SQL принято писать ЗАГЛАВНЫМИ БУКВАМИ, а имена таблиц и полей — строчными.
Язык SQL
Декларативность
Основная команда для извлечения информации из базы данных — оператор SELECT (выбрать):
Синтаксис:
SELECT списокполей FROM имятаблицы;
Примеры:
1. Выбрать все поля таблицы: для этого используется символ звездочки (*):
SELECT * FROM Students;
(вернет все столбцы и все строки таблицы «Студенты»);
2. Выбрать только определенные поля (проекция):
SELECT firstname, lastname, grade FROM Students;
(вернет только имя, фамилию и класс, исключая лишние поля);
3. Выборка уникальных значений без дубликатов:
SELECT DISTINCT city FROM Students;
(вернет неповторяющийся список городов).
SELECT *
DISTINCT
Чтобы получить не все строки таблицы, а только те, которые удовлетворяют заданному критерию, применяют секцию WHERE (где / при условии):
Синтаксис:
SELECT поля FROM таблица WHERE условие;
Примеры условий:
• Числовое сравнение: SELECT * FROM Products WHERE price < 1000;
• Текстовое совпадение: SELECT * FROM Students WHERE class = '9A';
• Логические связки AND, OR, NOT:
SELECT * FROM Students WHERE grade = 9 AND city = 'Алматы';
SELECT * FROM Products WHERE category = 'Книги' OR price < 500;
• Проверка диапазона BETWEEN: SELECT * FROM Employees WHERE salary BETWEEN 150000 AND 300000;
• Поиск по списку IN: SELECT * FROM Students WHERE city IN ('Астана', 'Шымкент', 'Караганда');
• Поиск по текстовому шаблону LIKE (знак % означает любое количество любых символов):
SELECT * FROM Students WHERE lastname LIKE 'Абд%';
(найдет всех студентов, чья фамилия начинается на «Абд» — Абдуллаев, Абдрахманов).
WHERE
LIKE '%...%'
По умолчанию порядок строк в базе данных не гарантирован. Чтобы упорядочить полученные записи, используют секцию ORDER BY в самом конце запроса:
• ORDER BY поле ASC — сортировка по возрастанию (от меньшего к большему, от А до Я) — действует по умолчанию;
• ORDER BY поле DESC — сортировка по убыванию (от большего к меньшему, от Я до А);
• Ограничение количества строк LIMIT: SELECT * FROM Products ORDER BY price DESC LIMIT 5 (топ-5 самых дорогих товаров магазина).
Полный вид запроса:
SELECT firstname, lastname, score
FROM Students
ORDER BY score DESC;
