то в результуючій таблиці будуть рядки з повтореннями - дублікати рядків автоматично не відкидаються.
Приклад 9. Вибрати деякі колонки з початкової таблиці, видаливши з результату рядки, що повторюються (ключове слово DISTINCT):
SELECT DISTINCT P.NAME
FROM P;
Зауваження. Використовування ключового слова DISTINCT приводить до того, що в результуючій таблиці будуть видалені всі рядки, що повторюються.
Приклад 10. Використовування скалярних виразів і перейменувань колонок в запитах (ключове слово AS.):
SELECT
TOVAR.TNAME
TOVAR.KOL
TOVAR.PRICE
"=" AS EQU
TOVAR.KOL*TOVAR.PRICE AS SUMMA
FROM TOVAR;
У результаті одержимо таблицю з колонками, яких не було в початковій таблиці TOVAR:
TNAME | KOL | PRICE | EQU | SUMMA
Болт | 10 | 100 | = | 1000
Гайка | 20 | 200 | = | 4000
Гвинт | 30 | 300 | = | 9000
Приклад 11.Впорядкування результатів запиту (ключове слово ORDER.):
SELECT
PD.PNUM
PD.DNUM
PD.VOLUME
FROM PD
ORDER DNUM;
У результаті одержимо наступну таблицю, впорядковану по полю DNUM:
PNUM | DNUM | VOLUME
1 | 1 | 100
2 | 1 | 150
3 | 1 | 1000
1 | 2 | 200
2 | 2 | 250
1 | 3 | 300
Приклад 12. Впорядкування результатів запиту по декількох полях із зростанням або убуванням (ключові слова ASC, DESC):
SELECT
PD.PNUM
PD.DNUM
PD.VOLUME
FROM PD
ORDER
DNUM ASC
VOLUME DESC;
У результаті одержимо таблицю, в якій рядки йдуть в порядку зростання значення поля DNUM, а рядки, з однаковим значенням DNUM йдуть в порядку убування значення поля VOLUME:
PNUM | DNUM | VOLUME
3 | 1 | 1000
2 | 1 | 150
1 | 1 | 100
2 | 2 | 250
1 | 2 | 200
1 | 3 | 300
Зауваження. Якщо явно не вказані ключові слова ASC або DESC, то за умовчанням приймається впорядкування за збільшенням (ASC).
Відбір даних з декількох таблиць
Приклад 13. Природне з'єднання таблиць (спосіб 1 - явна вказівка умов з'єднання):
SELECT
P.PNUM
P.PNAME
PD.DNUM
PD.VOLUME
FROM P, PD
WHERE P.PNUM = PD.PNUM;
У результаті одержимо нову таблицю, в якій рядки з даними про постачальників сполучені з рядками з даними про поставки деталей:
PNUM | PNAME | DNUM | VOLUME
1 | Іванов | 1 | 100
1 | Іванов | 2 | 200
1 | Іванов | 3 | 300
2 | Петров | 1 | 150
2 | Петров | 2 | 250
3 | Сидоров | 1 | 1000
Зауваження. Таблиці, що сполучаються, перераховані в розділі FROM оператора, умова з'єднання приведена в розділі WHERE. Роздягнув WHERE, крім умови з'єднання таблиць, може також містити і умови відбору рядків.
Приклад 14. Природне з'єднання таблиць (спосіб 2 - ключові слова JOIN. USING.):
SELECT
P.PNUM
P.PNAME
PD.DNUM
PD.VOLUME
FROM P JOIN PD USING PNUM;
Зауваження. Ключове слово USING дозволяє явно вказати, по яких із загальних колонок таблиць проводитиметься з'єднання.
Приклад 15. Природне з'єднання таблиць (спосіб 3 - ключове слово NATURAL JOIN):
SELECT
P.PNUM
P.PNAME
PD.DNUM
PD.VOLUME
FROM P NATURAL JOIN PD;
Зауваження. В розділі FROM не вказане, по яких полях проводиться з'єднання. NATURAL JOIN автоматично сполучає по всіх однакових полях в таблицях.
Приклад 16. Природне з'єднання трьох таблиць:
SELECT
P.PNAME
D.DNAME
PD.VOLUME
FROM
P NATURAL JOIN PD NATURAL JOIN D;
У результаті одержимо наступну таблицю:
PNAME | DNAME | VOLUME
Іванов | Болт | 100
Іванов | Гайка | 200
Іванов | Гвинт | 300
Петров | Болт | 150
Петров | Гайка | 250
Сидоров | Болт | 1000
Приклад 17. Прямий добуток таблиць:
SELECT
P.PNUM
P.PNAME
D.DNUM
D.DNAME
FROM P, D;
У результаті одержимо наступну таблицю:
PNUM | PNAME | DNUM | DNAME
1 | Іванов | 1 | Болт
1 | Іванов | 2 | Гайка
1 | Іванов | 3 | Гвинт
2 | Петров | 1 | Болт
2 | Петров | 2 | Гайка
2 | Петров | 3 | Гвинт
3 | Сидоров | 1 | Болт
3 | Сидоров | 2 | Гайка
3 | Сидоров | 3 | Гвинт
Зауваження. Оскільки не вказана умова з'єднання таблиць, то кожний рядок першої таблиці з'єднається з кожним рядком другим таблиці.
Приклад 18. З'єднання таблиць по довільній умові. Розглянемо таблиці постачальників і деталей, якими привласнений деякий статую (див. приклад 8 з попереднього розділу):
PNUM | PNAME | PSTATUS
1 | Іванов | 4
2 | Петров | 1
3 | Сидоров | 2
Таблиця 1 Відношення P (Постачальники)
DNUM | DNAME | DSTATUS
1 | Болт | 3
2 | Гайка | 2
3 | Гвинт | 1
Таблиця 2 Відношення D (Деталі)
Відповідь на питання "які постачальники мають право поставляти які деталі?" дає наступний запит:
SELECT
P.PNUM
P.PNAME
P.PSTATUS
D.DNUM
D.DNAME
D.DSTATUS
FROM P, D
WHERE P.PSTATUS >= D.DSTATUS;
У результаті одержимо наступну таблицю:
PNUM | PNAME | PSTATUS | DNUM | DNAME | DSTATUS
1 | Іванов | 4 | 1 | Болт | 3
1 | Іванов | 4 | 2 | Гайка | 2
1 | Іванов | 4 | 3 | Гвинт | 1
2 | Петров | 1 | 3 | Гвинт | 1
3 | Сидоров | 2 | 2 | Гайка | 2
3 | Сидоров | 2 | 3 | Гвинт | 1
Використовування імен кореляції (аліасів, псевдонімів)
Іноді доводиться виконувати запити, в яких таблиця з'єднується сама з собою, або одна таблиця з'єднується двічі з іншою таблицею. При цьому використовуються імена кореляції (аліаси, псевдоніми), які дозволяють розрізняти копії таблиць, що сполучаються. Імена кореляції вводяться в розділі FROM і йдуть через пропуск після імені таблиці. Імена кореляції повинні використовуватися як префікс перед ім'ям стовпця і відділяються від імені стовпця крапкою. Якщо в запиті вказуються одні і ті ж поля з різних екземплярів однієї таблиці, вони повинні бути перейменовані для усунення неоднозначності в іменуючі колонок результуючій таблиці. Визначення імені кореляції діє тільки під час виконання запиту.
Приклад 19. Відібрати всі пари постачальників так, щоб перший постачальник в парі мав