- •Введение в sql
- •1. Введение в реляционную базу данных
- •2.Sql: Обзор
- •3. Использования sql для извлечения информации из таблиц
- •4. Использование реляционный и булевых операторов для создания более изощренных предикатов
- •5. Использование специальных операторов в условиях
- •6. Обобщение данных с помощью агрегатных функций
- •7. Формирование выводов запросов
- •8. Запрашивание многочисленных таблиц также как одной
- •9. Объединение таблицы с собой
- •10. Вставка одного запроса внутрь другого
- •11. Соотнесенные подзапросы
- •12. Использование оператора exists
- •13. Использование операторов any, all, и some
- •14. Использование предложения union
- •15. Ввод, удаление и изменение значений полей
- •16. Использование подзапросов с коммандами модификации
- •17. Создание таблиц
- •19. Поддержка целостности ваших данных
- •20. Введение: Представления
- •21. Изменение значей с помощью представлений
- •22. Кто что может делать в базе данных
- •Глава 23 продолжит обсуждение о выводах в sql, таких как сохранение
- •23. Глобальные аспекты sql
- •24. Как данные sql содержатся в упорядоченом виде
- •25. Использование sql с другим языком (вложенный sql)
- •Глава 1
- •Глава 2
- •Глава 3
- •Глава 4
- •Глава 5
- •Глава 6
- •Глава 7
- •Глава 8
- •Глава 9
- •Глава 10
- •Глава 11
- •Глава 12
- •Глава 13
- •Глава 14
- •Глава 15
- •Глава 16
- •Глава 17
- •Глава 18
- •Глава 19
- •Глава 20
- •Глава 21
- •Глава 22
- •Глава 23
- •Глава 24
- •Глава 25
- •Приложение b Тиры данных в sql
- •Приложение c Некоторые общие нестандартные средства sql
- •Intersect и minus
- •Приложение d Синтаксис и команда ссылки
Глава 7
1. SELECT onum, snum, amt * .12
FROM Orders;
2. SELECT 'For the city ', city, ', the highest rating is ', ",
MAX (rating)
FROM Customers
GROUP BY city;
3 SELECT rating, cname, cnum
FROM Customers
ORDER BY rating DESC;
4. SELECT odate, SUM (amt)
FROM Orders
GROUP BY odate
ORDER BY 2 DESC;
Глава 8
1. SELECT onum, cname
FROM Orders, Customers
WHERE Customers.cnum = Orders.cnum;
2. SELECT onum, cname, sname
FROM Orders, Customers, Salespeople
WHERE Customers.cnum = Orders.cnum
AND Salespeople.snum = Orders.snum;
3. SELECT cname, sname, comm
FROM Salespeople, Customers
WHERE Salespeople.snum = Customers.snum
AND comm * .12;
4. SELECT onum, comm * amt
FROM Salespeople, Orders, Customers
WHERE rating > 100
AND Orders.cnum = Customers.cnum
AND Orders.snum = Salespeople.snum;
Глава 9
1. SELECT first.sname, second.sname
FROM Salespeople first, Salespeople second
WHERE first.city = second.city
AND first.sname < second.sname;
Псевдонимам нет необходимости иметь именно такие имена.
2. SELECT cname, first.onum, second.onum
FROM Orders first, Orders second, Customers
WHERE first.cnum = second.cnum
AND first.cnum = Customers.cnum
AND first.onum < second.onum;
Ваш вывод может иметь некоторые отличия, но в вашем ответе все логи-
ческие компоненты должны быть такими же.
3. SELECT a.cname, a.city
FROM Customers a, Customers b
WHERE a.rating = b.rating
AND b.cnum = 2001;
Глава 10
1. SELECT *
FROM Orders
WHERE cnum =
(SELECT cnum
FROM Customers
WHERE cname = 'Cisneros');
или
SELECT *
FROM Orders
WHERE cnum IN
(SELECT cnum
FROM Customers
WHERE cname = 'Cisneros');
2. SELECT DISTINCT cname, rating
FROM Customers, Orders
WHERE amt >
(SELECT AVG (amt)
FROM Orders)
AND Orders.cnum = Customers.cnum;
3. SELECT snum, SUM (amt)
FROM Orders
GROUP BY snum
HAVING SUM (amt) >
(SELECT MAX (amt)
FROM Orders);
Глава 11
1. SELECT cnum, cname
FROM Customers outer
WHERE rating =
(SELECT MAX (rating)
FROM Customers inner
WHERE inner.city = outer.city);
2. Решение с помощью соотнесенного подзапроса:
SELECT snum, sname
FROM Salespeople main
WHERE city IN
(SELECT city
FROM Customers inner
WHERE inner.snum < > main.snum);
Решение с помощью объединения:
SELECT DISTINCT first.snum, sname
FROM Salespeople first, Customers second
WHERE first.city = second.city
AND first.snum < > second.snum;
Соотнесенный подзапрос находит всех заказчиков не обслуживаемых данным
продавцом и выясняет: живет ли кто-нибудь из их в его городе. Решение
с помощью обьединения является более простым и более интуитивным. Оно
находит случаи где поля city совпадают, а поля snums нет. Следователь-
но обьединение является более изящным решением для этой проблемы, чем
то которое мы исследовали до этого. Имеется еще более изящное решение
с помощью подзапроса, с которым Вы столкнетесь позже.