- •1. Dмl: команди вибірки даних
- •2. Вибірка без використання фрази where
- •2.1. Проста вибірка
- •2.2. Виключення дублікатів
- •3. Вибірка з використанням фрази where
- •3.1. Використання операторів порівняння
- •3.5. Залучення невизначеного значення (null-значення)
- •3.2. Використання between
- •3.3. Використання in
- •3.4. Використання like
- •4. Вибірка з упорядкуванням
- •5. Запити з обчисленням. Обчислення у межах Select
- •6. Агрегування даних. Використання агрегатних функцій у запитах
- •6.1. Агрегатні sql-функції
- •6.2. Функції без використання фрази group by
- •6.3. Використання агрегатних функцій з угрупованнями. Фраза group by
- •6.4. Використання фрази having
- •7. Dмl: Запити з використанням кількох таблиць
- •7.1. Засоби одночасної роботи з множиною таблиць
- •7.2. Запити, що використовують з'єднання
3.2. Використання between
За допомогою BETWEEN ... AND ... (знаходиться в інтервалі від ... до ...) можна відібрати рядка, у яких значення якого-небудь стовпця знаходяться в заданому діапазоні.
Приклад. Видати перелік продуктів, у яких значення вмісту білка знаходиться в діапазоні від 10 до 50:
SELECT Продукт, Білки FROM Продукти WHERE Білки BETWEEN 10 AND 50; |
Результат: |
|
Продукт |
Білки |
|
Майонез |
31 |
|
Сметана |
26 |
|
Молоко |
28 |
|
Морква |
13 |
|
Цибуля |
17 |
|
Можна задати і NOT BETWEEN (не належить діапазону між).
Приклад. Видати перелік продуктів, у яких значення вмісту білка лежить за межами діапазону від 10 до 50, а жирів – більше 100.
SELECT Продукт, Білки, Жири
FROM Продукти
WHERE Білки NOT BETWEEN 10 AND 50
AND Жири > 100;
BETWEEN особливо зручний при роботі з даними, що задаються інтервалами, початок і кінець яких розташований у різних стовпцях. При цьому може бути необхідно вводити дві умови, стосовно початку і кінця періоду, з'єднаних OR.
3.3. Використання in
IN є просто коротким записом послідовності окремих порівнянь, з'єднаних операторами OR.
Приклад. Видати відомості про блюда на основі яєць, крупи й овочів
Запит на видачу всіх блюд, основою (основним продуктом) яким є яйця, крупа чи овочі може мати вигляд з використанням OR :
SELECT *
FROM Блюда
WHERE Основа=Яйця OR Основа=Крупа OR Основа=Овочі;
Чи з IN
SELECT *
FROM Блюда
WHERE Основа IN (Яйця Крупа Овочі);
3.4. Використання like
Звичайна форма "ім'я_стовпця LIKE текстова_константа" для стовпця текстового типу дозволяє відшукати всі значення зазначеного стовпця, що відповідають зразку, заданому "текстовою_константою". Символи цієї константи інтерпретуються в такий спосіб:
символ _ (підкреслення) v заміняє будь-який одиночний символ,
символ % (відсоток) √ заміняє будь-яку послідовність з N символів (де N може бути нулем). У деяких СУБД, наприклад, Access, аналогічно використовується символ *,
всі інші символи означають просто самі себе.
Приклад. Видати перелік салатів
SELECT Блюдо FROM Блюда WHERE Блюдо LIKE '%салат%';
|
Результат: |
|
Блюдо |
|
|
Салат літній |
|
|
Салат м'ясний |
|
|
Салат вітамінний |
|
|
Салат рибний |
|
|
Фруктовий салат |
|
|
3.5. Залучення невизначеного значення (null-значення)
Якщо при завантаженні даних не введене значення в яке-небудь поле таблиці, то СУБД помістить у нього NULL-значення. Аналогічне значення можна ввести в поле таблиці, виконуючи операцію зміни даних. Так, при відсутності відомостей про наявність у постачальників судака і моркви в стовпці Ціна і Кількість відповідних рядків таблиці Постачання вводиться NULL і там буде зберігатися код NULL-значення, а не 0, 0. чи пробіл. Це значення в запитах використовують за допомогою фраз IS NULL, IS NOT NULL.
Приклад. Виявити назви продуктів, відсутніх у коморі
SELECT DISTINCT ПР
FROM Наявність
WHERE Кількість IS NULL;
Приклад. Виявити назви продуктів, що існують у коморі, варто дати запит
SELECT DISTINCT ПР
FROM Наявність
WHERE Кількість IS NOT NULL;
Використання умов стовпець IS NULL і стовпець IS NOT NULL замість, наприклад, стовпець = NULL і стовпець <> NULL зв'язаний з тим, що ніщо - і навіть саме NULL-значення - не вважається рівним іншому NULL-значенню. (Незважаючи на це, два невизначених значення розглядаються, однак, як дублікати один одного при виключенні дублікатів, і пропозиція SELECT DISTINCT дасть у результаті не більш одного NULL-значення.).
