Введение .................................................................................................................. 1
Благодарности ...................................................................................................................... 2
Глава 1. Установка MySQL................................................................................. 3
1.1. Структура MySQL ......................................................................................................... 3
1.1.1. Клиент-серверная архитектура ............................................................................ 3
1.1.2. Загрузка дистрибутивов ....................................................................................... 5
1.1.3. Структура дистрибутива ...................................................................................... 7
1.1.4. Официальная документация ................................................................................ 8
1.2. Установка MySQL под Windows .................................................................................. 9
1.2.1. Процесс установки ............................................................................................... 9
1.2.2. Постинсталляционная настройка ...................................................................... 15
1.2.3. Проверка работоспособности MySQL .............................................................. 23
1.3. Установка MySQL под Linux ..................................................................................... 25
1.4. Конфигурационный файл ........................................................................................... 29
1.5. Перемещение каталога данных .................................................................................. 32
1.6. Обновление текущей версии ...................................................................................... 32
1.7. Обзор утилит MySQL.................................................................................................. 34
1.8. Утилита mysql .............................................................................................................. 35
1.8.1. Командная строка ............................................................................................... 35
1.8.2. Установка соединения с локальным сервером ................................................ 40
1.8.3. Установка соединения с удаленным сервером ................................................ 45
1.8.4. Вертикальный режим вывода ............................................................................ 46
1.9. Настройка кодировок .................................................................................................. 48
1.10. Графические клиенты MySQL ................................................................................. 53
1.11. Перенос баз данных с одного сервера на другой ................................................... 54
1.11.1. Копирование бинарных файлов ...................................................................... 54
1.11.2. Создание SQL-дампа ........................................................................................ 56
1.11.3. Использование операторов SELECT и LOAD DATA ...................................... 58
1.11.4. Операторы BACKUP TABLE и RESTORE TABLE .......................................... 64
IV Îãëàâëåíèå
1.12. Журнальные файлы MySQL ..................................................................................... 67
1.12.1. Журнальные таблицы ....................................................................................... 68
1.12.2. Журнал ошибок ................................................................................................ 68
1.12.3. Общий журнал запросов .................................................................................. 69
1.12.4. Бинарный журнал регистраций ....................................................................... 69
1.12.5. Журнал медленных запросов ........................................................................... 72
1.13. Лицензирование MySQL .......................................................................................... 73
Глава 2. Базы данных и таблицы .................................................................... 75
2.1. Создание базы данных ................................................................................................ 75
2.2. Выбор базы данных .................................................................................................... 79
2.3. Создание таблиц .......................................................................................................... 81
2.3.1. Структура таблицы ............................................................................................. 82
Числовой тип данных ............................................................................................ 82
Строковый тип данных .......................................................................................... 85
Календарный тип данных ...................................................................................... 87
Тип данных NULL .................................................................................................. 89
2.3.2. Просмотр структуры таблицы ........................................................................... 91
2.3.3. Параметры столбцов .......................................................................................... 94
2.3.4. Допустимые имена баз данных, таблиц и столбцов ........................................ 98
2.3.5. Параметры таблицы ......................................................................................... 101
ENGINE (TYPE) .................................................................................................... 101
AUTO_INCREMENT ............................................................................................. 102
[DEFAULT] CHARACTER SET ........................................................................... 103
CHECKSUM .......................................................................................................... 103
COMMENT ............................................................................................................ 104
DATA DIRECTORY ............................................................................................... 104
INDEX DIRECTORY ............................................................................................. 104
PACK_KEYS .......................................................................................................... 105
ROW_FORMAT ..................................................................................................... 105
2.3.6. Временные таблицы ......................................................................................... 105
2.3.7. Создание копии таблицы ................................................................................. 106
2.3.8. Размещение таблиц в оперативной памяти .................................................... 108
2.3.9. Объединение нескольких таблиц в одну ........................................................ 109
2.3.10. Размещение таблиц на удаленной машине ................................................... 111
2.4. Удаление таблиц ....................................................................................................... 113
2.5. Редактирование таблицы .......................................................................................... 114
2.5.1. Добавление столбца ......................................................................................... 115
2.5.2. Удаление столбца ............................................................................................. 116
2.5.3. Изменение уже существующих столбцов ....................................................... 116
2.5.4. Переименование таблицы ................................................................................ 118
2.5.5. Преобразование параметров таблицы ............................................................ 119
2.6. Восстановление таблиц ............................................................................................ 121
2.6.1. Оператор REPAIR TABLE ................................................................................ 121
2.6.2. Контрольная сумма таблицы ........................................................................... 123
Îãëàâëåíèå V
Глава 3. Индексы .............................................................................................. 127
3.1. Индексация столбцов при создании таблицы ......................................................... 127
3.1.1. Первичный ключ .............................................................................................. 128
3.1.2. Создание уникального индекса при помощи атрибута
AUTO_INCREMENT ................................................................................................... 131
3.1.3. Обычный и уникальный индексы.................................................................... 132
3.2. Добавление и удаление индексов в существующую таблицу ............................... 134
3.2.1. Добавление индекса ......................................................................................... 134
3.2.2. Удаление индекса ............................................................................................. 136
3.3. Восстановление индексов......................................................................................... 137
Глава 4. Заполнение, обновление и очистка таблиц .................................. 141
4.1. Вставка записи в таблицу. Оператор INSERT ......................................................... 141
4.1.1. Вставка числовых значений ............................................................................ 141
4.1.2. Вставка строковых значений ........................................................................... 143
4.1.3. Вставка календарных значений ....................................................................... 145
4.1.4. Тип данных TIMESTAMP ................................................................................. 148
4.1.5. Вставка данных в формате UNIXSTAMP ........................................................ 149
4.1.6. Вставка уникальных значений......................................................................... 150
4.1.7. Механизм AUTO_INCREMENT ....................................................................... 151
4.1.8. Вставка вычисляемых значений ...................................................................... 153
4.2. Многострочный оператор INSERT .......................................................................... 154
4.3. Отложенная вставка записей .................................................................................... 154
4.4. Пакетная загрузка данных. Оператор INSERT ... SELECT ..................................... 155
4.5. Удаление данных ...................................................................................................... 157
4.5.1. Оператор DELETE ............................................................................................ 157
4.5.2. Оператор TRUNCATE ....................................................................................... 158
4.5.3. Удаление из нескольких таблиц ...................................................................... 158
4.5.4. Каскадное удаление из нескольких таблиц .................................................... 162
4.6. Обновление записей .................................................................................................. 165
4.6.1. Оператор UPDATE ........................................................................................... 165
4.6.2. Многотабличный оператор UPDATE.............................................................. 166
4.6.3. Оператор REPLACE.......................................................................................... 168
Глава 5. Извлечение данных ........................................................................... 171
5.1. Простейшая выборка из таблицы ............................................................................ 171
5.2. Условная выборка ..................................................................................................... 173
5.3. Комбинированные условия ...................................................................................... 175
5.4. NULL и логические операторы ................................................................................ 177
5.5. Выборка из диапазона .............................................................................................. 179
5.6. Выборка множества .................................................................................................. 180
5.7. Использование строк в условии ............................................................................... 181
5.8. Использование календарных значений в условии .................................................. 186
VI Îãëàâëåíèå
5.9. Форматирование календарных значений ................................................................ 188
5.10. Модификация календарных значений ................................................................... 190
5.11. Псевдонимы столбцов ............................................................................................ 191
5.12. Сортировка записей ................................................................................................ 192
5.13. Вывод записей в случайном порядке .................................................................... 195
5.14. Ограничение выборки ............................................................................................. 195
5.15. Текущая версия MySQL ......................................................................................... 196
5.16. Количество записей в таблице ............................................................................... 198
5.17. Поиск минимального и максимального значений ................................................ 199
5.18. Вывод уникальных значений ................................................................................. 200
5.19. Групповые условия. Условие HAVING ................................................................. 203
5.20. Объединение таблиц ............................................................................................... 205
5.21. Перекрестное объединение таблиц ........................................................................ 208
5.22. Самообъединение таблиц ....................................................................................... 214
5.23. Объединение таблиц при помощи JOIN ................................................................ 215
5.24. Вложенный запрос, возвращающий одно значение ............................................. 218
5.25. Вложенные запросы, возвращающие несколько строк ....................................... 223
5.25.1. Ключевое слово IN ......................................................................................... 224
5.25.2. Ключевое слово ANY (SOME) ........................................................................ 225
5.25.3. Ключевое слово ALL ...................................................................................... 227
5.26. Проверка результирующей таблицы на существование ...................................... 228
5.27. Вложенные запросы, возвращающие несколько столбцов ................................. 230
5.28. Подзапросы в конструкции FROM ........................................................................ 232
Глава 6. Встроенные функции ........................................................................ 233
6.1. Математические функции ........................................................................................ 233
6.1.1. Вычисление площади треугольников ............................................................. 235
6.1.2. Округление результатов вычисления .............................................................. 237
6.1.3. Вывод случайной записи ................................................................................. 239
6.2. Функции даты и времени .......................................................................................... 240
6.2.1. Сложение и вычитание интервалов ................................................................ 245
6.2.2. Заполнение календарных значений ................................................................. 249
6.2.3. Форматирование календарных значений ....................................................... 250
6.2.4. Вычисление возраста человека ....................................................................... 250
6.2.5. Преобразование даты в UNIXSTAMP-формат .............................................. 252
6.3. Строковые функции .................................................................................................. 253
6.3.1. Изменение кодировки строки .......................................................................... 258
6.3.2. Первые несколько символов строки ............................................................... 259
6.3.3. Извлечение инициалов ..................................................................................... 259
6.3.4. Изменение регистра строки ............................................................................. 260
6.3.5. Сжатие строки................................................................................................... 262
6.3.6. Загрузка строки из файла ................................................................................. 263
6.3.7. Извлечение строк, содержащих искомую подстроку в поле типа SET ........ 265
Îãëàâëåíèå VII
6.4. Функции шифрования ............................................................................................... 266
6.4.1. Обратимое шифрование ................................................................................... 268
6.4.2. Необратимое шифрование ............................................................................... 269
6.5. Функции управления потоком ................................................................................. 271
6.5.1. Статус записи .................................................................................................... 271
6.5.2. Замена NULL на эквиваленты .......................................................................... 273
6.6. Информационные функции ...................................................................................... 274
6.6.1. Статусная информация о текущем сеансе ...................................................... 275
6.6.2. Информация о сервере ..................................................................................... 276
6.6.3. Фактическое количество строк в таблице ...................................................... 277
6.7. Разное ......................................................................................................................... 278
6.7.1. Преобразование IP-адреса ............................................................................... 279
6.7.2. Блокировка ........................................................................................................ 280
6.7.3. Универсальный уникальный идентификатор компьютера ........................... 282
Глава 7. Поиск ................................................................................................... 285
7.1. Регулярные выражения ............................................................................................. 285
7.2. Полнотекстовый поиск ............................................................................................. 295
7.2.1. Индекс FULLTEXT ........................................................................................... 296
7.2.2. Конструкция MATCH (...) AGAINST (...) ......................................................... 298
7.2.3. Модификаторы полнотекстового поиска ....................................................... 302
7.2.4. Логический режим ............................................................................................ 303
7.2.5. Режим расширения запроса ............................................................................. 305
Глава 8. Функции, применяемые
вместе с конструкцией GROUP BY ................................................................ 307
8.1. Среднее значение ...................................................................................................... 308
8.2. Сортировка агрегатных значений ............................................................................ 311
8.3. Подсчет количества записей в таблице ................................................................... 312
8.4. Объединение значений группы ................................................................................ 315
8.5. Поиск минимального и максимального значений .................................................. 316
8.6. Сумма столбца ........................................................................................................... 318
8.7. Конструкция WITH ROLLUP .................................................................................... 319
Глава 9. Переменные ........................................................................................ 321
9.1. Переменные SQL ....................................................................................................... 321
9.2. Нумерация записей ................................................................................................... 325
9.3. Системные переменные сервера .............................................................................. 325
9.4. Динамические запросы ............................................................................................. 330
Глава 10. Транзакции и блокировки ............................................................. 333
10.1. Транзакции .............................................................................................................. 333
10.2. Когда можно обойтись без транзакций? ............................................................... 338
10.3. Блокировка таблиц .................................................................................................. 339
VIII Îãëàâëåíèå
Глава 11. Администрирование MySQL ........................................................ 343
11.1. Создание и удаление пользователей ...................................................................... 343
11.2. Назначение пароля .................................................................................................. 346
11.3. Восстановление утерянного пароля ...................................................................... 346
11.4. Удаленный доступ к MySQL .................................................................................. 346
11.5. Управление привилегиями пользователей ............................................................ 348
11.6. Просмотр существующих привилегий .................................................................. 356
11.7. Ограничение на число соединений с сервером и число запросов ...................... 356
11.8. Репликация .............................................................................................................. 359
Глава 12. Хранимые процедуры и функции ................................................ 365
12.1. Создание хранимой процедуры (функции) ........................................................... 365
12.2. Использование параметров .................................................................................... 369
12.3. Локальные переменные .......................................................................................... 372
12.4. Присвоение значения локальной переменной ...................................................... 375
12.5. Форматирование временного интервала ............................................................... 376
12.6. Группа характеристик хранимых процедур .......................................................... 379
12.7. Операторы ветвления.............................................................................................. 382
12.7.1. Оператор IF...THEN...ELSE ............................................................................ 382
12.7.2. Оператор CASE ............................................................................................... 385
12.7.3. Проверка правильности ввода ....................................................................... 387
12.7.4. Вывод приветствия в зависимости от времени суток.................................. 388
12.8. Циклы ....................................................................................................................... 389
12.8.1. Оператор WHILE ............................................................................................ 389
12.8.2. Досрочный выход из цикла ........................................................................... 391
12.8.3. Оператор REPEAT .......................................................................................... 394
12.8.4. Оператор LOOP .............................................................................................. 395
12.8.5. Отсутствующие идентификаторы ................................................................. 396
12.9. Получение списка созданных хранимых процедур и функций ........................... 397
12.10. Содержимое хранимой процедуры ...................................................................... 402
12.11. Удаление хранимых процедур и функций .......................................................... 402
12.12. Редактирование хранимых процедур .................................................................. 404
12.13. Обработчики ошибок ............................................................................................ 405
12.14. Курсоры ................................................................................................................. 410
12.15. Рекурсивные хранимые процедуры ..................................................................... 413
Глава 13. Триггеры ........................................................................................... 419
13.1. Создание триггера ................................................................................................... 419
13.2. Удаление триггера .................................................................................................. 423
13.3. Список созданных триггеров ................................................................................. 424
Глава 14. Представления ................................................................................. 427
14.1. Создание представлений ........................................................................................ 427
14.2. Сокрытие столбцов ................................................................................................. 432
Îãëàâëåíèå IX
14.3. Сокрытие строк ....................................................................................................... 434
14.4. Обновление и удаление записей при помощи представлений ............................ 435
14.5. Редактирование представления .............................................................................. 436
14.6. Удаление представлений ........................................................................................ 437
14.7. Просмотр структуры представления ..................................................................... 438
Глава 15. Информационная схема ................................................................. 439
15.1. Список баз данных .................................................................................................. 442
15.2. Список таблиц ......................................................................................................... 444
15.3. Список столбцов ..................................................................................................... 447
Глава 16. Планировщик заданий ................................................................... 453
16.1. Управление планировщиком задач ........................................................................ 453
16.2. Размещение задания ................................................................................................ 456
16.3. Удаление задания .................................................................................................... 460
16.4. Редактирование задания ......................................................................................... 461
16.5. Список заданий ....................................................................................................... 463
Глава 17. Сегментирование ............................................................................ 465
17.1. Включено ли сегментирование? ............................................................................ 465
17.2. Создание сегментированной таблицы ................................................................... 466
17.3. Типы сегментирования таблиц .............................................................................. 467
17.3.1. Линейная сегментация RANGE...................................................................... 467
17.3.2. Списочная сегментация LIST ......................................................................... 471
17.3.3. Хэш-сегментация HASH ................................................................................. 474
17.3.4. Индексная сегментация KEY ......................................................................... 475
17.4. Подразделы .............................................................................................................. 476
17.5. Распределение подразделов по разным папкам и дискам ................................... 479
17.6. Удаление разделов .................................................................................................. 481
17.7. Добавление разделов .............................................................................................. 483
17.8. Перепланировка разделов ...................................................................................... 485
Глава 18. Взаимодействие с PHP ................................................................... 489
18.1. Расширение php_mysql ........................................................................................... 489
18.2. Расширение php_mysqli .......................................................................................... 497
18.3. Создание базы данных ............................................................................................ 505
18.4. Создание и заполнение таблицы ............................................................................ 506
18.5. Заполнение связанных таблиц ............................................................................... 508
18.6. Вывод данных.......................................................................................................... 515
18.7. Повторное чтение результирующей таблицы ....................................................... 517
18.8. Количество строк в таблице ................................................................................... 520
18.9. Вывод результатов в несколько столбцов ............................................................. 521
18.10. Постраничная навигация ...................................................................................... 524
18.11. Удаление данных .................................................................................................. 528
X Îãëàâëåíèå
18.12. Сортировка ............................................................................................................ 532
18.13. Размер базы данных .............................................................................................. 535
Заключение ......................................................................................................... 537
Приложение 1. Системные переменные MySQL ........................................ 539
Приложение 2. Описание компакт-диска ..................................................... 565
Предметный указатель .................................................................................... 567