SELECT sname, sal.snum, a.cname, b.cname
FROM cust a, cust b, sal
WHERE a.snum = b.snum
AND sal.snum = a.snum
ORDER BY sname, a.cname
Подзапросы
Подзапрос – это оператор SELECT, вложенный внутрь другого оператора SELECT.
Есть два основных вида подзапросов:
· однострочные подзапросы. Возвращают ноль строк или одну строку
· многострочные подзапросы. Возвращают от одной до нескольких строк
Кроме того, есть три подтипа подзапросов, которые могут возвращать одну или несколько строк:
· многостолбцовые подзапросы. Возвращают более одного столбца
· коррелированные подзапросы. Ссылаются на один или несколько столбцов во внешнем операторе SQL.
· Вложенные подзапросы. Подзапросы, помещенные внутрь другого подзапроса. Глубина вложений может составлять до 255.
Пример однострочного подзапроса во фразе WHERE
SELECT sname, city, comm FROM sal
WHERE snum =
(SELECT snum FROM sal WHERE sname= 'Peel');
В этом примере из строки таблицы sal для продавца Peel выбираются имя продавца (sname), город, в котором он работает (city) и его комиссионные (comm). В подзапросе в качестве условия выбора мы указываем имя продавца, и по этому имени извлекается номер продавца snum. Найденный в подзапросе номер snum используется теперь в условии выбора основного запроса.
Пример подзапроса во фразе FROM (встроенное представление)
SELECT snum, sname, comm
FROM
(SELECT snum, sname, comm
FROM sal WHERE city = 'London');
Здесь подзапрос помещен во фразу FROM вместо имени таблицы, поэтому он называется встроенным представлением (о представлениях см. п. 3.3.3). Подзапрос формирует данные только о продавцах, работающих в Лондоне.
Пример использования оператора IN с многострочным подзапросом
SELECT snum, sname, comm FROM sal
WHERE snum IN
(SELECT snum FROM sal WHERE city = 'London');
Здесь основной запрос выводит данные только о продавцах, работающих в Лондоне, как и в предыдущем примере. Но теперь в условии WHERE основного запроса выбираются номера snum только такие, которые возвращаются подзапросом. А подзапрос возвращает номера snum только продавцов, работающих в Лондоне.
3.1.2. Вставка, обновление и удаление строк в таблицах
Рассмотрим вопрос о том, как вводить, изменять и удалять данные таблиц с помощью команд INSERT, UPDATE и DELETE языка SQL.
Команда INSERT может быть построена, исходя из следующего синтаксиса.
INSERT INTO таблица
(поле [,])
{ VALUES ( выражение [,] ) | запрос }
Данный синтаксис позволяет использовать команду INSERT в двух вариантах в зависимости от того, нужно ли вставить в таблицу одиночные строки или сразу множество строк из другой таблицы. Например, приведенная команда добавит строку в таблицу SAL с пустыми значениями для третьего и четвертого столбцов:
INSERT INTO sal
VALUES (1008, ‘Tom’, NULL, NULL)
В следующем примере показан второй вариант команды INSERT: команда вставляет строки в таблицу SAL_COPY, копируя их из таблицы SAL
INSERT INTO sal_copy
SELECT * FROM sal
Синтаксис команды UPDATE можно представить следующим образом.
UPDATE таблица
SET { поле = { выражение | запрос } [,] | ( поле [,]) = запрос }
[ WHERE условие ]
В приведенном ниже примере командой UPDATE увеличивается на 50 рейтинг покупателей, чьи заказы оформлял продавец с номером 1001.
UPDATE cust SET rating=rating + 50
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.