Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL-2-ukr.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
109 Кб
Скачать
☆

2. Оператори для уточнення запиту. Порядок виконання операторів sql-виразу.

Основний SQL-вираз для вибірки даних, має вигляд:

SELECT списокСтовбців FROM списокТаблиць;

Такий запит повертає таблицю, отриману з зазначеної в операторі FROM (або з декартового добутку зазначених таблиць, якщо їх декілька), шляхом виділення в ній тільки тих стовпців, які визначені в операторі SELECT.

Для уточнення запиту на вибірку даних служить ряд додаткових операторів:

□ WHERE (де) - вказує записи, які повинні увійти в результатну таблицю (фільтр записів);

□ GROUP BY (групувати по) - групує записи по значеннях певних стовпців;

□ HAVING (що мають, за умови) - вказує групи записів, які мають увійти до результатної таблиці (фільтр груп);

□ ORDER BY (сортувати по) - сортує (впорядковує) записи.

Ці оператори не є обов'язковими. Їх можна зовсім не використовувати, або використовувати лише деякі з них, або всі одразу. Якщо застосовуються декілька операторів, то в SQL-виразі вони виконуються у певному порядку.

Запит даних з таблиці із використанням всіх перерахованих операторів уточнення запиту має наступний вигляд:

SELECT списокСтовбців FROM ІмяТаблиці

WHERE УмоваПошуку.

GROUP BY стовбецьГрупування

HAVING УмоваПошуку

ORDER BY УмоваСортування;

Порядок перерахування операторів в SQL-виразі не співпадає з порядком їх виконання. Однак знання порядку виконання операторів допоможе вам уникнути багатьох непорозумінь. Отже, перераховані оператори SQL-виразу виконуються в наступному порядку, передаючи один одному результат у вигляді таблиці:

1. FROM - вибирає таблицю з бази даних; якщо зазначено декілька таблиць, то виконується їх декартовий добуток і результуюча таблиця передається для обробки наступному оператору.

2. WHERE - з таблиці вибираються записи, що відповідають умові пошуку, і відкидаються всі інші.

3. GROUP BY - створюються групи записів, відібраних за допомогою оператора WHERE (якщо він присутній в SQL-виразі); кожна група відповідає якому-небудь значенню стовпця групування. Стовпець групування може бути будь-яким стовпцем таблиці, заданої в операторі FROM, а не тільки тим, що вказаний в SELECT.

4. HAVING - обробляє кожну із створених груп записів, залишаючи тільки ті з них, які задовольняють умові пошуку; цей оператор використовується тільки разом з оператором GROUP BY.

5. SELECT - вибирає з таблиці, отриманої в результаті використання перерахованих операторів, тільки вказані стовпці.

6. ORDER BY - сортує записи таблиці. При цьому в умові сортування можна звертатися лише до тих стовпцях, які вказані в операторі SELECT.

3. Оператор where

Однієї з найдужчих сторін оператора select_from є його спроможність контролювати вміст результуючого набору за допомогою оператора where, що ви можете використовувати одним із таких двох засобів:

- Використовувати where для обмеження вмісту результуючого набору.

- Використовувати where для зв'язування двох або декількох таблиць у єдиний результуючий набір.

Використання WHERE для обмеження результуючого набору

Умови пошуку в операторі WHERE (де) є логічними виразами, тобто приймають одне з двох можливих значень - true (ІСТИНА) або false (БРЕХНЯ).

При складанні логічних виразів використовуються спеціальні ключові слова і символи операцій порівняння, які називають предикатами. Вирази з оператором WHERE використовуються не тільки при вибірці даних (тобто з оператором SELECT), але і при вставці, модифікації і видаленні записів.

Нижче наведено список всіх предикатів:

  • предикати порівняння: (=), (<), (>), (<>), (<=), (> =);

  • BETWEEN;

  • IN, NOT IN;

  • LIKE, NOT LIKE;

  • IS NULL;

  • ALL, SOME, ANY;

  • EXISTS;

  • UNIQUE;

  • DISTINCT;

  • OVERLAPS;

  • MATCH;

  • SIMILAR.

У пропозиції WHERE ви можете використовувати декілька логічних операторів AND і OR

предикати порівняння: (=), (<), (>), (<>), (<=), (> =);

SELECT Name, StateProv FROM Publishers WHERE StateProv = 'CA'

Приведений вище оператор SQL повертає в результуючому наборі підмножину даних. Це означає, що результуючий набір містить не всі рядки таблиці Publishers, а тільки ті з них, що задовольняють критерію пропозиції where.

BETWEEN

Предикат BETWEEN (між) дозволяє задати вираз пеервірки входження якого-небудь значення в діапазон, який визначається граничними значеннями. Наприклад: SELECT PubID, Name, StateProv, City FROM Publishers WHERE PubID BETWEEN 10 AND 15;

Тут ключове слово AND являє собою логічний союз І. Граничні значення (у прикладі це 10 і 15) входять в діапазон. Причому перше граничне значення повинно бути не більше другого.

Еквівалентним наведеному є вираз з предикатами порівняння:

WHERE PubID > = 10 AND PubID <= 15;

Крім даних числового типу, у виразах з BEETWEEN можна використовувати дані наступних типів: символьні, бітові, дати-часу. Так наприклад, щоб вибрати записи, в яких імена авторів знаходяться в діапазоні від А до G, можна використовувати такий вираз:

SELECT Name FROM Avtors WHERE Name BETWEEN 'A' AND 'G';

IN і NOT IN

Предикати IN (в) і NOT IN (не в) використовуються для перевірки входження якого-небудь значення в заданий список значень. Наприклад, якщо вам потрібний список усіх видавців у штатах Нью-Йорк, Каліфорнія й Аляска, то в пропозиції where ви можете використовувати ключове слово IN, за яким у квадратгних дужках повинні випливати необхідні значення, розділені комами.

SELECT PubID, Name, City, StateProv FROM Publishers WHERE StateProv IN ('NY', 'CA', 'RI')

Якщо потрібно отримати дані про всіх усіх видавців крым тих що прживають в штатах Нью-Йорк, Каліфорнія й Аляска, то можна використовувати предикат NOT IN:

SELECT PubID, Name, City, StateProv FROM Publishers WHERE StateProv NOT IN ('NY', 'CA', 'RI')

LIKE і NOT LIKE

Предикати LIKE (схожий) і NOT LIKE (не схожий) використовується для перевірки часткової відповідності символьних рядків. Наприклад, вам потрібно одержати всі рядки, у яких поле StateProv містить букву I у будь-якій позиції.

Критерій часткової відповідності задається за допомогою двох символів-масок: знака відсотка (%) і підкреслення (_). Знак відсотка означає будь-який набір символів, в тому числі і порожній, а символ підкреслення - будь-який одиночний символ. Тоді ви можете використовувати такий оператор SQL select_from.

SELECT PubID, Name, City, StateProv FROM Publishers WHERE StateProv LIKE ('%I%')

Припустимо, стовпець Адреса містить повну поштову адресу (індекс, назва міста, вулиці і т. д.). Якщо вам потрібно вибрати записи про видавців, що проживають в New York, то для цього підійде наступний вираз:

SELECT PubID, Name, Address FROM Publishers WHERE Address LIKE '% New York%';

Якщо ви хочете виключити всіх видавців, що проживають в New York, то скористайтеся таким виразом:

SELECT PubID, Name, Address FROM Publishers WHERE Address NOT LIKE '% New York %';

Можливо, вам буде потрібно вибрати записи, що містять символи відсотка і / або підкреслення. Тоді необхідно, щоб такі символи сприймалися інтерпретатором SQL не як символи-маски. Щоб знак відсотка або підкреслення сприймався буквально, перед ним необхідно вказати спеціальний керуючий символ. Цей символ можна визначити довільно, лише б він не зустрічався в якості елемента даних. У наступному прикладі показано, як це можна зробити:

SELECT PubID, Name, Address, percent FROM Publishers WHERE percent LIKE '20 #% 'ESCAPE' # ';

Тут за ключовим словом ESCAPE вказується символ, який використовується в якості керуючого. Таким же способом можна відключити і сам керуючий символ.

У Microsoft Access в якості символів-масок використовується знак зірочка (*), що означає будь-який набір символів і знак питання (?) – будь-який одиночний символ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]