Оглавление Введение 1
Для кого и о чем эта книга 1
Благодарности 2
ЧАСТЬ I. 3
Глава 1. История развития баз данных. Понятие реляционной базы данных 5
1.1. История развития СУБД. Реляционные базы данных 5
1.1.1. Иерархические базы данных 6
1.1.2. Сетевые базы данных 7
1.1.3. Реляционные базы данных 8
1.1.4. Объектно-ориентированные и гибридные базы данных 9
1.2. Особенности реляционных баз данных 10
1.2.1. Первичные ключи 10
1.2.2. Нормализация базы данных 12
1.2.3. Правила Кодда 14
1.3. СУБД и сети 15
1.3.1. Централизованная архитектура 16
1.3.2. Архитектура "клиент-сервер" 16
1.3.2.1. Два признака клиент-серверной архитектуры 17
1.3.3. Трехуровневая архитектура Интернета 18
1.4. Как работают базы данных и что такое SQL 19
1.5. Версии MySQL 21
1.5.1. Что нового в MySQL 4.1 23
1.5.2. Что нового в MySQL 5.0 23
Глава 2. Установка MySQL 5 25
2.1. Получение дистрибутива 25
2.2. Установка на платформу Windows 26
2.3. Установка на платформу Linux 39
Глава 3. Работа с утилитами MySQL 41
3.1. Утилита mysql 42
3.2. Утилита mysqldump 50
Глава 4. Создание баз данных и таблиц. Типы данных 53
4.1. Создание базы данных 53
4.2. Создание таблицы 57
4.3. Типы данных 59
4.3.1. Числовые данные 60
4.3.2. Строковые данные 63
4.3.3. Календарные данные 66
4.3.4. Тип данных NULL 69
4.3.5. Выбор типа данных 71
4.4. Учебная база данных 72
Глава 5. Индексы 77
5.1. Первичный ключ 78
5.2. Обычный и уникальный индексы 81
Глава 6. Добавление данных 87
6.1. Однострочный оператор INSERT 87
6.2. Многострочный оператор INSERT 93
6.3. Пакетная загрузка данных 94
Глава 7. Выборка данных 99
7.1. Изменение количества и порядка следования столбцов 99
7.2. Условия 101
7.3. Сортировка 104
7.4. Ограничение выборки 107
7.5. Использование функций 108
7.6. Группировка записей 111
7.7. Объединение таблиц 116
7.8. Сохранение результатов во внешний файл 119
Глава 8. Удаление данных 123
8.1. Оператор DELETE 123
8.2. Оператор TRUNCATE TABLE 124
Глава 9. Обновление данных 125
9.1. Оператор UPDATE 125
9.2. Оператор REPLACE 129
Глава 10. Редактирование структуры таблиц 131
10.1. Добавление и удаление столбцов 131
10.2. Изменение уже существующих столбцов 133
10.3. Добавление и удаление индексов 135
10.4. Преобразование таблицы 137
ЧАСТЬ II 141
Глава 11. Типы и структура таблиц 143
11.1. MyISAM 143
11.2. MERGE 144
11.3. MEMORY (HEAP) 146
11.4. EXAMPLE 147
11.5. BDB (BerkeleyDB) 148
11.6. InnoDB 149
11.7. NDB Cluster 150
11.8. ARCHIVE 150
11.9. CSV 151
11.10. FEDERATED 152
11.11. Оператор CREATE TABLE 154
11.11.1. Структура таблицы 155
11.11.2. Параметры таблицы 161
ENGINE (TYPE) 161
AUTO_INCREMENT 162
AVG_ROW_LENGTH 162
[DEFAULT] CHARACTER SET 162
CHECKSUM 163
COMMENT 163
DATA DIRECTORY 164
DELAY_KEY_WRITE 164
INDEX DIRECTORY 164
INSERT_METHOD 164
MAX_ROWS 164
MIN_ROWS 165
PACK_KEYS 165
PASSWORD 165
ROW_FORMAT 165
UNION 166
11.12. Изменение типа таблицы 166
Глава 12. Приведение типов 167
12.1. Ключевое слово BINARY 167
12.2. Функция CAST 168
12.3. Функция CONVERT 170
Глава 13. Операторы и математические функции 171
13.1. Операторы 171
13.1.1. Арифметические операторы 171
13.1.2. Операторы сравнения 175
13.1.2.1. Равенство = 175
13.1.2.2. Оператор 176
13.1.2.3. Оператор 177
13.1.2.4. Оператор < 177
13.1.2.5. Оператор 178
13.1.2.7. Оператор >= 179
13.1.2.8. Конструкция IS NULL 179
13.1.2.9. Конструкция IS NOT NULL 180
13.1.2.10. Конструкция BETWEEN min AND max 181
13.1.2.11. Конструкция NOT BETWEEN min AND max 182
13.1.2.12. Функция COALESCE 182
13.1.2.13. Функция GREATEST 183
13.1.2.14. Функция LEAST 183
13.1.2.15. Конструкция IN 184
13.1.2.16. Конструкция NOT IN 185
13.1.2.17. Функция INTERVAL 185
13.1.3. Логические операторы 186
13.1.3.1. Оператор NOT 186
13.1.3.2. Оператор OR 187
13.1.3.3. Оператор AND 187
13.1.3.4. Оператор XOR 188
13.1.4. Битовые операторы 188
13.1.4.1. Оператор & 188
13.1.4.2. Оператор | 189
13.1.4.3. Оператор ^ 190
13.1.4.4. Оператор ~ 191
13.1.4.5. Оператор > 192
13.1.4.7. Функция BIT_COUNT 193
13.1.5. Приоритет операторов 193
13.2. Математические функции 194
13.2.1. Функция ABS 195
13.2.2. Функция ACOS 195
13.2.3. Функция ASIN 195
13.2.4. Функция ATAN 196
13.2.5. Функция ATAN2 196
13.2.6. Функция CEILING 196
13.2.7. Функция COS 197
13.2.8. Функция COT 198
13.2.9. Функция CRC32 198
13.2.10. Функция DEGREES 198
13.2.11. Функция EXP 199
13.2.12. Функция FLOOR 199
13.2.13. Функция LOG 199
13.2.14. Функция LOG2 200
13.2.15. Функция LOG10 200
13.2.16. Функция MOD 200
13.2.17. Функция PI 201
13.2.18. Функция POW 201
13.2.19. Функция RADIANS 201
13.2.20. Функция RAND 202
13.2.21. Функция ROUND 203
13.2.22. Функция SIGN 204
13.2.23. Функция SIN 204
13.2.24. Функция SQPT 204
13.2.25. Функция TAN 205
13.2.26. Функция TRUNCATE 205
Глава 14. Функции даты и времени 207
14.1. Функция ADDDATE 207
14.2. Функция ADDTIME 212
14.3. Функция CONVERT_TZ 213
14.4. Функция CURDATE 213
14.5. Функция CURTIME 214
14.6. Функция DATE 214
14.7. Функция DATEDIFF 215
14.8. Функция DATE_FORMAT 215
14.9. Функция DAY 218
14.10. Функция DAYNAME 218
14.11. Функция DAYOFMONTH 219
14.12. Функция DAYOFWEEK 220
14.13. Функция DAYOFYEAR 220
14.14. Функция EXTRACT 220
14.15. Функция FROM_DAYS 221
14.16. Функция FROM_UNIXTIME 222
14.17. Функция GET_FORMAT 223
14.18. Функция HOUR 225
14.19. Функция LAST_DAY 225
14.20. Функция MAKEDATE 226
14.21. Функция MAKETIME 227
14.22. Функция MICROSECOND 227
14.23. Функция MINUTE 228
14.24. Функция MONTH 228
14.25. Функция MONTHNAME 228
14.26. Функция NOW 229
14.27. Функция PERIOD_ADD 230
14.28. Функция PERIOD_DIFF 230
14.29. Функция QUARTER 231
14.30. Функция SECOND 231
14.31. Функция SEC_TO_TIME 231
14.32. Функция STR_TO_DATE 232
14.33. Функция SUBDATE 232
14.34. Функция SUBTIME 233
14.35. Функция TIME 234
14.36. Функция TIMEDIFF 234
14.37. Функция TIMESTAMP 235
14.38. Функция TIMESTAMPADD 235
14.39. Функция TIMESTAMPDIFF 236
14.40. Функция TIME_FORMAT 237
14.41. Функция TIME_TO_SEC 237
14.42. Функция TO_DAYS 238
14.43. Функция UNIX_TIMESTAMP 239
14.44. Функция UTC_DATE 239
14.45. Функция UTC_TIME 240
14.46. Функция UTC_TIMESTAMP 240
14.47. Функция WEEK 241
14.48. Функция WEEKDAY 242
14.49. Функция WEEKOFYEAR 242
14.50. Функция YEAR 243
14.51. Функция YEARWEEK 243
Глава 15. Строковые функции 245
15.1. Функция ASCII 245
15.2. Функция BIN 246
15.3. Функция BIT_LENGTH 246
15.4. Функция CHAR 246
15.5. Функция CHAR_LENGTH 247
15.6. Функция CHARSET 248
15.7. Функция COLLATION 249
15.8. Функция COMPRESS 249
15.9. Функция CONCAT 251
15.10. Функция CONCAT_WS 252
15.11. Функция CONV 252
15.12. Функция ELT 253
15.13. Функция EXPORT_SET 253
15.14. Функция FIELD 254
15.15. Функция FIND_IN_SET 255
15.16. Функция FORMAT 255
15.17. Функция HEX 256
15.18. Функция INSERT 256
15.19. Функция INSTR 257
15.20. Функция LEFT 257
15.21. Функция LENGTH 258
15.22. Функция LOAD_FILE 258
15.23. Функция LOCATE 259
15.24. Функция LOWER 259
15.25. Функция LPAD 260
15.26. Функция LTRIM 260
15.27. Функция MAKE_SET 261
15.28. Функция MID 261
15.29. Функция OCT 262
15.30. Функция ORD 263
15.31. Функция POSITION 263
15.32. Функция QUOTE 263
15.33. Функция REPEAT 264
15.34. Функция REPLACE 264
15.35. Функция REVERSE 266
15.36. Функция RIGHT 266
15.37. Функция RDAP 267
15.38. Функция RTRIM 267
15.39. Функция SOUNDEX 268
15.40. Функция SPACE 268
15.41. Функция SUBSTRING 268
15.42. Функция SUBSTRING_INDEX 269
15.43. Функция TRIM 270
15.44. Функция UNCOMPRESS 271
15.45. Функция UNCOMPRESSED_LENGTH 271
15.46. Функция UNHEX 272
15.47. Функция UPPER 272
Глава 16. Безопасность и MySQL 275
16.1. Функции AES_ENCRYPT и AES_DECRYPT 275
16.2. Функции ENCODE и DECODE 277
16.3. Функции DES_ENCRYPT и DES_DECRYPT 278
16.4. Функция ENCRYPT 279
16.5. Функция MD5 280
16.6. Функция PASSWORD 280
16.7. Функция SHA1 281
Глава 17. Поиск и регулярные выражения 283
17.1. Оператор LIKE 283
17.2. Оператор NOT LIKE 287
17.3. Оператор SOUND LIKE 288
17.4. Оператор RLIKE (REGEXP) 288
17.5. Оператор NOT RLIKE 299
17.6. Функция STRCMP 300
Глава 18. Полнотекстовый поиск 301
18.1. Индекс FULLTEXT 301
18.2. Конструкция MATCH (...) AGAINST (...) 303
18.3. Логический режим 307
Глава 19. Функции, применяемые вместе с конструкцией GROUP BY 313
19.1. Функция AVG() 313
19.2. Функция BIT_AND() 316
19.3. Функция BIT_OR() 317
19.4. Функция BIT_XOR() 317
19.5. Функция COUNT() 318
19.6. Функция GROUP_CONCAT() 321
19.7. Функция MIN() 322
19.8. Функция MAX() 323
19.9. Функция STD() 324
19.10. Функция STDDEV_SAMP() 325
19.11. Функция SUM() 326
19.12. Функция VAR_POP() 327
19.13. Функция VAR_SAMP() 327
19.14. Конструкция WITH ROLLUP 327
Глава 20. Разные функции 329
20.1. Функции управления потоком выполнения 329
20.1.1. Функция CASE 329
20.1.2. Функция IF() 330
20.1.3. Функция IFNULL() 331
20.1.4. Функция NULLIF() 333
20.2. Информационные функции 333
20.2.1. Функция BENCHMARK() 333
20.2.2. Функция CONNECTION_ID() 334
20.2.3. Функция CURRENT_USER() 334
20.2.4. Функция DATABASE() 335
20.2.5. Функция FOUND_ROWS() 335
20.2.6. Функция LAST_INSERT_ID() 336
20.2.7. Функция USER() 338
20.2.8. Функция VERSION() 339
20.3. Разные функции 339
20.3.1. Функция DEFAULT() 339
20.3.2. Функция GET_LOCK() 340
20.3.3. Функция INET_ATON() 341
20.3.4. Функция INET_NTOA() 342
20.3.5. Функция IS_FREE_LOCK() 342
20.3.6. Функция IS_USED_LOCK() 343
20.3.7. Функция RELEASE_LOCK() 343
20.3.8. Функция UUID() 343
Глава 21. Переменные и временные таблицы 345
21.1. Переменные SQL 345
21.2. Временные таблицы 348
Глава 22. Многотабличные запросы 353
22.1. Перекрестное объединение таблиц 353
22.2. Объединение таблиц при помощи JOIN 363
22.3. Обновление нескольких таблиц 369
22.4. Удаление из нескольких таблиц 372
Глава 23. Вложенные запросы 375
23.1. Вложенный запрос как скалярный операнд 377
23.2. Вложенные запросы, возвращающие несколько строк 380
23.2.1. Ключевое слово IN 381
23.2.2. Ключевое слово ANY (SOME) 382
23.2.3. Ключевое слово ALL 384
23.3. Проверка на существование 386
23.4. Коррелированные запросы 388
23.5. Вложенные запросы, возвращающие несколько столбцов 389
23.6. Подзапросы в конструкции FROM 391
23.7. Вложенные запросы в операторе CREATE TABLE 393
23.8. Вложенные запросы в операторе INSERT 396
23.9. Ссылочная целостность 398
Глава 24. Транзакции и блокировки 407
24.1. Транзакции 407
24.2. Блокировка таблиц 412
Глава 25. Управление учетными записями пользователей 417
25.1. Учетные записи СУБД MySQL 417
25.2. Оператор CREATE USER 420
25.3. Оператор DROP USER 422
25.4. Оператор RENAME USER 424
25.5. Оператор GRANT 425
25.6. Оператор REVOKE 434
Глава 26. Предотвращение катастроф и восстановление 437
26.1. Оператор CHECK TABLE 437
26.2. Оператор ANALYZE TABLE 440
26.3. Оператор CHECKSUM TABLE 440
26.4. Оператор OPTIMIZE TABLE 443
26.5. Оператор REPAIR TABLE 443
26.6. Оператор BACKUP TABLE 445
26.7. Оператор RESTORE TABLE 446
Глава 27. Административные команды 449
ЧАСТЬ III 451
Глава 28. Хранимые процедуры 453
28.1. Хранимые процедуры и привилегии 454
28.2. Создание хранимой процедуры 454
28.2.1. Тело процедуры 456
28.2.2. Параметры процедуры 459
28.2.3. Работа с таблицами базы данных 462
28.2.4. Хранимые функции 469
28.3. Группа характеристик хранимых процедур 471
28.4. Операторы управления потоком данных 473
28.4.1. Оператор IF...THEN...ELSE 474
28.4.2. Оператор CASE 477
28.4.3. Оператор WHILE 479
28.4.4. Оператор REPEAT 484
28.4.5. Оператор LOOP 485
28.4.6. Оператор GOTO 486
28.5. Метаданные 488
28.5.1. Оператор SHOW PROCEDURE STATUS 488
28.5.2. Оператор SHOW CREATE 490
28.5.3. Извлечение информации из таблицы mysql.proc 491
28.6. Удаление хранимых процедур 493
28.7. Редактирование хранимых процедур 494
28.8. Обработчики ошибок 495
28.9. Курсоры 500
Глава 29. Триггеры 505
29.1. Оператор CREATE TRIGGER 505
29.2. Оператор DROP TRIGGER 509
Глава 30. Представления 511
30.1. Создание представлений 512
30.2. Удаление представлений 524
30.3. Редактирование представлений 525
30.4. Оператор SHOW CREATE VIEW 525
Глава 31. Информационная схема 527
Заключение 529
Приложение. Описание компакт-диска 531
Предметный указатель 533
XII Оглавление XI Оглавление