У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Реферат - Елементи мови SQL
42
то в результуючій таблиці будуть рядки з повтореннями - дублікати рядків автоматично не відкидаються.

Приклад 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. Відібрати всі пари постачальників так, щоб перший постачальник в парі мав


Сторінки: 1 2 3 4 5 6 7 8