Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.Б.Д / лекции / 5БД.doc
Скачиваний:
28
Добавлен:
30.05.2020
Размер:
70.14 Кб
Скачать

5. Лекція

ТЕМА: Ефективне виконання запитів для вибірки даних:

МЕТА: Дати синтаксис оператора SELECT. Описати компонент FROM і використовування синонімів. Визначити побудову умов вибору даних із застосуванням операторів порівняння, логічних операторів IS NULL, BETWEEN, IN, LIKE і логічних зв'язок OR і AND. Запропонувати способи використовування оператора ORDER для сортування записів в запитах вибірки.

ПЛАН

1 Компонент select

2 Компонент from

1 Компонент select

Оператор SELECT – один з найважливіших і найпоширеніших операторів SQL. Він дозволяє проводити вибірки даних з таблиць і перетворювати до потрібного вигляду одержані результати. Будучи дуже потужним, він здатний виконувати дії, еквівалентні операторам реляційної алгебри, причому в межах єдиної виконуваної команди. З його допомогою можна реалізувати складні і громіздкі умови відбору даних з різних таблиць.

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

Оператор SELECT має наступний формат:

SELECT [ALL | DISTINCT ] {*|[ім’я_колонки [AS нове_ім’я]]} [,...n]

FROM ім’я_таблиці [[AS] псевдонім] [,...n]

[WHERE <умова_пошуку>]

[GROUP ім’я_колонки [,...n]]

[HAVING <критерії вибору груп>]

[ORDER ім’я_колонки [,...n]]

Оператор SELECT визначає поля (стовпці), які входитимуть в результат виконання запиту. В списку вони розділяються комами і приводяться в такій черговості, в якій повинні бути представлені в результаті запиту. Якщо використовується ім'я поля, що містить пропуски або роздільники, його слід заключити в квадратні дужки. Символом * можна вибрати всі поля, а замість імені поля застосувати вираз з декількох імен.

Якщо обробляється ряд таблиць, то (за наявності однойменних полів в різних таблицях) в списку полів використовується повна специфікація поля, тобто Імя_табліци.Ім’я_поля. (аналог звертання до поля структури в мові програмування С)

2 Компонент from

Компонент FROM задає імена таблиць і уявлень, які містять поля, перераховані в операторі SELECT. Необов'язковий параметр псевдоніма – це скорочення, встановлюване для імені таблиці.

Обробка елементів оператора SELECT виконується в наступній послідовності:

FROM – визначаються імена таблиць, що використовуються;

WHERE – виконується фільтрація рядків об'єкту відповідно до заданих умов;

GROUP – утворюються групи рядків, що мають одне і те ж значення у вказаному стовпці;

HAVING – фільтруються групи рядків об'єкту відповідно до вказаної умови;

SELECT – встановлюється, які стовпці повинні бути присутні у вихідних даних;

ORDER – визначається впорядкованість результатів виконання операторів.

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

Приклад 5.1. Скласти список відомостей про всіх клієнтів.

SELECT * FROM Клієнт

Приклад 5.1. Список відомостей про всіх клієнтів.

Параметр WHERE визначає критерій відбору записів з вхідного набору. Але в таблиці можуть бути присутні записи, що повторюються (дублікати). Предикат ALL задає включення у вихідний набір всіх дублікатів, відібраних по критерію WHERE. Немає необхідності указувати ALL явно, оскільки це значення діє за умовчанням.

Приклад 5.2. Скласти список всіх фірм.

SELECT ALL Клієнт.Фірма FROM Клієнт

Або (що еквівалентне)

SELECT Клієнт.Фірма FROM Клієнт

Приклад 5.2. Список всіх фірм.

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

Предикат DISTINCT слід застосовувати в тих випадках, коли вимагається відкинути блоки даних, що містять дублікати записів у вибраних полях. Значення для кожного з приведених в інструкції SELECT полів повинні бути унікальними, щоб запис, що містить їх, зміг увійти до вихідного набору.

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

Відкоректований приклад 5.2 виглядає таким чином:

SELECT DISTINCT Клієнт.Фірма

FROM Клієнт

Соседние файлы в папке лекции