- •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 **************
Помещение текста в вашем выводе запроса
Символ 'A', когда ничего не значит сам по себе, - является константой,
такой например как число 1.
Вы можете вставлять константы в предложение SELECT запроса, включая
и текст. Однако символьные константы, в отличие от числовых констант,
не могут использоваться в выражениях. Вы можете иметь выражение 1 + 2
в вашем предложении SELECT, но вы не можете использовать выражение
типа 'A' + 'B'; это приемлемо только если мы имеем в виду что 'A' и 'B' это
просто буквы, а не переменные и не символы.
Тем ни менее, возможность вставлять текст в вывод ваших запросов очень
удобная штука.
Вы можете усовершенствовать предыдущий пример представив комиссион-
ные как проценты со знаком процента (%). Это даст вам возможность помещать
в вывод такие единицы как символы и комментарии, как например в следую-
78 Понимание sql
______________________________________________________________________
ГЛ. 7
щем примере ( вывод показывается в Рисунке 7.2 )
SELECT snum, sname, city, ' % ', comm * 100
FROM Salespeople;
=============== SQL Execution Log ============
| |
| SELECT snum, sname, city, '%' comm * 100 |
| FROM Salespeople; |
| ==============================================|
| snum sname city |
| ------ -------- ----------- ---- --------- |
| 1001 Peel London % 12.000000 |
| 1002 Serres San Jose % 13.000000 |
| 1004 Motika London % 11.000000 |
| 1007 Rifkin Barcelona % 15.000000 |
| 1003 Axelrod New York % 10.000000 |
| |
===============================================
Рисунок 7.2: Вставка символов в ваш вывод
Обратите внимание что пробел перед процентом вставляется как часть
строки. Эта же самая особенность может использоваться чтобы маркиро-
вать вывод вместе с вставляемыми комментариями. Вы должны помнить,
что этот же самый комментарий будет напечатан в каждой строке вывода,
а не просто один раз для всей таблицы. Предположим что вы генерируете
вывод для отчета который бы указывал число порядков получаемых в тече-
ние каждого дня. Вы можете промаркировать ваш вывод ( см. Рисунок 7.3 )
сформировав запрос следующим образом:
SELECT ' For ', odate, ', there are ',
COUNT ( DISTINCT onum ), 'orders.'
FROM Orders
GROUP BY odate;
Грамматической некорректности вывода, на 5 Октября, невозможно
избежать не создав запроса, еще более сложного чем этот.
( Вы будете должны использовать два запроса с UNION, который
ФОРМАТИРОВАНИЕ ВЫВОДОВ ЗАПРОСОВ 79
______________________________________________________________________
=============== SQL Execution Log ==============
| |
| SELECT 'For', odate, ', ' there are ' , |
| COUNT (DISTINCT onum), ' orders ' |
| FROM Orders |
| GROUP BY odate; |
| =============================================== |
| odate |
| ------ ---------- --------- ------ ------- |
| For 10/03/1990 , there are 5 orders. |
| For 10/04/1990 , there are 2 orders. |
| For 10/05/1990 , there are 1 orders. |
| For 10/06/1990 , there are 2 orders. |
| |
================================================
Рисунок 7.3: Комбинация текста, значений поля, и агрегатов
мы будем описывать в Главе 14. ) Как вы можете видеть, одиночный
неизменный комментарий для каждой строки таблицы может быть очень
полезен, но имеет ограничения. Иногда изящнее и полезнее, произвести
один комментарий для всего вывода в целом, или производить свой собс-
твенный комментарии для каждой строки.
Различные программы использующие SQL часто обеспечивают специаль-
ные средства типа генератора отчетов( например Report Writer), которые разработаны чтобы форматировать и совершенствовать вывод. Вложенный
SQL может также эксплуатировать возможности того языка в который он
вложен. SQL сам по себе интересен прежде всего при операциях с дан-
ными. Вывод, по существу, это информация, и программа использующая
SQL может часто использовать эту информацию и помещать ее в более
привлекательную форму. Это, однако, вне сферы самой SQL.
======= УПОРЯДОЧЕНИЕ ВЫВОДА ПОЛЕЙ ========
Как мы подчеркивали, таблицы - это неупорядоченные наборы данных, и
данные которе выходят из их, не обязательно появляются в какой-то опре-
деленной последовательности. SQL использует команду ORDER BY чтобы
позволять вам упорядочивать ваш вывод. Эта команда упорядочивает вывод