Оглавление Введение 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 Оглавление