Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Fondovi-lekcii.doc
Скачиваний:
20
Добавлен:
10.11.2018
Размер:
4.09 Mб
Скачать
  1. Порівняння значення стовпчика із константою

= < = ! < (не менше)

< > = ! > (не більше)

> <> != (не дорівнює)

Приклад 5. Вибрати всю інформацію про наявні на складі товари, які коштують понад 3 грн.:

SELECT *

FROM Tovary

WHERE Cina > 3

Товари –5)

Назва

Одиниці

Ціна

дріжджі

кг.

3.60

ковбаса

кг.

17.50


Можна порівнювати значення стовпчика із значенням іншого стовпчика (тої самої або іншої таблиці).

  1. Правила виконання однотабличних запитів на вибірку

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

Спочатку виконується секція FROM, потім секція WHERE, потім секція SELECT. Дії:

  1. Взяти таблицю, вказану в секції FROM;

  2. Якщо є секція WHERE – застосувати умову до кожного рядка (запиши лише ті рядки, для яких умова = TRUE. Якщо умова = FALSE або = NULL – рядок відкидається);

  3. Для кожного рядка, що залишився – обчислити значення кожного елемента із списку полів секції SELECT – утворити рядок результуючої таблиці. При цьому: звертання до поля відповідає значенню стовпчика у даному біжучому рядку.

  4. Якщо є ключове слово DISTINCT – вилучити всі рядки – дублікати (залишити лише унікальні рядки).

Контрольні питання:

  1. Що виконує команда SELECT?

  2. Яка структура команди SELECT?

  3. Який шаблон задає вибір всіх полів у рядку SELECT?

  4. Що таке альтернативне ім’я? Коли його використовують?

  5. Вкажіть команди для порівняння значення між двома стовпчиками. Де вони вказуються?

  6. Вкажіть правила виконання однотабличних запитів на вибірку.

Тема 6. Комбінування умов з допомогою операторів and, or, not. Порівняння по шаблону. Порівняння з діапазоном. Сортування стрічок з допомогою речення order by.

  1. Комбінування умов з допомогою операторів AND, OR, NOT.

  2. Порівняння по шаблону.

  3. Порівняння з діапазоном.

  4. Перевірка належності множині.

  5. Сортування стрічок з допомогою речення ORDER BY.

  1. Порівняння значень виразів має наступну синтаксичну діаграму:

Операції відношення: =, >, <, <> (аналогічно !=), >= (аналогічно !<), <= (аналогічно !>).

Коли порівнюються два вирази результатом може бути одне з трьох:

  1. якщо порівняння істинне, то результат перевірки буде TRUE;

  2. якщо порівняння хибне, то результат перевірки буде FALSE;

  3. я кщо хоча б один з виразів має значення NULL, то результатом перевірки буде NULL.

Складні логічні вирази будуються за допомогою операцій NOT, AND, OR.

На результат логічного виразу також впливають значення NULL.

NOT

TRUE

FALSE

NULL

FALSE

TRUE

NULL

AND

TRUE

FALSE

NULL

TRUE

TRUE

FALSE

NULL

FALSE

FALSE

FALSE

FALSE

NULL

NULL

FALSE

NULL

OR

TRUE

FALSE

NULL

TRUE

TRUE

TRUE

TRUE

FALSE

TRUE

FALSE

NULL

NULL

TRUE

NULL

NULL

Якщо в логічному виразі об’єднується більш ніж одна умова відбору, то за стандартом SQL пріоритети операцій йдуть у такому порядку:

  1. NOT;

  2. AND;

  3. OR.

  1. Перевірка на відповідність шаблону – це більш загальний спосіб, який дозволяє замінити STARTING … WITH … і CONTAINING.

Ш аблон – це літерний рядок, в який може входити довільна кількість підстановочних символів.

Підстановочний символ “%” (знак процента) означає довільну кількість будь-яких символів.

Приклад 1. Вивести всю інформацію про товари, назви яких починаються з літери “М” і закінчуються літерою “о”.

SELECT *

FROM Tovary

WHERE Nazva LIKE “М%о”

Підстановочний символ “_” (підкреслене тире) означає рівно один будь-який символ.

Приклад 2. Вивести всю інформацію про товари, назви яких містять п’ять символів, починаються з літери “М” і закінчуються літерою “о”.

SELECT *

FROM Tovary

WHERE Nazva LIKE “М_ _ _о”

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

Приклад 3.

SELECT Company

FROM Clienty

WHERE Company LIKE “Smiths_ n%”

Перевірку LIKE так само, як STARTING … WITH … та CONTAINING, можна застосовувати лише для тих стовпчиків, які мають літерний тип даних.

Якщо стовпчик в біжучому рядку має значення NULL, то результатом перевірок LIKE, STARTING … WITH … та CONTAINING буде значення NULL.

Інколи потрібно записати такий шаблон, який в якості значущого символу містить один із підстановочних символів. В таких випадках використовуються символи пропуску. Коли в шаблоні зустрічається символ пропуску, то символ, який записаний безпосередньо після нього вважається не підстановочним символом, а значущим, тобто відбувається пропуск символу. Безпосередньо після символу пропуску може бути записаний або один із двох підстановочних символів або сам символ пропуску, бо він також отримує в шаблоні особливе значення. Тоді додається секція ESCAPE, після якої у лапках вказується символ пропуску.

Приклад 4. Вивести всю інформацію про товари, коди яких починаються з таких чотирьох літер “А%ВС”, де “А%ВС” – назва, а символ “%” – літера.

SELECT *

FROM Tovary

WHERE Kod LIKE “А$%ВС%”

ESCAPE “$”

Перший символ “%” в шаблоні, який записаний після символу пропуску вважається значущим, а другий символ “%” – підстановочним.

Приклад 5. Вивести всю інформацію про товари, коди яких починаються з таких літер “_ A%$B”, потім йде будь-який символ і літера “C”.

SELECT *

FROM Tovary

WHERE Kod LIKE “$_А$%$$В_С%”

ESCAPE “$”

  1. П еревірка належності діапазону значень має таку синтаксичну діаграму:

Приклад 6. Вивести дані про всі відпуски товарів, для яких кількість відпущеного товару лежить в діапазоні від 100 до 300 одиниць.

SELECT *

FROM Vidpusk

WHERE Kilkist BETWEEN 100 AND 300

В перевірці BETWEEN … AND … типи даних виразу, нижньої і верхньої меж повинні бути сумісні. Ця перевірка нічого нового не приносить, так як:

Х BETWEEN А AND В  ((X > = A) AND (X < = B))

Правила опрацювання значення NULL перевірки BETWEEN … AND … :

  1. якщо вираз, що перевіряється, має значення NULL або якщо обидві межі діапазону мають значення NULL, то результатом перевірки буде значення NULL.

  1. якщо нижня межа дорівнює NULL, то результат перевірки дає FALSE тоді, коли вираз, який перевіряється має значення більше ніж значення верхньої межі і дає значення NULL в протилежному випадку.

  1. якщо верхня межа має значення NULL, то перевірка BETWEEN … AND … дає FALSE тоді, коли вираз, що перевіряється має значення менше ніж значення нижньої межі і дає NULL в іншому випадку.

  1. П еревірка належності множині значень має таку синтаксичну діаграму:

Приклад 7. Вивести дані про всі відпуски товарів, для яких кількість відпущеного товару дорівнює 50, 100 або 300 одиниць.

SELECT *

FROM Vidpusk

WHERE Kilkist ІN (50, 100, 300)

Перевірка належності множині значень краще за порівняння . Слід уникати множин, які складаються лише з одного елементу: X IN A, краще використати умову порівняння значень:

X = A.

Якщо вираз, що перевіряється, має значення NULL, то результатом перевірки буде NULL.

NULL IN (…) → NULL

І нколи буває потрібно явно перевіряти значення стовпчика на рівність значенню NULL, для цього використовується перевірка на рівність значенню NULL, яка має таку синтаксичну діаграму:

Приклад 8. Вивести всі дані про відпуски товарів зі складу, для яких невказаний покупець.

SELECT *

FROM Vidpusk

WHERE Pokupets IS NULL

Обернена формула перевірки IS NOT NULL дозволяє вибирати рядки, які не містять значень NULL у вказаному стовпчику.

Приклад 9. Вивести всі дані про відпуски товарів зі складу, для яких вказаний покупець.

SELECT *

FROM Vidpusk

WHERE Pokupets IS NOT NULL

На відміну від інших перевірок, перевірка на NULL не може повертати NULL в якості результату. Перевірка на NULL завжди повертає TRUE або FALSE. Може здатися дивним, що не можна перевіряти якесь значення на NULL за допомогою порівняння.

Приклад 9*. Хибний розв’язок попередньої задачі.

SELECT *

FROM Vidpusk

WHERE Pokupets = NULL

Ключове слово NULL в такій перевірці не можна використовувати, тому що насправді це не будь-яке конкретне значення, а просто сигнал, що значення відсутнє. Навіть якщо б порівняння Pokupets = NULL було можливим, то правила опрацювання значень NULL в порівняннях привели би до того, що результат був би зовсім не такий як очікується. Коли СУБД виявить рядок в якому поле Pokupets містить значення NULL. Що буде в результаті такої перевірки TRUE чи FALSE? Оскільки значення по обидві сторони від знаку дорівнює невідомі, то згідно правил виконання порівнянь повинно вийти NULL. Оскільки умова відбору набуває значення, яке не співпадає із значенням TRUE, то даний рядок відкується і він не ввійде в результуючу таблицю. Результуюча таблиця для цього запиту буде порожньою, тобто не міститиме жодного рядка.

  1. Секція ORDER BY – це необов’язкова секція і вона повинна записуватись останньою в операторі SELECT.

Стовпчик – це ім’я стовпчика або його порядковий номер в секції SELECT.

Якщо є секція ORDER BY, то результуюча таблиця сортується згідно значення стовпчиків вказаних в секції ORDER BY.

Результат можна сортувати по зростанню чи по спаданню. Для цього в секції ORDER BY після імені стовпчика чи його порядкового номеру вказується зарезервоване слово ASC або DESC. ASC – розміщує результат у порядку зростання (з початку до кінця) по вказаному стовпчику чи його номеру, встановлюється за замовчуванням, а DESC – розміщує результат у порядку спадання (з кінця до початку) по вказаному стовпчику чи його номеру

Приклад 10. Вивести всю інформацію про відпуск товару зі складу та його ціну і результат вивести в порядку спадання прізвищ покупців.

SELECT V.*, T.Cina

FROM Vidpusk V, Tovary T

WHERE V.Tovar = T.Nazva

ORDER BY Pokupec DESC;

Контрольні питання:

  1. Вкажіть операції відношення.

  2. Які логічні оператори Ви знаєте?

  3. Який пріоритет виконання логічних операторів?

  4. Яка команда здійснює порівняння по шаблону? Вкажіть основні шаблони для порівняння.

  5. Яка команда здійснює порівняння з діапазоном?

  6. Яка команда здійснює перевірку належності множині?

  7. Яка команда здійснює сортування записів?

  8. Вкажіть команду сортування в порядку зростання та спадання.

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