Таблицы, используемые в 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
Введение................................................................... 1
Что такое реляционная база данных?......................................... 1
Связывание одной таблицы с другой.......................................... 2
Порядок строк произволен................................................... 2
Идентификация строк (первичные ключи)...................................... 2
Столбцы именуются и нумеруются............................................. 2
Типовая база данных........................................................ 3
Резюме..................................................................... 5
Работа с SQL............................................................... 5
SQL: обзор.......................................................................................................................................... 6
Как работает SQL?.......................................................... 6
Что делает ANSI?........................................................... 6
Интерактивный и встроенный SQL............................................. 6
Подразделы SQL............................................................. 7
Различные типы данных...................................................... 7
Несогласованности SQL...................................................... 8
Что такое пользователь?.................................................... 8
Условия и терминология..................................................... 8
Резюме..................................................................... 8
Работа с SQL............................................................... 9
Использование SQL для извлечения информации из таблиц....................................................... 10
Создание запроса.......................................................... 10
Что такое запрос?......................................................... 10
Где применяются запросы?.................................................. 10
Команда SELECT............................................................ 10
Выбирайте всегда самый простой способ..................................... 11
Описание SELECT........................................................... 11
Просмотр определенного столбца таблицы.................................... 11
Переупорядочивание столбцов............................................... 12
Удаление избыточных данных................................................ 12
Параметры DISTINCT........................................................ 13
ALL вместо DISTINCT....................................................... 13
Квалифицированный выбор при использовании предложений..................... 14
Резюме.................................................................... 14
Работа с SQL.............................................................. 15
Использование реляционных и булевых операторов для создания более изощрённых предикатов 16
Реляционные операторы..................................................... 16
Булевы операторы.......................................................... 17
Резюме.................................................................... 20
Работа с SQL.............................................................. 20
Использование специальных операторов в условиях................................................................... 21
Оператор IN............................................................... 21
Оператор BETWEEN.......................................................... 22
Оператор LIKE............................................................. 23
Работа с нулевыми (NULL) значениями....................................... 25
Оператор NULL............................................................. 25
Использование NOT со специальными операторами............................. 25
Резюме.................................................................... 26
Работа с SQL.............................................................. 26
Обобщение данных с помощью агрегатных функций.................................................................. 27
Что такое агрегатные функции?............................................. 27
Как использовать агрегатные функции?...................................... 27
Специальные атрибуты COUNT................................................ 28
Использование DISTINCT.................................................... 28
Использование COUNT со строками, а не значениями.......................... 28
Включение дубликатов в агрегатные функции................................. 29
Агрегаты, построенные на скалярном выражении.............................. 29
Предложение GROUP BY...................................................... 29
Предложение HAVING........................................................ 30
Не делайте вложенных агрегатов............................................ 32
Резюме.................................................................... 32
Работа с SQL.............................................................. 32
Форматирование вывода запросов................................................................................................ 34
Строки и выражения........................................................ 34
Скалярное выражение на основе выбираемых полей........................................ 34
Столбцы вывода.................................................................................................... 34
Помещение текста в вашем выводе запроса...................................................... 34
Упорядочение вывода полей................................................. 35
Упорядочение по нескольким столбцам............................................................... 36
Упорядочение агрегатных групп.......................................................................... 37
Упорядочение вывода по номеру столбца........................................................... 37
Упорядочение с помощью оператора NULL......................................................... 38
Резюме.................................................................... 38
Работа с SQL.............................................................. 38
Запрос из нескольких таблиц так же, как из одной...................................................................... 41
Объединение таблиц........................................................ 41
Имена таблиц и столбцов................................................... 41
Создание объединения...................................................... 41
Объединение таблиц через справочную целостность........................... 42
Объединения таблиц по равенству значений в столбцах и другие виды объединений 43
Объединение более двух таблиц............................................. 43
Резюме.................................................................... 44
Работа с SQL.............................................................. 44
Объединение таблицы с собой........................................................................................................ 45
Как делать объединение таблицы с собой?................................... 45
Псевдонимы................................................................ 45
Устранение избыточности................................................... 46
Проверка ошибок........................................................... 47
Больше псевдонимов ....................................................... 47
Еще больше комплексных объединений........................................ 47
Резюме.................................................................... 49
Работа с SQL.............................................................. 49
Вставка одного запроса внутрь другого........................................................................................ 50
Как работает подзапрос?................................................... 50
Значения, которые могут выдавать подзапросы............................... 51
DISTINCT с подзапросами................................................... 51
Предикаты с подзапросами являются необратимыми............................ 52
Использование агрегатных функций в подзапросах............................ 52
Использование подзапросов, которые выдают много строк с помощью оператора IN 53
Подзапросы выбирают одиночные столбцы..................................... 55
Использование выражений в подзапросах..................................... 55
Подзапросы в предложении HAVING........................................... 55
Резюме.................................................................... 56
Работа с SQL.............................................................. 56
Соотнесенные подзапросы............................................................................................................. 57
Как сформировать соотнесенный подзапрос................................... 57
Как работает соотнесенный подзапрос....................................... 57
Использование соотнесенных подзапросов
для нахождения ошибок........................................................... 59
Сравнение таблицы с собой................................................. 59
Соотнесенные подзапросы в предложении HAVING.............................. 60
Соотнесенные подзапросы и объединения..................................... 61
Резюме.................................................................... 61
Работа с SQL.............................................................. 61
Использование оператора EXISTS.................................................................................................. 62
Как работает EXISTS?...................................................... 62
Выбор столбцов с помощью EXISTS........................................... 63
Использование EXISTS с соотнесенными подзапросами......................... 63
Комбинация из EXISTS и объединения........................................ 63
Использование NOT EXISTS.................................................. 64
EXISTS и агрегаты......................................................... 64
Более удачный пример подзапроса........................................... 65
Резюме.................................................................... 66
Работа с SQL.............................................................. 66
Использование операторов ANY, ALL и SOME............................................................................... 67
Специальные операторы ANY или SOME........................................ 67
Использование операторов IN или EXISTS вместо оператора ANY............... 67
Как ANY может стать неоднозначным......................................... 69
Специальный оператор ALL.................................................. 71
Равенства и неравенства................................................... 72
Правильное понимание ANY и ALL............................................ 73
Как ANY, ALL, и EXIST поступают с отсутствующими и неизвестными данными... 73
Когда подзапрос возвращается пустым....................................... 73
ANY и ALL вместо EXISTS с пустым указателем (NULL)........................ 74
Использование COUNT вместо EXISTS......................................... 74
Резюме.................................................................... 75
Работа с SQL.............................................................. 75
Использование предложения UNION.............................................................................................. 77
Объединение нескольких запросов в один.................................... 77
Когда вы можете делать объединение между запросами?....................... 77
UNION и устранение дубликатов............................................. 78
Использование строк и выражений с UNION................................... 79
Использование UNION с ORDER BY............................................ 80
Внешнее объединение....................................................... 81
Резюме.................................................................... 83
Работа с SQL.............................................................. 83
Ввод, удаление и изменение значений полей................................................................................ 85
Команды модификации языка DML............................................. 85
Ввод значений............................................................. 85
Вставка пустых указателей (NULL).......................................... 85
Именование столбца для вставки (INSERT)................................... 85
Вставка результатов запроса............................................... 86
Изменение значений поля................................................... 87
Модифицирование только определенных строк................................. 87
Команда UPDATE для многих столбцов........................................ 87
Использование выражений для модификации................................... 87
Модифицирование пустых (NULL) значений.................................... 87
Резюме.................................................................... 88
Работа с SQL.............................................................. 88
Использование подзапросов с командами модификации............................................................ 89
Использование подзапросов с INSERT........................................ 89
Не вставляйте дубликаты строк............................................. 89
Использование подзапросов, созданных во внешней таблице запроса........... 90
Использование подзапросов с DELETE........................................ 90
Использование подзапросов с UPDATE........................................ 91
Столкновение с ограничениями подзапросов команды DML...................... 92
Резюме.................................................................... 92
Работа с SQL.............................................................. 92
Создание таблиц............................................................................................................................. 93
Команда создания таблицы.................................................. 93
Индексы................................................................... 94
Уникальность индекса...................................................... 94
Удаление индексов......................................................... 95
Изменение таблицы после того, как она была создана........................ 95
Удаление таблиц........................................................... 95
Резюме.................................................................... 95
Работа с SQL.............................................................. 96
Ограничение значений ваших данных.......................................................................................... 97
Ограничение таблиц........................................................ 97
Объявление ограничений.................................................... 97
Использование ограничений для исключения пустых (NULL) указателей......... 97
Убедитесь, что значения уникальны......................................... 98
Уникальность как ограничение столбца...................................... 98
Уникальность как ограничение таблицы...................................... 98
Ограничение первичных ключей.............................................. 99
Первичные ключи более чем одного поля .................................... 99
Проверка значений полей (CHECK).......................................... 100
Использование CHECK, чтобы предопределять допустимое вводимое значение... 100
Проверка условий, базирующаяся на нескольких полях....................... 101
Установка значений по умолчанию.......................................... 101
Резюме................................................................... 102
Работа с SQL............................................................. 102
Поддержка целостности ваших данных...................................................................................... 104
Внешний ключ и родительский ключ......................................... 104
Многостолбцовые внешние ключи............................................ 104
Смысл внешнего и родительского ключей.................................... 104
Ограничение FOREIGN KEY.................................................. 105
Как можно поля представить в качестве внешних ключей..................... 105
Внешний ключ как ограничение таблицы..................................... 105
Внешний ключ как ограничение столбцов.................................... 106
Не указывать список столбцов первичных ключей............................ 106
Как справочная целостность ограничивает значения родительского ключа..... 106
Первичный ключ как уникальный внешний ключ............................... 106
Ограничения внешнего ключа............................................... 107
Что случится, если вы выполните команду модификации...................... 107
Включение описаний таблицы............................................... 107
Действие ограничений..................................................... 108
Внешние ключи, которые ссылаются
обратно к их подчиненным таблицам.............................................. 109
Резюме................................................................... 110
Работа с SQL............................................................. 110
Введение в представления........................................................................................................... 111
Что такое представление?................................................. 111
Команда CREATE VIEW...................................................... 111
Модифицирование представлений............................................ 112
Именование столбцов...................................................... 112
Комбинирование предикатов представлений и основных запросов в представлениях 112
Групповые представления.................................................. 113
Представления и объединения.............................................. 114
Представления и подзапросы............................................... 115
Чего не могут делать представления....................................... 115
Удаление представлений................................................... 115
Резюме................................................................... 115
Работа с SQL............................................................. 116
Изменение значений с помощью представлений........................................................................ 117
Модифицирование представления............................................ 117
Определение модифицируемости представления............................... 118
Модифицируемые представления
и представления "только чтение"................................................ 118
Что является модифицируемым представлением............................... 118
Проверка значений, помещаемых в представление............................ 119
Предикаты и исключенные поля............................................. 120
Проверка представлений, которые базируются на других представлениях...... 120
Резюме................................................................... 121
Работа с SQL............................................................. 121
Кто что может делать в базе данных........................................................................................... 123
Пользователи............................................................. 123
Регистрация.............................................................. 123
Предоставление привилегий................................................ 123
Стандартные привилегии................................................... 123
Команда GRANT............................................................ 124
Группы привилегий, группы пользователей.................................. 124
Ограничение привилегий на определенные столбцы........................... 124
Использование аргументов ALL и PUBLIC.................................... 125
Предоставление привилегий с помощью WITH GRANT OPTION.................... 125
Отмена привилегий........................................................ 126
Использование представлений для фильтрации привилегий.................... 126
Кто может создавать представления?....................................... 126
Ограничение привилегии SELECT для определенных столбцов.................. 126
Ограничение привилегий для определенных строк............................ 127
Предоставление доступа только к извлеченным данным....................... 127
Использование представлений в качестве альтернативы к ограничениям....... 127
Другие типы привилегий................................................... 128
Типичные привилегии системы.............................................. 128
Создание и удаление пользователей........................................ 128
Резюме................................................................... 129
Работа с SQL............................................................. 129
Глобальные аспекты SQL............................................................................................................. 130
Переименование таблиц.................................................... 130
Переименование с тем же самым именем..................................... 130
Одно имя для каждого..................................................... 130
Удаление синонимов....................................................... 131
Как база данных распределена для пользователей?.......................... 131
Когда сделанные изменения становятся постоянными?........................ 132
Как SQL общается сразу со многими пользователями......................... 133
Типы блокировок.......................................................... 134
Другие способы блокировки данных......................................... 134
Резюме................................................................... 135
Работа с SQL............................................................. 135
Как данные SQL содержатся в упорядоченном виде................................................................. 136
Каталог системы.......................................................... 136
Типичный системный каталог............................................... 136
Использование представлений в таблицах каталога.......................... 137
Разрешить пользователям видеть (только) их собственные объекты........... 137
Комментарий в содержании каталога........................................ 138
Остальное из каталога.................................................... 139
Другое использование каталога............................................ 142
Резюме................................................................... 143
РАБОТА С SQL............................................................. 143
Использование SQL с другим языком (встроенный SQL)........................................................... 144
Что такое вложение SQL................................................... 144
Зачем вкладывать SQL?.................................................... 144
Как делаются вложения SQL................................................ 144
Использование переменных основного языка в SQL........................... 145
Объявление переменных.................................................... 146
Извлечение значений переменных........................................... 146
Курсор................................................................... 147
SQLCODE.................................................................. 148
Использование SQLCODE для управления циклами............................. 148
Предложение WHENEVER..................................................... 149
Модифицирование курсоров................................................. 149
Переменная INDICATOR..................................................... 150
Использование переменной INDICATOR для эмуляции NULL значений SQL ....... 151
Другое использование переменной INDICATOR................................ 152
Резюме................................................................... 152
Работа с SQL............................................................. 153
Ответы для упражнений............................................................................................................... 154
Глава 1.................................................................. 154
Глава 2.................................................................. 154
Глава 3.................................................................. 154
Глава 4.................................................................. 154
Глава 5.................................................................. 155
Глава 6.................................................................. 155
Глава 7.................................................................. 156
Глава 8.................................................................. 156
Глава 9.................................................................. 156
Глава 10................................................................. 157
Глава 11................................................................. 157
Глава 12................................................................. 158
Глава 13................................................................. 158
Глава 14................................................................. 159
Глава 15................................................................. 159
Глава 16................................................................. 160
Глава 17................................................................. 160
Глава 18................................................................. 160
Глава 19................................................................. 161
Глава 20................................................................. 161
Глава 21................................................................. 162
Глава 22................................................................. 162
Глава 23................................................................. 162
Глава 24................................................................. 163
Глава 25................................................................. 164
Типы данных в SQL...................................................................................................................... 167
Типы ANSI................................................................ 167
Эквивалентные типы данных в других языках................................ 167
Некоторые общие нестандартные средства SQL........................................................................ 169
Типы данных.............................................................. 169
Команда FORMAT........................................................... 170
Функции.................................................................. 171
INTERSECT и MINUS........................................................ 171
Автоматические внешние объединения....................................... 172
Отслеживание действий.................................................... 172
Справочник по командам и синтаксису...................................................................................... 174
SQL элементы............................................................. 174
SQL команды.............................................................. 177
Таблицы, используемые в SQL..................................................................................................... 182