Содержание

Введение......................................8

1. Основные понятия и определения...............10

1.1. Основные понятия реляционных баз данных.........10

1.2. Отличие SQL от процедурных языков программирования ... 12

1.3. Интерактивный и встроенный SQL..................13

1.4. Составные части SQL.............................13

1.5. Типы данных SQL................................14

1.5.1. Тип данных «строка символов»................14

1.5.2. Числовые тмпы данных.....................15

1.5.3. Дата и время..............................16

1.5.4. Неопределенные или пропущенные данные (NULL)....................................17

1.6. Используемые термины и обозначения...............18

1.7. Учебная база данных............................18

2. Выборка данных (оператор SELECT)...........23

2.1. Простейшие SELECT-запросы......................23

2.2. Операторы IN, BETWEEN, LIKE, is NULL.............28

2.3. Преобразование вывода и встроенные функции........31

2.3.1. Числовые, символьные и строковые константы ...31

2.3.2. Арифметические операции для преобразования числовых данных..........................32

2.3.3. Операция конкатенации строк...............33

2.3.4. Функции преобразования символов в строке.....34

2.3.5. Строковые функции........................34

2.3.6. Функции работы с числами.................37

2.3.7. Функции преобразования значений...........39

2.4. Агрегирование и групповые функции.................43

2.5. Пустые значения (NULL) в агрегирующих функциях ... .46

2.5.1. Влияние NULL-значений в функции COUNT......46

2.5.2. Влияние NULL-значений в функции AVG.........47

2.6. Результат действия трехзначных условных операторов ... 47

2.7. Упорядочение выходных полей (ORDER BY).............49

2.8. Вложенные подзапросы..........................51

2.9. Формирование связанных подзапросов...............53

2.10. Связанные подзапросы в HAVING..................54

2.11. Использование оператора EXISTS...................56

2.12. Операторы сравнения с множеством значений IN, ANY, АН...........................58

2.13. Особенности применения операторов ANY, ALL, EXISTS при обработке пустых значений (NULL)..............,60

2.14. Использование COUNT вместо EXISTS................62

2.15. Оператор объединения UNION......................63

2.16. Устранение дублирования в UNION..................64

2.17. Использование UNION с ORDER BY...................66

2.18. Внешнее объединение.............................67

2.19. Соединение таблиц с использованием оператора JOIN ...69

2.19.1. Операции соединения таблиц посредством ссылочной целостности.....................70

2.19.2. Внешнее соединение таблиц...............,72

2.19.3. Использование псевдонимов при соединении таблиц...................................,74

3. Манипулирование данными.....................78

3.1. Команды манипулирования данными................78

3.2. Использование подзапросов в INSERT................81

3.2.1. Использование подзапросов, основанных

на таблицах внешних запросов...............82

3.2.2. ИспользованиеподзапрОСОв с DELETE.........83

3.2.3. Использование подзапросов с UPDATE........85

4. Создание объектов базы данных.............87

4.1. Создание таблиц базы данных....................87

4.2. Использование индексации для быстрого доступа

к данным ...................................88

4.3. Изменение существующей таблицы...........

4.4. Удаление таблицы...............................90

4.5. Офаничения на множество допустимых значений данных ... 91

4.5.1. Ограничение NOT NULL....................92

4.5.2. Уникальность как ограничение на столбец.....93

4.5.3. Уникальность как ограничение таблицы......,94

4.5.4. Присвоение имен ограничениям..............95

4.5.5. Ограничение первичных ключей...............96

4.5.6. Составные первичные ключи.................96

4.5.7. Проверка значений полей....................97

4.5.8. Проверка ограничивающих условий

с использованием составных полей...........98

4.5.9. Установка значений по умолчанию.............99

4.6. Поддержка целостности данных...................101

4.6.1. Внешние и родительские ключи..............101

4.6.2. Составные внешние ключи..................102

4.6.3. Смысл внешнего и родительского ключей......102

4.6.4. Ограничение FOREIGN KEY (внешнего ключа)... 103

4.6.5. Внешний ключ как ограничение таблицы......103

4.6.6. Внешний ключ как ограничение столбца......105

4.6.7. Поддержание ссылочной целостности

и ограничения значений родительского ключа ... 107

4.6.8. Использование первичного ключа в качестве уникального внешнего ключа...............107

4.6.9. Ограничения значений внешнего ключа.......108

4.6.10. Действие ограничений внешнего

и родительского ключей при использовании команд модификации.....................108

5. Представления (VIEW).......................112

5.1. Представления — именованные запросы...........112

5.2. Представления таблиц...........................113

5.3. Представления столбцов.........................113

5.4. Модифицирование представлений..................114

5.5. Маскирующие представления......................114

5.5.1. Представления, маскирующие столбцы........114

5.5.2. Операции модификации в представлениях, маскирующих столбцы.....................115

5.5.3. Представления, маскирующие строки.........115

5.5.4. Операции модификации в представлениях, маскирующих строки.......................116

5.5.5. Операции модификации в представлениях, маскирующих строки и столбцы.............117

5.6. Агрегированные представления....................119

5.7. Представления, основанные на нескольких таблицах ... 119

5.8. Представления и подзапросы.....................120

5.9. Ограничения применения оператора SELECT для создания представлений..........................121

5.10. Удаление представлений..........................121

5.11. Изменение значений в представлениях.............122

5.12. Примеры обновляемых и необновляемых представлений.................................123

5.13. Представления, базирующиеся на других представлениях................................125

6. Определение прав доступа пользователей

к данным...................................128

6.1. Пользователи и привилегии......................128

6.2. Стандартные привилегии..........................129

6.3. Команда GRANT.................................130

6.4. Использование аргументов ALL и PUBLIC............131

6.5. Отмена привилегий..............................131

6.6. Использование представлений для фильтрации привилегий.....................................132

6.6.1. Ограничение привилегии SELECT

для определенных столбцов.................133

6.6.2. Ограничение привилегий для определенных

строк...................................133

6.6.3. Предоставление доступа только

к извлеченным данным....................134

6.6.4. Использование представлений в качестве альтернативы ограничениям.................134

6.7. Другие типы привилегий...........................135

6.8. Типичные привилегии системы....................136

6.9. Создание и удаление пользователей.... 136

6.10. Создание синонимов (SYNONYM)....... 138

6.11. Синонимы общего пользования (PUBLIC) 139

6.12. Удаление синонимов................ 139

7. Управление транзакциями...................141

Приложение 1. Ответы к упражнениям...... 143

Приложение 2. Задачи по проектированию БД 159

Предметный указатель................... 171