Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

sql_rukovodstvo

.pdf
Скачиваний:
15
Добавлен:
01.06.2015
Размер:
14.46 Mб
Скачать

Дж.Боуман, С.Эмерсон, М.Дарновски

ПРАКТИЧЕСКОЕ РУКОВОДСТВО ПО SQL

Эта книга поможет даже в тех случаях, когда бесполезно самое лучшее руководство пользователя. Здесь раскрываются темы, которые часто пропускаются или очень кратко описаны в стандартных руководствах пользователя — структуры баз данных, индексация, подзапросы, виртуальные таблицы, производительность и целостность данных.

Вы шаг за шагом изучите основы SQL и научитесь с помощью этого языка создавать приложения для работы с базами данных.

Книга предназначена для пользователей реляционных баз данных — независимо от того, работают ли они на больших многопользовательских компьютерных системах или на персональных компьютерах.

Содержание

Предисловие

5

Предисловие ко второму и третьему изданиям

7

Введение

9

Глава 1. SQL и управление реляционными базами данных

15

УПРАВЛЕНИЕ РЕЛЯЦИОННЫМИ БАЗАМИ ДАННЫХ

15

Реляционная модель: одни таблицы

16

Независимость

17

Язык высокого уровня

17

Реляционные операции

19

Альтернативный способ просмотра данных

22

Нули

23

Безопасность

23

Целостность

24

ПРИСТУПАЯ К ПРОЕКТИРОВАНИЮ БАЗЫ ДАННЫХ

24

Глава 2. Проектирование баз данных

25

СТРУКТУРА БАЗЫ ДАННЫХ

25

Как подходить к проектированию базы данных

26

Что такое "хорошая структура"

28

Описание нашей базы данных

29

ДАННЫЕ И ВЗАИМОСВЯЗИ

30

Объекты

30

Отношение один-ко-многим

32

Отношение многий-ко-многим

34

Отношение один-к-одному

35

Последние замечания к объектному подходу

35

РУКОВОДСТВО ПО НОРМАЛИЗАЦИИ

36

Первая нормальная форма

37

Вторая нормальная форма

38

Третья нормальная форма

38

Четвертая и пятая нормальные формы

40

ОБЗОР БАЗЫ ДАННЫХ

41

Последние замечания о базе данных bookbiz

42

Проверка структуры базы данных

44

Рассмотрение других понятий из области баз данных

44

Реализация структуры

44

Глава 3. Создание и заполнение базы данных

45

СИНТАКСИС SQL

45

Обработка ошибок

47

СОЗДАНИЕ БАЗ ДАННЫХ

48

Выбор базы данных

49

СОЗДАНИЕ ТАБЛИЦ

49

Выбор типа данных

51

Назначение нулевого статуса

53

Процесс создания таблицы

54

СОЗДАНИЕ ИНДЕКСОВ

55

Оператор CREATE INDEX

55

Как, что и зачем нужно индексировать

57

СОЗДАНИЕ ТАБЛИЦ С ПОМОЩЬЮ ОГРАНИЧЕНИЙ SQL-92

58

ИЗМЕНЕНИЕ И УДАЛЕНИЕ БАЗ ДАННЫХ И ИХ ОБЪЕКТОВ

62

Изменение баз данных

62

Изменение определений таблицы

62

Удаление базы данных

63

Удаление таблиц

63

Удаление индекса

63

ДОБАВЛЕНИЕ, ИЗМЕНЕНИЕ И УДАЛЕНИЕ ДАННЫХ

64

Добавление новой строки

64

Использование оператора SELECT в команде INSERT

66

ИЗМЕНЕНИЕ СУЩЕСТВУЮЩИХ ДАННЫХ

68

Оператор UPDATE

68

Предложение SET

68

Предложение WHERE

69

УДАЛЕНИЕ ДАННЫХ: КОМАНДА DELETE

70

ПРИСТУПАЯ К ВЫБОРКЕ ДАННЫХ

71

Глава 4. Выборка информации из базы данных

72

ПЕРЕД ВЫБОРОМ

72

Синтаксис оператора SELECT

72

ВЫБОР СТОЛБЦОВ: СПИСОК ВЫБОРА

75

Выбор всех столбцов: SELECT *

75

Выбор отдельных столбцов

77

Выражения: больше, чем просто имена столбцов

77

УКАЗАНИЕ ТАБЛИЦ: СПИСОК ТАБЛИЦ

83

ВЫБОР СТРОК: ПРЕДЛОЖЕНИЕ WHERE

84

Операторы сравнения

84

Совместное использование условных и логических операторов

86

Диапазоны (BETWEEN и NOT BETWEEN)

90

Списки (IN и NOT IN)

92

Выборка нулевых значений

94

Поиск по подстрокам: предложение LIKE

96

ЧТО ДАЛЬШЕ

99

Глава 5. Сортировка данных и другие методы выбора

100

ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ ОПЕРАТОРА SELECT

100

СОРТИРОВКА РЕЗУЛЬТАТОВ ЗАПРОСА: ПРЕДЛОЖЕНИЕ ORDER

100

BY

 

Порядок сортировки

100

Как выполняется сортировка

101

Синтаксис предложения ORDER BY

102

Сортировка внутри сортировки

102

Сортировка по возрастанию и по убыванию

104

А как насчет выражений?

105

Как сортировать нулевые значения

107

УСТРАНЕНИЕ ПОВТОРЯЮЩИХСЯ СТРОК: ПРЕДЛОЖЕНИЯ

108

DISTINCT И ALL

 

Синтаксис предложения DISTINCT

109

Почувствуйте разницу!

109

АГРЕГИРУЮЩИЕ ФУНКЦИИ

112

Синтаксис агрегирующих функций

114

СКАЛЯРНЫЕ И ВЕКТОРНЫЕ ФУНКЦИИ

120

Глава 6. Группировка данных и построение отчетов

121

ГРУППИРОВКА

121

ПРЕДЛОЖЕНИЕ GROUP BY

121

Синтаксис предложения GROUP BY

122

Упорядоченные группы

131

ПРЕДЛОЖЕНИЕ HAVING

132

Разновидности предложения HAVING

132

Предложения HAVING и WHERE

133

ЕЩЕ О НУЛЕВЫХ ЗНАЧЕНИЯХ

135

Нули и проектирование баз данных

136

Сравнение нулевых значений

136

Нули и вычисления

137

Нули и группы

138

Значения по умолчанию в качестве альтернативы нулевым значениям

138

РАБОТА С НЕСКОЛЬКИМИ ТАБЛИЦАМИ

140

Глава 7. Объединение таблиц и сложный анализ данных

141

ЧТО ТАКОЕ ОБЪЕДИНЕНИЕ

141

Синтаксис операции объединения

141

ПОЧЕМУ НЕОБХОДИМО ОБЪЕДИНЕНИЕ

142

Объединения и реляционная модель

142

ПРИМЕР ОБЪЕДИНЕНИЯ

143

Проверка правильности объединения

143

КАК ПОЛУЧИТЬ ХОРОШЕЕ ОБЪЕДИНЕНИЕ

144

Объединения и нулевые значения

144

УЛУЧШЕНИЕ ЧИТАЕМОСТИ РЕЗУЛЬТАТОВ ОБЪЕДИНЕНИЯ

144

Выбор столбцов для запросов на объединение

145

Псевдонимы в списке таблиц улучшают читаемость запросов

146

ОПРЕДЕЛЕНИЕ УСЛОВИЙ ОБЪЕДИНЕНИЯ

146

Объединения, основанные на равенстве

146

Объединения, не основанные на равенствах

147

Объединение таблицы с самой собой: самообъединение

148

Использование при самообъединении оператора неравенства

150

Объединение нескольких таблиц

151

Внешние объединения

152

КАК ОБЪЕДИНЕНИЯ ОБРАБАТЫВАЮТСЯ СИСТЕМОЙ

154

ОПЕРАТОР UNION

155

Полезный трюк с оператором UNION

157

ПОДЗАПРОСЫ

158

Глава 8. Структурированные запросы и подзапросы

159

ЧТО ТАКОЕ ПОДЗАПРОС

159

Упрощенный синтаксис подзапроса

159

КАК РАБОТАЮТ ПОДЗАПРОСЫ

160

Некоррелированная обработка

161

Коррелированная обработка

162

ОБЪЕДИНЕНИЯ ИЛИ ПОДЗАПРОСЫ?

162

Подзапросы!

162

Объединения!

164

Подзапросы или самообъединения?

164

Что лучше?

165

ПРАВИЛА ПОДЗАПРОСОВ

165

ПОДЗАПРОСЫ, НЕ ВОЗВРАЩАЮЩИЕ ЗНАЧЕНИЙ ИЛИ

166

ВОЗВРАЩАЮЩИЕ НЕСКОЛЬКО ЗНАЧЕНИЙ

 

Подзапросы, начинающиеся с IN

166

Подзапросы, начинающиеся с NOT IN

167

Коррелированные подзапросы с IN

168

Подзапросы, начинающиеся с операторов сравнения и включающие

 

ключевые слова ANY или ALL

170

ПОДЗАПРОСЫ, ВОЗВРАЩАЮЩИЕ ЕДИНСТВЕННОЕ ЗНАЧЕНИЕ

174

Агрегирующие функции гарантируют единственное значение

175

Предложения GROUP BY и HAVING должны возвращать единственное

 

значение

176

Коррелированные подзапросы с операторами сравнения

176

ПОДЗАПРОСЫ, ВЫПОЛНЯЮЩИЕ ПРОВЕРКУ НА

177

СУЩЕСТВОВАНИЕ

 

NOT EXISTS отыскивает пустой набор

179

Использование EXISTS для поиска пересечения и разности

180

ПОДЗАПРОСЫ С РАЗНЫМИ УРОВНЯМИ ВЛОЖЕНИЯ

181

ПОДЗАПРОСЫ В ОПЕРАТОРАХ UPDATE, DELETE И INSERT

181

В ПОЛЕ ЗРЕНИЯ КУРСОРА

182

Глава 9. Создание и использование виртуальных таблиц (курсоров)

183

КУРСОР ОБЕСПЕЧИВАЕТ ГИБКОСТЬ

183

СОЗДАНИЕ КУРСОРОВ

183

Удаление курсоров

184

ПРЕИМУЩЕСТВА КУРСОРОВ

184

Почему же все-таки курсор?

187

КАК РАБОТАЮТ КУРСОРЫ

189

Правила присвоения имен столбцам курсора

190

Создание курсоров с объединениями и подзапросами

191

Ограничения на создание курсоров

192

Предложение Check Option

192

Разборка курсора

194

Переопределение курсоров

194

МОДИФИКАЦИЯ ДАННЫХ ПОСРЕДСТВОМ КУРСОРОВ

196

Правила в соответствии с ANSI

196

СОЗДАНИЕ КОПИЙ ДАННЫХ

198

ВОПРОСЫ АДМИНИСТРИРОВАНИЯ БАЗ ДАННЫХ

199

Глава 10. Безопасность, транзакции, производительность и

200

целостность

 

УПРАВЛЕНИЕ БАЗАМИ ДАННЫХ В РЕАЛЬНОМ МИРЕ

200

БЕЗОПАСНОСТЬ ДАННЫХ

201

Идентификация пользователя и особые пользователи

201

Команды GRANT и REVOKE

202

Курсоры как механизм обеспечения безопасности

206

ТРАНЗАКЦИИ

207

Транзакции и совпадения

208

Транзакции и восстановление

209

Транзакции, определяемые пользователем

209

Получение резервной копии и восстановление

210

ПРОИЗВОДИТЕЛЬНОСТЬ

211

Сравнение с эталоном

211

Структура и индексация

212

Запросы

213

Другие инструменты для мониторинга и повышения производительности

213

ЦЕЛОСТНОСТЬ ДАННЫХ

215

Ограничения на домен

215

Целостность объекта

216

Ссылочная целостность

217

ОТ АБСТРАКЦИЙ SQL К РЕАЛЬНОМУ МИРУ

220

Глава 11. Разрешение проблем

221

КАК ИСПОЛЬЗОВАТЬ SQL В СВОЕЙ РАБОТЕ

221

ФОРМАТИРОВАНИЕ И ОТОБРАЖЕНИЕ ДАННЫХ

222

Отображение одного поля в виде двух

222

Выравнивание строки символов по правому краю

224

Как указать число разрядов после десятичной точки

227

РАБОТА С ШАБЛОНАМИ

229

Сопоставление прописных и строчных букв

230

Поиск символьных данных заданного размера

231

Как найти данные типа дат

232

Замена пробелов на нули

234

ПОИСК ДАННЫХ С ПОМОЩЬЮ СЛОЖНЫХ ОБЪЕДИНЕНИЙ И

236

ПОДЗАПРОСОВ

 

Сопоставление пар столбцов в разных таблицах

236

Поиск данных в определенном диапазоне, если вам не известны точные

238

значения

 

Отображение данных в формате электронной таблицы

239

ПРЕДЛОЖЕНИЕ GROUP BY

243

Отображение данных по времени

243

ПОСЛЕДОВАТЕЛЬНЫЕ НОМЕРА

244

Нахождение максимального значения и добавление 1

245

Использование отдельной таблицы ключей

246

Использование произвольного значения

247

КАК ИЗБЕЖАТЬ ОШИБОК

247

Глава 12. Ошибки, и как их избежать

248

НЕТ, ВЫ НЕ ДУРАК

248

ПРЕДЛОЖЕНИЕ GROUP BY

248

Подсчет по единицам

249

ПРЕДЛОЖЕНИЯ WHERE И HAVING

249

Почему столько строк?

249

Сочетание значений строк и агрегирующих функций

253

Как избежать проблем с предложением HAVING

256

КЛЮЧЕВОЕ СЛОВО DISTINCT

258

DISTINCT со столбцами и выражениями

259

DISTINCT с агрегирующими функциями

260

DISTINCT и DISTINCT?

261

ДРУГИЕ НЕДОРАЗУМЕНИЯ

262

Удаление дубликатов

262

Нахождение "первого" входа

263

Приложение А. Краткое описание синтаксиса SQL, используемого в

265

книге

 

СОГЛАШЕНИЯ ПО СИНТАКСИСУ

265

ФОРМАТИРОВАНИЕ

265

Регистр

265

СПИСОК ОПЕРАТОРОВ

266

Приложение Б. Аналогии между ключевыми словами разных

267

диалектов SQL

 

 

СРАВНЕНИЕ СИНТАКСИСОВ

 

267

ОПРЕДЕЛЕНИЕ ДАННЫХ

 

267

Операторы базы данных

 

268

Создание и удаление объектов базы данных

 

269

МАНИПУЛЯЦИИ С ДАННЫМИ

 

271

АДМИНИСТРИРОВАНИЕ ДАННЫХ

 

273

Приложение В. Словарь терминов

 

276

Приложение Г. Описание базы данных bookbiz

284

ТАБЛИЦЫ

 

284

ОПЕРАТОРЫ CREATE И INSERT ДЛЯ БАЗЫ ДАННЫХ BOOKBIZ

290

Приложение Д. Список литературы

 

309

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

 

311

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

 

А

домен, 215

 

агрегирующая функция, 100

Е

 

администратор базы данных, 23

естественное объединение, 147

 

администрирование данных, 17

З

 

аргумент, 114

запись, 16

 

атрибут, 16

запрос, 18

 

Б

значение, 16

 

база данных, 16

И

 

базовая таблица, 20; 183

идентификатор, 45

 

блокировка, 208

индекс, 17

 

В

К

 

виртуальная таблица, 22

команда, 17

 

включающий диапазон, 90

команды управления данными, 19

владелец, 23

контроль совпадений, 200

 

вложенная сортировка, 103

кортеж, 16

 

вложенный запрос, 72

курсор, 22

 

внешнее объединение, 146

кэш данных, 213

 

внешний ключ, 28

Л

 

восстановление, 200

логическая независимость, 17

 

вспомогательная таблица, 37

логические операторы, 86

 

выборка данных, 17

М

 

выражение, 67

моделирование зависимостей, 26

Г

модификация данных, 17

 

главная таблица, 37

Н

 

групповой индекс, 56

набор символов, 100

 

Д

назначение полномочий, 200

 

декартово произведение, 143

немодифицированный оператор

декомпозиция без потерь, 27

сравнения, 174

 

диаграмма зависимостей между

непроцедурный язык

 

объектами, 27

программирования, 19

 

нормализация, 26 нормальная форма, 36

О

общий подъязык данных, 17 объект, 16 объектная целостность, 24 ограничение, 19 оператор, 17

определение данных, 17 оптимизатор запросов, 213 отношение, 16

П

первичный ключ, 16 подзапрос, 159 поисковая таблица, 42 поле, 16

пользовательская таблица, 16 порядок сортировки, 100 права на доступ и модификацию данных, 23 правило, 58

проектирование базы данных, 25 производная таблица, 20 просматриваемая таблица, 183 псевдоним, 83

Р

различаемый нуль, 136

С

сгруппированный курсор, 197 системная таблица, 16 системный администратор, 23

системный журнал транзакций, 209 системный каталог, 16 сканирование таблицы, 58

составной индекс, 56 список выбора, 75 список таблиц, 83 сравнение с эталоном, 211

ссылочная целостность, 24 столбец, 16 столбец соединения, 141

стратегия доступа, 17 строка, 16 структура данных, 27 сущность, 16 схема, 48

Т

таблица, 16 терминатор, 47 транзакция, 207

триггерные действия, 218 триггерные условия, 218

У

уникальный индекс, 56 управление транзакциями, 24; 207 устройство базы данных, 48

Ф

файл, 16 физическая независимость данных,

17 фиктивное значение, 67 форма, 64

Ц

целостность, 24

Ш

шаблон, 96

Э

экземпляр, 31

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]