- •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. Запити, що використовують з'єднання
2. Вибірка без використання фрази where
2.1. Проста вибірка
Це вибірка значень одного чи кількох стовпців з однієї таблиці (фактично проекція таблиці на один атрибут), (ключові слова SELECT…FROM…)...
Приклад 6. Вибрати всі дані з таблиці постачальників:
SELECT *
FROM P;
У результаті отримаємо нову таблицю, що містить повну копію даних з вихідної таблиці P
Приклад. Вибрати деякі стовпчики з вихідної таблиці (указівка списку стовпчиків, що відбираються,):
SELECT P.NAME
FROM P;
У результаті одержимо таблицю з одним стовпчиком, що містить усі найменування постачальників.
Якщо у вихідній таблиці було присутнє кілька постачальників з різними номерами, але однаковими найменуваннями, то в результуючій таблиці будуть рядка з повтореннями - дублікати рядків автоматично не відкидаються.
Приклад. Запит видати назва, статус і адреса постачальників
SELECT Назва, Статус, Адреса
FROM Постачальники;
дає результат у вигляді таблиці з трьома колонками Назва, Статус, Адреса. При цьому, якщо у вихідній таблиці було присутнє кілька рядків з різними номерами, але однаковими найменуваннями, адресами і статусом постачальників, то в результуючій таблиці будуть рядки з повтореннями
2.2. Виключення дублікатів
Для виключення дублікатів і одночасного упорядкування переліку необхідно доповнити запит ключовим словом DISTINCT (різний, різні).
Приклад. Вибрати деякі стовпчики з вихідної таблиці, видаливши з результату повторювані рядки (ключове слово DISTINCT):
SELECT DISTINCT P.NAME
FROM P;
Використання ключового слова DISTINCT приводить до того, що в результуючій таблиці будуть вилучені всі повторювані рядки.
3. Вибірка з використанням фрази where
Фраза WHERE включає набір умов для добору рядків:
WHERE [NOT] WHERE_умова [[AND|OR][NOT] WHERE_умова]...
де WHERE_умова - одна з наступних конструкцій:
значення { = | <> | < | <= | > | >= } { значення | ( підзапит ) }
значення_1 [NOT] BETWEEN значення_2 AND значення_3
значення [NOT] IN { ( константа [,константа]... ) | ( підзапит ) }
значення IS [NOT] NULL
[таблиця.]стовпець [NOT] LIKE 'рядок_символів' [ESCAPE 'символ']
EXISTS ( підзапит )
3.1. Використання операторів порівняння
У синтаксисі фрази WHERE (п.5.1.2) показано, що для відбору потрібних рядків таблиці можна використовувати оператори порівняння = (дорівнює), <> (не дорівнює), < (менше), <= ( менше чи дорівнює), > (більше), >= ( більше дчи орівнює), що можуть випереджатися оператором NOT, створюючи, наприклад, відносини "не менше" і "не більше". Як умову в розділі WHERE можна використовувати і більш складні логічні вираження, що використовують поля таблиць, константи, порівняння (>, <, = і т.д.), дужки, союзи AND і OR, заперечення NOT.
Приклад. Вибрати всі рядки з таблиці постачальників, що задовольняють деякій умові (ключове слово WHERE…):
SELECT*
FROM P
WHERE P...PNUM>2;
Можливість використання кількох умов, з'єднаних логічними операторами AND, OR, AND NOT і OR NOT, дозволяє здійснити більш детальний добір рядків.
Приклад. Одержати перелік продуктів (з таблиці Продукти), що практично не містять вуглеводів і натрію:
SELECT Продукти.Продукт
FROM Продукти
WHERE Вуглев = 0 AND Na = 0;
Крім традиційних операторів порівняння (= | <> | < | <= | > | >=) у WHERE фразі використовуються умови BETWEEN (між), LIKE (схоже на), IN (належить), IS NULL (не визначене) і EXISTS (існує), що можуть випереджатися оператором NOT (не). Критерій добору рядків формується з одного чи кількох умов, з'єднаних логічними операторами:
AND - коли повинні задовольнятися обоє поділюваних за допомогою AND умови;
OR - коли повинно задовольнятися одне з поділюваних за допомогою OR умов;
AND NOT - коли повинне задовольнятися перша умова і не повинна друге;
OR NOT - чи коли повинне задовольнятися перша умова чи не повинна задовольнятися друге,
причому існує пріоритет AND над OR (спочатку виконуються всі операції AND і тільки після цього операції OR). Для одержання бажаного результату WHERE умови повинні бути введені в правильному порядку, якому можна організувати введенням дужок.
При обробці умови числа порівнюються алгебраїчно - негативні числа вважаються меншими, чим позитивні, незалежно від їхньої абсолютної величини. Рядки символів порівнюються відповідно до їхнього представлення в коді, використовуваному в конкретної СУБД, наприклад, у коді ASCII. Якщо порівнюються два рядки символів, що мають різні довжини, більш коротка рядок доповнюється праворуч пробілами для того, щоб вони мали однакову довжину перед здійсненням порівняння.
