Оглавление Введение 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
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
Глава 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
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
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
Глава 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
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
18.12. Сортировка 532
18.13. Размер базы данных 535
Заключение 537
Приложение 1. Системные переменные MySQL 539
Приложение 2. Описание компакт-диска 565
Предметный указатель 567
X Оглавление IX Оглавление