(ВСЯКИЙ РАЗ КАК)
Синтаксис
EXEC SQL WHENEVER <SQLcond> <actlon> <SQL term>
<SQLcond> ::= SQLERROR | NOT FOUND | SQLWARNING
(последнее — нестандартное)
<action> ::= CONTINUE | GOTO <target> | GOTO <target>
<target> ::= зависит от главного языка
Приложение E
Таблицы, используемые в SQL
ТАБЛИЦА 1: ПРОДАВЦЫ
| snum
| sname
| city
| comm
|
|
| Peel
| London
| .12
|
|
| Serres
| San Jose
| .13
|
|
| Motika
| London
| .11
|
|
| Rifkin
| Barcelona
| .15
|
|
| Axelrod
| New York
| .10
|
ТАБЛИЦА 2: ЗАКАЗЧИКИ
| cnum
| cname
| city
| rating
| snum
|
|
| Hoffman
| London
|
|
|
|
| Giovanni
| Rome
|
|
|
|
| Liu
| San Jose
|
|
|
|
| Grass
| Berlin
|
|
|
|
| Clemens
| London
|
|
|
|
| Cisneros
| San Jose
|
|
|
|
| Pereira
| Rome
|
|
|
ТАБЛИЦА 3: ЗАКАЗЫ
| onum
| amt
| odate
| cnum
| snum
|
|
| 18.69
| 10/03/1990
|
|
|
|
| 767.19
| 10/03/1990
|
|
|
|
| 1900.10
| 10/03/1990
|
|
|
|
| 5160.45
| 10/03/1990
|
|
|
|
| 1098.16
| 10/03/1990
|
|
|
|
| 1713.23
| 10/04/1990
|
|
|
|
| 75.75
| 10/04/1990
|
|
|
|
| 4723.00
| 10/05/1990
|
|
|
|
| 1309.95
| 10/06/1990
|
|
|
|
| 9891.88
| 10/06/1990
|
|
|
СОДЕРЖАНИЕ
Об Авторе.................................... Ошибка! Закладка не определена.
Предисловие................................................................ 1
Введение в реляционные базы данных........................................................................................... 3
Введение................................................................... 3
Что такое реляционная база данных?......................................... 3
Связывание одной таблицы с другой.......................................... 4
Порядок строк произволен................................................... 4
Идентификация строк (первичные ключи)...................................... 4
Столбцы именуются и нумеруются............................................. 5
Типовая база данных........................................................ 5
Резюме..................................................................... 7
Работа с SQL............................................................... 8
SQL: обзор.......................................................................................................................................... 9
Как работает SQL?.......................................................... 9
Что делает ANSI?........................................................... 9
Интерактивный и встроенный SQL............................................ 10
Подразделы SQL............................................................ 10
Различные типы данных..................................................... 10
Несогласованности SQL..................................................... 11
Что такое пользователь?................................................... 11
Условия и терминология.................................................... 12
Резюме.................................................................... 12
Работа с SQL.............................................................. 12
Использование SQL для извлечения информации из таблиц....................................................... 13
Создание запроса.......................................................... 13
Что такое запрос?......................................................... 13
Где применяются запросы?.................................................. 13
Команда SELECT............................................................ 13
Выбирайте всегда самый простой способ..................................... 14
Описание SELECT........................................................... 15
Просмотр определенного столбца таблицы.................................... 15
Переупорядочивание столбцов............................................... 15
Удаление избыточных данных................................................ 16
Параметры DISTINCT........................................................ 17
ALL вместо DISTINCT....................................................... 17
Квалифицированный выбор при использовании предложений..................... 17
Резюме.................................................................... 18
Работа с SQL.............................................................. 18
Использование реляционных и булевых операторов для создания более изощрённых предикатов 21
Реляционные операторы..................................................... 21
Булевы операторы.......................................................... 22
Резюме.................................................................... 25
Работа с SQL.............................................................. 25
Использование специальных операторов в условиях................................................................... 27
Оператор IN............................................................... 27
Оператор BETWEEN.......................................................... 28
Оператор LIKE............................................................. 29
Работа с нулевыми (NULL) значениями....................................... 31
Оператор NULL............................................................. 31
Использование NOT со специальными операторами............................. 31
Резюме.................................................................... 32
Работа с SQL.............................................................. 32
Обобщение данных с помощью агрегатных функций.................................................................. 33
Что такое агрегатные функции?............................................. 33
Как использовать агрегатные функции?...................................... 33
Специальные атрибуты COUNT................................................ 34
Использование DISTINCT.................................................... 34
Использование COUNT со строками, а не значениями.......................... 34
Включение дубликатов в агрегатные функции................................. 35
Агрегаты, построенные на скалярном выражении.............................. 35
Предложение GROUP BY...................................................... 35
Предложение HAVING........................................................ 36
Не делайте вложенных агрегатов............................................ 38
Резюме.................................................................... 38
Работа с SQL.............................................................. 39
Форматирование вывода запросов................................................................................................ 40
Строки и выражения........................................................ 40
Скалярное выражение на основе выбираемых полей........................................ 40
Столбцы вывода.................................................................................................... 40
Помещение текста в вашем выводе запроса...................................................... 40
Упорядочение вывода полей................................................. 42
Упорядочение по нескольким столбцам............................................................... 42
Упорядочение агрегатных групп.......................................................................... 43
Упорядочение вывода по номеру столбца........................................................... 44
Упорядочение с помощью оператора NULL......................................................... 45
Резюме.................................................................... 45
Работа с SQL.............................................................. 45
Запрос из нескольких таблиц так же, как из одной...................................................................... 48
Объединение таблиц........................................................ 48
Имена таблиц и столбцов................................................... 48
Создание объединения...................................................... 48
Объединение таблиц через справочную целостность........................... 49
Объединения таблиц по равенству значений в столбцах и другие виды объединений 50
Объединение более двух таблиц............................................. 50
Резюме.................................................................... 51
Работа с SQL.............................................................. 51
Объединение таблицы с собой........................................................................................................ 53
Как делать объединение таблицы с собой?................................... 53
Псевдонимы................................................................ 53
Устранение избыточности................................................... 54
Проверка ошибок........................................................... 55
Больше псевдонимов........................................................ 55
Еще больше комплексных объединений........................................ 55
Резюме.................................................................... 57
Работа с SQL.............................................................. 57
Вставка одного запроса внутрь другого........................................................................................ 59
Как работает подзапрос?................................................... 59
Значения, которые могут выдавать подзапросы............................... 60
DISTINCT с подзапросами................................................... 60
Предикаты с подзапросами являются необратимыми............................ 61
Использование агрегатных функций в подзапросах............................ 61
Использование подзапросов, которые выдают много строк с помощью оператора IN 62
Подзапросы выбирают одиночные столбцы..................................... 64
Использование выражений в подзапросах..................................... 64
Подзапросы в предложении HAVING........................................... 65
Резюме.................................................................... 65
Работа с SQL.............................................................. 66
Соотнесенные подзапросы............................................................................................................. 67
Как сформировать соотнесенный подзапрос................................... 67
Как работает соотнесенный подзапрос....................................... 67
Использование соотнесенных подзапросов для нахождения ошибок.............. 69
Сравнение таблицы с собой................................................. 69
Соотнесенные подзапросы в предложении HAVING.............................. 70
Соотнесенные подзапросы и объединения..................................... 71
Резюме.................................................................... 71
Работа с SQL.............................................................. 71
Использование оператора EXISTS.................................................................................................. 73
Как работает EXISTS?...................................................... 73
Выбор столбцов с помощью EXISTS........................................... 74
Использование EXISTS с соотнесенными подзапросами......................... 74
Комбинация из EXISTS и объединения........................................ 74
Использование NOT EXISTS.................................................. 75
EXISTS и агрегаты......................................................... 76
Более удачный пример подзапроса........................................... 76
Резюме.................................................................... 77
Работа с SQL.............................................................. 77
Использование операторов ANY, ALL и SOME............................................................................... 79
Специальные операторы ANY или SOME........................................ 79
Использование операторов IN или EXISTS вместо оператора ANY............... 79
Как ANY может стать неоднозначным......................................... 81
Специальный оператор ALL.................................................. 83
Равенства и неравенства................................................... 84
Правильное понимание ANY и ALL............................................ 86
Как ANY, ALL, и EXIST поступают с отсутствующими и неизвестными данными... 86
Когда подзапрос возвращается пустым....................................... 86
ANY и ALL вместо EXISTS с пустым указателем (NULL)........................ 86
Использование COUNT вместо EXISTS......................................... 87
Резюме.................................................................... 88
Работа с SQL.............................................................. 88
Использование предложения UNION.............................................................................................. 89
Объединение нескольких запросов в один.................................... 89
Когда вы можете делать объединение между запросами?....................... 89
UNION и устранение дубликатов............................................. 90
Использование строк и выражений с UNION................................... 91
Использование UNION с ORDER BY............................................ 92
Внешнее объединение....................................................... 93
Резюме.................................................................... 95
Работа с SQL.............................................................. 95
Ввод, удаление и изменение значений полей................................................................................ 97
Команды модификации языка DML............................................. 97
Ввод значений............................................................. 97
Вставка пустых указателей (NULL).......................................... 97
Именование столбца для вставки (INSERT)................................... 98
Вставка результатов запроса............................................... 98
Изменение значений поля................................................... 99
Модифицирование только определенных строк................................. 99
Команда UPDATE для многих столбцов........................................ 99
Использование выражений для модификации.................................. 100
Модифицирование пустых (NULL) значений................................... 100
Резюме................................................................... 100
Работа с SQL............................................................. 100
Использование подзапросов с командами модификации.......................................................... 103
Использование подзапросов с INSERT....................................... 103
Не вставляйте дубликаты строк............................................ 103
Использование подзапросов, созданных во внешней таблице запроса.......... 104
Использование подзапросов с DELETE....................................... 104
Использование подзапросов с UPDATE....................................... 106
Столкновение с ограничениями подзапросов команды DML..................... 106
Резюме................................................................... 107
Работа с SQL............................................................. 107
Создание таблиц........................................................................................................................... 109
Команда создания таблицы................................................. 109
Индексы.................................................................. 110
Уникальность индекса..................................................... 111
Удаление индексов........................................................ 111
Изменение таблицы после того, как она была создана....................... 111
Удаление таблиц.......................................................... 112
Резюме................................................................... 112
Работа с SQL............................................................. 112
Ограничение значений ваших данных........................................................................................ 113
Ограничение таблиц....................................................... 113
Объявление ограничений................................................... 113
Использование ограничений для исключения пустых (NULL) указателей........ 113
Убедитесь, что значения уникальны........................................ 114
Уникальность как ограничение столбца..................................... 114
Уникальность как ограничение таблицы..................................... 114
Ограничение первичных ключей............................................. 115
Первичные ключи более чем одного поля.................................... 116
Проверка значений полей (CHECK).......................................... 116
Использование CHECK, чтобы предопределять допустимое вводимое значение... 116
Проверка условий, базирующаяся на нескольких полях....................... 117
Установка значений по умолчанию.......................................... 118
Резюме................................................................... 119
Работа с SQL............................................................. 119
Поддержка целостности ваших данных...................................................................................... 123
Внешний ключ и родительский ключ......................................... 123
Многостолбцовые внешние ключи............................................ 123
Смысл внешнего и родительского ключей.................................... 123
Ограничение FOREIGN KEY.................................................. 124
Как можно поля представить в качестве внешних ключей..................... 124
Внешний ключ как ограничение таблицы..................................... 124
Внешний ключ как ограничение столбцов.................................... 125
Не указывать список столбцов первичных ключей............................ 125
Как справочная целостность ограничивает значения родительского ключа..... 126
Первичный ключ как уникальный внешний ключ............................... 126
Ограничения внешнего ключа............................................... 126
Что случится, если вы выполните команду модификации...................... 126
Включение описаний таблицы............................................... 127
Действие ограничений..................................................... 127
Внешние ключи, которые ссылаются обратно к их подчиненным таблицам....... 129
Резюме................................................................... 130
Работа с SQL............................................................. 130
Введение в представления........................................................................................................... 131
Что такое представление?................................................. 131
Команда CREATE VIEW...................................................... 131
Модифицирование представлений............................................ 132
Именование столбцов...................................................... 132
Комбинирование предикатов представлений и основных запросов в представлениях 133
Групповые представления.................................................. 134
Представления и объединения.............................................. 134
Представления и подзапросы............................................... 135
Чего не могут делать представления....................................... 135
Удаление представлений................................................... 136
Резюме................................................................... 136
Работа с SQL............................................................. 136
Изменение значений с помощью представлений........................................................................ 137
Модифицирование представления............................................ 137
Определение модифицируемости представления............................... 138
Модифицируемые представления и представления "только чтение"............. 138
Что является модифицируемым представлением............................... 139
Проверка значений, помещаемых в представление............................ 139
Предикаты и исключенные поля............................................. 140
Проверка представлений, которые базируются на других представлениях...... 141
Резюме................................................................... 141
Работа с SQL............................................................. 142
Кто что может делать в базе данных........................................................................................... 143
Пользователи............................................................. 143
Регистрация.............................................................. 143
Предоставление привилегий................................................ 143
Стандартные привилегии................................................... 144
Команда GRANT............................................................ 144
Группы привилегий, группы пользователей.................................. 144
Ограничение привилегий на определенные столбцы........................... 145
Использование аргументов ALL и PUBLIC.................................... 145
Предоставление привилегий с помощью WITH GRANT OPTION.................... 146
Отмена привилегий........................................................ 146
Использование представлений для фильтрации привилегий.................... 147
Кто может создавать представления?....................................... 147
Ограничение привилегии SELECT для определенных столбцов.................. 147
Ограничение привилегий для определенных строк............................ 147
Предоставление доступа только к извлеченным данным....................... 148
Использование представлений в качестве альтернативы к ограничениям....... 148
Другие типы привилегий................................................... 149
Типичные привилегии системы.............................................. 149
Создание и удаление пользователей........................................ 149
Резюме................................................................... 150
Работа с SQL............................................................. 150
Глобальные аспекты SQL............................................................................................................. 151
Переименование таблиц.................................................... 151
Переименование с тем же самым именем..................................... 151
Одно имя для каждого..................................................... 151
Удаление синонимов....................................................... 152
Как база данных распределена для пользователей?.......................... 152
Когда сделанные изменения становятся постоянными?........................ 153
Как SQL общается сразу со многими пользователями......................... 154
Типы блокировок.......................................................... 155
Другие способы блокировки данных......................................... 156
Резюме................................................................... 156
Работа с SQL............................................................. 157
Как данные SQL содержатся в упорядоченном виде................................................................. 159
Каталог системы.......................................................... 159
Типичный системный каталог............................................... 159
Использование представлений в таблицах каталога.......................... 160
Разрешить пользователям видеть (только) их собственные объекты........... 160
Комментарий в содержании каталога........................................ 161
Остальное из каталога.................................................... 162
Другое использование каталога............................................ 166
Резюме................................................................... 166
РАБОТА С SQL............................................................. 167
Использование SQL с другим языком (встроенный SQL)........................................................... 169
Что такое вложение SQL................................................... 169
Зачем вкладывать SQL?.................................................... 169
Как делаются вложения SQL................................................ 169
Использование переменных основного языка в SQL........................... 170
Объявление переменных.................................................... 171
Извлечение значений переменных........................................... 172
Курсор................................................................... 172
SQLCODE.................................................................. 174
Использование SQLCODE для управления циклами............................. 174
Предложение WHENEVER..................................................... 174
Модифицирование курсоров................................................. 175
Переменная INDICATOR..................................................... 176
Использование переменной INDICATOR для эмуляции NULL значений SQL........ 177
Другое использование переменной INDICATOR................................ 178
Резюме................................................................... 178
Работа с SQL............................................................. 179
Ответы для упражнений............................................................................................................... 181
Глава 1.................................................................. 181
Глава 2.................................................................. 181
Глава 3.................................................................. 181
Глава 4.................................................................. 181
Глава 5.................................................................. 182
Глава 6.................................................................. 183
Глава 7.................................................................. 183
Глава 8.................................................................. 183
Глава 9.................................................................. 184
Глава 10................................................................. 184
Глава 11................................................................. 184
Глава 12................................................................. 185
Глава 13................................................................. 185
Глава 14................................................................. 186
Глава 15................................................................. 186
Глава 16................................................................. 187
Глава 17................................................................. 187
Глава 18................................................................. 187
Глава 19................................................................. 188
Глава 20................................................................. 188
Глава 21................................................................. 189
Глава 22................................................................. 189
Глава 23................................................................. 189
Глава 24................................................................. 190
Глава 25................................................................. 191
Типы данных в SQL...................................................................................................................... 195
Типы ANSI................................................................ 195
Эквивалентные типы данных в других языках................................ 195
Некоторые общие нестандартные средства SQL........................................................................ 197
Типы данных.............................................................. 197
Команда FORMAT........................................................... 198
Функции.................................................................. 199
INTERSECT и MINUS........................................................ 200
Автоматические внешние объединения....................................... 200
Отслеживание действий.................................................... 201
Справочник по командам и синтаксису...................................................................................... 203
SQL элементы............................................................. 203
SQL команды.............................................................. 206
Таблицы, используемые в SQL..................................................................................................... 211