Студопедия — Подзапити SELECT
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Подзапити SELECT






Підзапити можуть використовуватися для наступних цілей:
• Для визначення множини рядків, що вставляються в цільову таблицю виразами INSERT або CREATE TABLE
• Для визначення одного або більше значень, призначуваних існуючим рядкам в затвердженні UPDATE
• Для забезпечення необхідних умов у виразах WHERE, HAVING тверджень SELECT, UPDATE, і DELETE
Щоб визначити таблицю, оброблювану запитом, підзапит розташовується після оператора FROM замість імені таблиці. Можна використовувати підзапити замість таблиць таким же чином і в твердженнях INSERT, UDPATE і DELETE. Підзапити, використовувані таким чином, можуть застосовувати змінні кореляції, але тільки якщо ці змінні визначені всередині самого запиту і не містять зовнішніх посилань.
1. Наприклад, щоб визначити, хто працює у відділі Тейлора, можна спочатку використовувати підзапит, щоб визначити, в якому відділі цей Тейлор працює:
SELECT ename, deptno FROM emp WHERE deptno = (SELECT deptno FROM emp WHERE ename = 'Taylor');
Підзапит виконується один раз для всього батьківського твердження.
Підзапит може і сам містити підзапит, рівень вкладеності не обмежується.
2. підзапити можна використовувати для створення копій таблиць. Наприклад, створимо копію таблиці DEPT з ім'ям NEWDEPT:
CREATE TABLE newdept (deptno, dname, loc) AS SELECT deptno, dname, loc FROM dept;

Використання імен кореляції (аліасів, псевдонімів)

Іноді доводиться виконувати запити, у яких таблиця з'єднується сама із собою, або одна таблиця з'єднується двічі з іншою таблицею. При цьому икористовуються імена кореляції (аліаси, псевдоніми), які дозволяють розрізняти копії та таблиці-оригінали. Імена кореляції вводяться у розділі FROM і йдуть через пробіл після імені таблиці. Імена кореляції повинні використовуватися як префікс перед ім'ям стовпця й відокремлюються від імені стовпця крапкою. Якщо у запиті вказуються ті самі поля з різних екземплярів однієї таблиці, вони повинні бути перейменовані для усунення неоднозначності в іменуваннях колонок результуючої таблиці. Визначення імені кореляції діє тільки під час виконання запиту.

Приклад. Відібрати всі пари постачальників таким чином, щоб перший постачальник у парі мав статус, більший од статусу другого постачальника:

SELECT P1.PNAME AS PNAME1,

P1.PSTATUS AS PSTATUS1,

P2.PNAME AS PNAME2,

P2.PSTATUS AS PSTATUS2

FROM P P1, P P2

WHERE P1.PSTATUS1 > P2.PSTATUS2;

В результаті одержимо наступну таблицю:

PNAME1 PSTATUS1 PNAME2 PSTATUS2

Іванов 4 Петров 1

Іванов 4 Сидоров 2

Сидоров 2 Петров 1

 

Синтаксис з'єднаної таблиці має такий вигляд:

З'єднана таблиця::=

Перехресне з'єднання | Природне з'єднання | З'єднання за допомогою предиката |

З'єднання за допомогою імен стовпців | З'єднання об'єднання

Тип з'єднання::=

INNER | LEFT [ OUTER ] | RIGTH [ OUTER ] | FULL [ OUTER ]

Перехресне з'єднання::=

Таблиця А CROSS JOIN Таблиця В

Природне з'єднання::=

Таблиця А [ NATURAL ] [ Тип з'єднання ] JOIN Таблиця В

З'єднання за допомогою предиката::=

Таблиця А [ Тип з'єднання ] JOIN Таблиця В ON Предикат

З'єднання за допомогою імен стовпців::=

Таблиця А [ Тип з'єднання ] JOIN Таблиця В USING (Ім'я стовпця.,..)

З'єднання об'єднання::=

Таблиця А UNION JOIN Таблиця В

CROSS JOIN - перехресне з'єднання повертає просто декартовий добуток таблиць.

Таке з'єднання в розділі FROM може бути замінено списком таблиць через кому.

NATURAL JOIN - природне з'єднання відбувається по всіх стовпцях таблиць А і В, що мають однакові імена. У результуючу таблицю однакові стовпці вставляються тільки один раз.

JOIN... ON - з'єднання за допомогою предиката з'єднує рядки таблиць А і В за

допомогою зазначеного предиката.

JOIN... USING - з'єднання за допомогою імен стовпців з'єднує відношення подібно природному з'єднанню по тим загальним стовпцям таблиць А і Б, які зазначені в списку USING.

INNER - тип з'єднання "внутрішнє". Внутрішній тип з'єднання використовується за

замовчуванням, коли тип явно не заданий. У таблицях А і В з'єднуються ті рядки, для яких знайден збіг.

LEFT (OUTER) - тип з'єднання "ліве (зовнішнє)". Ліве з'єднання таблиць А і В містить у собі всі рядки з лівої таблиці А і ті рядки із правої таблиці В, для яких виявлений збіг. Для рядків з таблиці А, для яких не знайдено відповідності у таблиці В, у стовпці, що витягають із таблиці В, заносяться значення NULL.

RIGHT (OUTER) - тип з'єднання "праве (зовнішнє)". Праве з'єднання таблиць А і В містить у собі всі рядки із правої таблиці В і ті рядки з лівої таблиці А, для яких виявлений збіг. Для рядків з таблиці В, для яких не знайдено відповідності в таблиці А, у стовпці, що витягають із таблиці А, заносяться значення NULL.

FULL (OUTER) - тип з'єднання "повне (зовнішнє)". Це комбінація лівого й правого з'єднань. У повне з'єднання включаються всі рядки з обох таблиць.

Оператор декартового добутку

Реляційна алгебра: A Times B

Оператор SQL: SELECT A.Поле1, A.Поле2,..., B.Поле1, B.Поле2,...FROM A, B;

або SELECT A.Поле1, A.Поле2,..., B.Поле1, B.Поле2,...FROM A CROSS JOIN B;







Дата добавления: 2015-09-04; просмотров: 456. Нарушение авторских прав; Мы поможем в написании вашей работы!



Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Краткая психологическая характеристика возрастных периодов.Первый критический период развития ребенка — период новорожденности Психоаналитики говорят, что это первая травма, которую переживает ребенок, и она настолько сильна, что вся последую­щая жизнь проходит под знаком этой травмы...

РЕВМАТИЧЕСКИЕ БОЛЕЗНИ Ревматические болезни(или диффузные болезни соединительно ткани(ДБСТ))— это группа заболеваний, характеризующихся первичным системным поражением соединительной ткани в связи с нарушением иммунного гомеостаза...

Различие эмпиризма и рационализма Родоначальником эмпиризма стал английский философ Ф. Бэкон. Основной тезис эмпиризма гласит: в разуме нет ничего такого...

Индекс гингивита (PMA) (Schour, Massler, 1948) Для оценки тяжести гингивита (а в последующем и ре­гистрации динамики процесса) используют папиллярно-маргинально-альвеолярный индекс (РМА)...

Методика исследования периферических лимфатических узлов. Исследование периферических лимфатических узлов производится с помощью осмотра и пальпации...

Studopedia.info - Студопедия - 2014-2024 год . (0.014 сек.) русская версия | украинская версия