Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Авт_ПМП / Metod_BD.doc
Скачиваний:
33
Добавлен:
05.02.2016
Размер:
574.98 Кб
Скачать

Прості запити

Призначення оператора SELECT полягає в тому, щоб вибирати необхідні дані з однієї або декількох таблиць. Це виключно потужний оператор, який здатний виконувати дії, еквівалентні операторам реляційної алгебри selection, projection i join. Загальний формат оператора SELECT має вид:

SELECT [DISTINCT | ALL] {* | column_expression [ AS new_name][,…]}

FROM table_name [alias][,…]

[WHERE condition]

[GROUP BY column_list] [HAVING condition]

[ORDER BY column_list]

Параметр column_expression– це ім’я стовпчика або алгебричного виразу над декількох імен. Параметрtable_name– це є ім’я існуючої в базі таблиці або представлення, до яких потрібно доступитись. Необов’язковий параметрalias– це скорочення для імені таблиціtable_name. Обробка елементів оператора SELECT виконується в такій послідовності:

  1. FROM - Визначаються імена таблиць, які використовуються

  2. WHERE - Виконується фільтрація рядків згідно заданої умови відбору

  3. GROUP BY - Утворюються групи рядків з однаковими значеннями в зазначених колонках

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

  5. SELECT – Встановлюється, які стовпчики повинні бути у вихідних даних

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

Порядок фраз в операторі SELECT не можна змінювати. Тільки дві фрази –SELECT і FROM є обов’язковими, всі інші можуть бути пропущеними. Результат запиту до таблиць є таблиця. Символ * в операторі SELECT означає, що будуть вибрані всі стовпчики таблиці.

Приклади. Нехай в таблиціtable_aзберігається інформація про покупки товарів, а вtable_b– про продаж цих товарів. Ці таблиці мають такий вид:

table_a table_b

kod

suma

data

kod

suma

data

1

100

1.1.2002

1

50

12.1.2002

2

150

2.1.2002

1

47

14.1.2002

1

55

10.1.2002

2

35

10.1.2002

1

40

15.1.2002

2

80

1.2.2002

2

89

2.2.2002

3

28

10.2.2002

В стовпчики “kod” в обох таблицях заноситься код товару. В стовпчик “suma” таблиці table_a заноситься вартість закупленого товару, а в таблиці table_b – сума проданого товару. В стовпчик “data” таблиці table_a заноситься дата закупки товару, а в table_b – дата продажу товару.

Задача. Одержати перелік товарів з відповідними сумами і датами, які були закуплені. Відповідний оператор SELECT матиме вид:

SELECT kod,suma,data

FROM table_a

Оскільки не задана умова відбору фраза WHERE не потрібна. Результат запиту матиме вид:

kod

suma

data

1

100

1.1.2002

2

150

2.1.2002

1

55

10.1.2002

1

40

15.1.2002

2

89

2.2.2002

3

28

10.2.2002

Точно такий же результат буде після виконання такого SELECT’у:

SELECT *

FROM table_a

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

SELECT suma, kod

FROM table_a

Результат запиту матиме вид:

suma

Kod

100

1

150

2

55

1

40

1

89

2

28

3

(6 рядків)

Використання ключового слова DISTINCT. Задача. Потрібно скласти перелік кодів товарів які закуповувались. Якщо оператор SELECT задати таким чином:

SELECT kod

FROM table_a

Результат запиту матиме вид:

Kod

1

2

1

1

2

3

(6 рядків)

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

SELECT DISTINCT kod

FROM table_a

Результат запиту матиме вид:

Kod

1

2

3

(3 рядки)

При використанні ключового слова ALL оператор SELECT повертає всі рядки.

За змовчуванням (не вказано ні DISTINCT ні ALL), вважається, що діє ALL.

Обчислювальні поля. Задача. Одержати перелік товарів з відповідними сумами і відповідними сумами податку ПДВ, які закладені у вартість закуплених товарів. Відповідний оператор SELECT матиме вид:

SELECT kod,suma,(suma*0.2)/(1+0.2) AS pdv

FROM table_a

Результат запиту матиме вид:

kod

suma

Pdv

1

100

16.666666

2

150

25

1

55

9.3333333

1

40

6.6666666

2

89

27.666666

3

28

4.6666666

(6 рядків)

Соседние файлы в папке Авт_ПМП