- •Iso (международной организацией по
- •2 Понимание sql
- •Что такое - реляционная база данных?
- •Порядок строк произволен
- •4 Понимание sql ___________________________________________________________________
- •Идентификация строк ( первичные ключи )
- •Столбцы именуются и нумеруются
- •8 Понимание sql
- •************** Работа с sql **************
- •Sql : обзор
- •Что делает ansi ?
- •Интерактивный и вложенный sql
- •14 Понимание sql
- •Субподразделения sql
- •16 Понимание sql
- •Sql несогласованности
- •Что такое - пользователь?
- •18 Понимание sql
- •Условия и терминология
- •************** Работа с sql **************
- •24 Понимание sql
- •26 Понимание sql
- •Переупорядочение столбца
- •28 Понимание sql
- •Параметры distinct
- •30 Понимание sql
- •32 Понимание sql
- •************* Работа с sql ***************
- •38 Понимание sql
- •40 Понимание sql
- •42 Понимание sql
- •44 Понимание sql
- •Использование специальных операторов в условиях
- •50 Понимание sql
- •52 Понимание sql
- •54 Понимание sql
- •56 Понимание sql
- •************** Работа с sql **************
- •Обобщение данных с помощью агрегатных функций
- •64 Понимание sql
- •66 Понимание sql
- •Включение дубликатов в агрегатные функции
- •Предложение group by
- •68 Понимание sql
- •Предложение having
- •70 Понимание sql
- •72 Понимание sql
- •************** Работа с sql **************
- •Формирование выводов запросов
- •Помещение текста в вашем выводе запроса
- •78 Понимание sql
- •80 Понимание sql
- •82 Понимание sql
- •Упорядочение вывода по номеру столбца
- •84 Понимание sql
- •************** Работа с sql **************
- •Запрашивание многочисленых таблиц также как одной
- •90 Понимание sql
- •92 Понимание sql
- •94 Понимание sql
- •************** Работа с sql **************
- •Объединение таблицы с собой
- •Псевдонимы
- •100 Понимание sql
- •Устранение избыточности
- •102 Понимание sql
- •Больше псевдонимов
- •104 Понимание sql
- •106 Понимание sql
- •************** Работа с sql **************
- •Вставка одного запроса внутрь другого
- •112 Понимание sql
- •114 Понимание sql
- •116 Понимание sql
- •In определяет набор значений, одно из которых должно совпадать с другим
- •118 Понимание sql
- •In является подходящим, если запрос может ограниченно производить одно
- •120 Понимание sql
- •122 Понимание sql
- •*************** Работа с sql *************
- •Соотнесенные подзапросы
- •130 Понимание sql
- •132 Понимание sql
- •Соотнесенные подзапросы в предложении having
- •134 Понимание sql
- •*************** Работа с sql *************
- •Использование оператора exists
- •140 Понимание sql
- •142 Понимание sql
- •144 Понимание sql
- •146 Понимание sql
- •************** Работа с sql **************
- •Использование оператора exists
- •152 Понимание sql
- •154 Понимание sql _____________________________________________________________________
- •156 Понимание sql
- •158 Понимание sql
- •160 Понимание sql
- •162 Понимание sql
- •Использование count вместо exists
- •166 Понимание sql
- •************** Работа с sql **************
************** Работа с sql **************
1. Предположим что каждый продавец имеет 12% комиссионных.
Напишите запрос к таблице Порядков который мог бы вывести номер
порядка, номер продавца, и сумму комиссионных продавца для этого
порядка.
2. Напишите запрос к таблице Заказчиков который мог бы найти высшую
оценку в каждом городе. Вывод должен быть в такой форме:
For the city (city), the highest rating is: (rating).
3. Напишите запрос который выводил бы список заказчиков в нисходящем
порядке. Вывод поля оценки( rating ) должден сопровождаться именем
закзчика и его номером.
4. Напишите запрос который бы выводил общие порядки на каждый день и
помещал результаты в нисходящем порядке.
( См. Приложение A для ответов. )
8
Запрашивание многочисленых таблиц также как одной
88 ПОНИМАНИЕ SQL
______________________________________________________________________
ГЛ. 8
ДО ЭТОГО, КАЖДЫЙ ЗАПРОС КОТОРЫЙ МЫ ИССЛЕДОВАЛИ
основывался на одиночной таблице.
В этой главе, вы узнаете как сделать запрос любого числа таблиц с
помощью одной команды. Это - чрезвычайно мощное средство потому
что оно не только объединяет вывод из многочисленых таблиц, но и
определяет связи между ними. Вы обучитесь различным формам кото-
рые могут использовать эти связи, а также устанавливать и использо-
вать их чтобы удовлетворять возможным специальным требованиям.
============= ОБЪЕДИНЕНИЕ ТАБЛИЦ ============
Одна из наиболее важных особенностей запросов SQL - это их способ-
ность определять связи между многочислеными таблицами и выводить
информацию из них в терминах этих связей, всю внутри одной команды.
Этот вид операции называется - объединением, которое является одним
из видов операций в реляционных базах данных. Как установлено в
Главе 1, главное в реляционном подходе это связи которые можно созда-
вать между позициями данных в таблицах.
Используя обьединения, мы непосредственно связываем информацию с
любым номером таблицы, и таким образом способны создавать связи
между сравнимыми фрагментами данных.
При обьединении, таблицы представленые списком в предложении FROM
запроса, отделяются запятыми. Предикат запроса может ссылаться к лю-
бому столбцу любой связанной таблицы и, следовательно, может использо-
ваться для связи между ими. Обычно, предикат сравнивает значения в
столбцах различных таблиц чтобы определить, удовлетворяет ли WHERE
установленному условию.
ИМЕНА ТАБЛИЦ И СТОЛБЦОВ
Полное имя столбца таблицы фактически состоит из имени таблицы,
сопровождаемого точкой и затем именем столбца. Имеются несколько
примеров имен :
Salespeople.snum
Salespeople.city
Orders.odate
ЗАПРАШИВАНИЕ МНОГОЧИСЛЕНЫХ ТАБЛИЦ КАК ОДНОЙ 89
______________________________________________________________________
До этого, вы могли опускать имена таблиц потому что вы запрашивали
только одну таблицу одновременно, а SQL достаточно интелектуален
чтобы присвоить соответствующий префикс, имени таблицы. Даже когда
вы делаете запрос многочисленых таблиц, вы еще можете опускать имена
таблиц, если все ее столбцы имеют различные имена. Но это не всегда
так бывает. Например, мы имеем две типовые таблицы со столбцами
называемыми city.
Если мы должны связать эти столбцы( кратковременно ), мы будем дол-
жны указать их с именами Salespeople.city или Customers.city, чтобы SQL
мог их различать.
СОЗДАНИЕ ОБЬЕДИНЕНИЯ
Предположим что вы хотите поставить в соответствии вашему продавцу
ваших заказчиков в городе в котором они живут, поэтому вы увидите все
комбинации продавцов и заказчиков для этого города. Вы будете должны
брать каждого продавца и искать в таблице Заказчиков всех заказчиков
того же самого города. Вы могли бы сделать это, введя следующую коман-
ду ( вывод показывается в Рисунке 8.1 ):
SELECT Customers.cname, Salespeople.sname,
Salespeople.city
FROM Salespeople, Customers
WHERE Salespeople.city = Customers.city;
=============== SQL Execution Log ============
| SELECT Customers.cname, Salespeople.sname, |
| Salespeople.city |
| FROM Salespeople, Customers |
| WHERE Salespeople.city = Customers.city |
| ============================================= |
| cname cname city |
| ------- -------- ---- |
| Hoffman Peel London |
| Hoffman Peel London |
| Liu Serres San Jose |
| Cisneros Serres San Jose |
| Hoffman Motika London |
| Clemens Motika London |
=============================================
Рисунок 8.1: Объединение двух таблиц