MySQL: руководство профессионала Введение Глава 1. Точная математика 1.1. Типы числовых значений 1.2. Изменения типа данных DECIMAL 1.3. Обработка выражений 1.4. Поведение округления 1.5. Примеры математической точности Глава 2. Типы памяти и таблиц 2.1. Краткий обзор архитектуры хранения данных в MySQL 2.1.1. Общий уровень сервера базы данных 2.1.2. Съемная архитектура памяти 2.1.2.1. Подключение типа памяти 2.1.2.2. Отключение типа памяти 2.1.2.3. Безопасность и сменные типы памяти 2.2. Обеспечиваемые типы памяти 2.2.1. Выбор типа памяти 2.2.2. Сравнение транзакционных и не транзакционных таблиц 2.2.3. Другие типы памяти 2.3. Установка типа памяти 2.4. Тип памяти Falcon 2.4.1. Свойства Falcon 2.4.2. Параметры конфигурации 2.4.3. Создание пространства таблиц Falcon 2.4.4. Создание таблиц и индексов в Falcon 2.4.5. Принципы и терминология 2.4.5.1. Файл и структуры данных Falcon 2.4.5.2. Последовательный файл регистрации Falcon 2.4.5.2.1. Процесс обратной перемотки 2.4.5.2.2. Групповое завершение транзакций 2.4.5.3. Восстановление аварийного отказа Falcon 2.4.5.4. Кэши памяти Falcon 2.4.5.5. Потоки Falcon 2.4.5.6. Сжатие данных 2.4.5.7. Слот записи 2.4.6. Ограничения 2.5. Тип памяти EXAMPLE 2.6. Тип памяти FEDERATED 2.6.1. Описание типа памяти FEDERATED 2.6.2. Как использовать таблицы FEDERATED 2.6.3. Ограничения типа памяти FEDERATED 2.7. Тип памяти ARCHIVE 2.8. Тип памяти CSV 2.8.1. Восстановление и проверка таблицы CSV 2.8.2. Ограничения CSV 2.9. Тип памяти BLACKHOLE 2.10 MySQL 5 FAQ по таблицам и типам памяти 2.10.1: Имеются ли любые новые типы памяти в MySQL 5.1? 2.10.2: А какие-то типы памяти были удалены в MySQL 5.1? 2.10.3: Каковы уникальные выгоды типа памяти ARCHIVE? 2.10.4: Какие новые свойства в MySQL 5.1 относятся ко всем типам памяти? 2.10.5: Какие изменения в поддерживаемые типы таблиц внесены в MySQL 5.1? Глава 3. Выделение разделов (partitioning) 3.1. Краткий обзор выделения разделов в MySQL 3.2. Типы раздела 3.2.1. RANGE partitioning 3.2.2. LIST partitioning 3.2.3. HASH partitioning 3.2.3.1. LINEAR HASH partitioning 3.2.4. KEY partitioning 3.2.5. Подвыделение разделов (Subpartitioning) 3.2.6. Как выделитель разделов в MySQL обрабатывает значения NULL 3.3. Управление разделами 3.3.1. Управление разделами RANGE и LIST 3.3.2. Управление разделами KEY и HASH 3.3.3. Сопровождение разделов 3.3.4. Получение информации относительно разделов 3.4. Сокращение раздела 3.5. Ограничения выделения разделов Глава 4. Пространственные расширения 4.1. Введение в пространственную поддержку MySQL 4.2. Модель геометрии OpenGIS 4.2.1. Иерархия класса геометрии 4.2.2. Класс Geometry 4.2.3. Класс Point 4.2.4. Класс Curve 4.2.5. Класс LineString 4.2.6. Класс Surface 4.2.7. Класс Polygon 4.2.8. Класс GeometryCollection 4.2.9. Класс MultiPoint 4.2.10. Класс MultiCurve 4.2.11. Класс MultiLineString 4.2.12. Класс MultiSurface 4.2.13. Класс MultiPolygon 4.3. Обеспечиваемые пространственные форматы данных 4.3.1. Well-Known Text (WKT) 4.3.2. Well-Known Binary (WKB) 4.4. Создание пространственной базы данных MySQL 4.4.1. Пространственные типы данных в MySQL 4.4.2. Создание пространственных значений 4.4.2.1. Создание значений геометрии через функции WKT 4.4.2.2. Создание значенией геометрии с помощью функций WKB 4.4.2.3. Создание геометрии с использованием MySQL-специфических функций 4.4.3. Создание пространственных столбцов 4.4.4. Начальная загрузка пространственных столбцов 4.4.5. Выборка пространственных данных 4.5. Анализ пространственной информации 4.5.1. Функции преобразования формата геометрии 4.5.2. Функции Geometry 4.5.2.1. Общие функции геометрии 4.5.2.2. Функции Point 4.5.2.3. Функции LineString 4.5.2.4. Функции MultiLineString 4.5.2.5. Функции Polygon 4.5.2.6. Функции MultiPolygon 4.5.2.7. Функции GeometryCollection 4.5.3. Функции, которые создают новые конфигурации из существующих 4.5.3.1. Функции геометрии, которые производят новые конфигурации 4.5.3.2. Пространственные операторы 4.5.4. Функции для тестирования пространственных отношений между геометрическими объектами 4.5.5. Отношения на геометрии: минимальные ограничительные прямоугольники (MBR) 4.5.6. Функции, которые проверяют пространственные связи между конфигурациями 4.6. Оптимизация пространственного анализа 4.6.1. Создание пространственных индексов 4.6.2. Использование пространственного индекса 4.7. MySQL: согласованность и совместимость Глава 5. Сохраненные процедуры и функции 5.1. Сохраненные подпрограммы и таблицы предоставления привилегий 5.2. Синтаксис хранимых процедур 5.2.1. Синтаксис CREATE PROCEDURE и CREATE FUNCTION 5.2.2. Синтаксис ALTER PROCEDURE и ALTER FUNCTION 5.2.3. Синтаксис DROP PROCEDURE и DROP FUNCTION 5.2.4. Синтаксис команды CALL 5.2.5. Синтаксис составного оператора BEGIN ... END 5.2.6. Синтаксис DECLARE 5.2.7. Переменные в сохраненных подпрограммах 5.2.7.1. Локальные переменные DECLARE 5.2.7.2. Команда SET 5.2.7.3. Команда SELECT ... INTO 5.2.8. Условия и драйверы 5.2.8.1. DECLARE условий 5.2.8.2. DECLARE драйвера 5.2.9. Курсоры 5.2.9.1. Объявление курсоров 5.2.9.2. Инструкция OPEN 5.2.9.3. Инструкция FETCH 5.2.9.4. Инструкция CLOSE 5.2.10. Конструкции управления потоком данных 5.2.10.1. Инструкция IF 5.2.10.2. Инструкция CASE 5.2.10.3. Инструкция LOOP 5.2.10.4. Инструкция LEAVE 5.2.10.5. Инструкция ITERATE 5.2.10.6. Инструкция REPEAT 5.2.10.7. Инструкция WHILE 5.3. Сохраненные процедуры, функции, триггеры и LAST_INSERT_ID() 5.4. Сохраненные процедуры, функции, триггеры и репликация 5.5. Двоичная регистрация сохраненных подпрограмм и триггеров 5.6 MySQL 5 FAQ по хранимым подпрограммам 5.6.1: Есть ли форум для обсуждения сохраненных подпрограмм в MySQL? 5.6.2: Где я могу найти спецификацию ANSI SQL 2003 для сохраненных процедур? 5.6.3: Как управлять сохраненными подпрограммами? 5.6.4: Есть ли способ просматривать все сохраненные процедуры и функции в базе данных? 5.6.5: Где сохраненные процедуры сохранены? 5.6.6: Возможно ли группировать сохраненные процедуры или функции в пакеты? 5.6.7: Может сохраненная процедура вызывать другую сохраненную процедуру? 5.6.8: Может сохраненная процедура вызывать триггер? 5.6.9: Может сохраненная процедура обращаться к таблицам? 5.6.10: Может сохраненная процедура выдать ошибку прикладной программы? 5.6.11: Может сохраненная процедура обеспечивать обработку особых ситуаций? 5.6.12: Может сохраненная процедура в MySQL 5.1 вернуть набор результатов? 5.6.13: WITH RECOMPILE обеспечивается для сохраненных процедур? 5.6.14: Есть ли в MySQL аналог mod_plsql как шлюза к Apache, чтобы общаться непосредственно с сохраннеными процедурами в базе данных? 5.6.15: Я могу передавать массив как ввод сохраненной процедуре? 5.6.16: Я могу передавать курсор как параметр IN для сохраненной процедуры? 5.6.17: Я могу возвращать курсор как параметр OUT из сохраненной процедуры? 5.6.18: Я могу распечатывать значение переменной внутри сохраненной подпрограммы для целей отладки? 5.6.19: Я могу передавать или отменять транзакции внутри сохраненной процедуры? Глава 6. Триггеры 6.1. Синтаксис CREATE TRIGGER 6.2. Синтаксис DROP TRIGGER 6.3. Использование триггеров 6.4. MySQL 5 FAQ по триггерам 6.4.1: Имеется ли форум для обсуждения триггеров в MySQL? 6.4.2: MySQL 5.1 имеет триггеры операторного уровня или уровня строки? 6.4.3: Имеется ли любое значение по умолчанию для триггеров? 6.4.4: Как управлять триггерами в MySQL? 6.4.5: Имеется ли способ просмотреть все триггеры в конкретной базе данных? 6.4.6: Где хранятся триггеры? 6.4.7: Может триггер вызывать сохраненную процедуру? 6.4.8: Может триггер обращаться к таблицам? 6.4.9: Может триггер вызывать внешнюю прикладную программу через UDF? 6.4.10: Может триггер модифицировать таблицы на удаленном сервере? Глава 7. Views 7.1. Синтаксис ALTER VIEW 7.2. Синтаксис CREATE VIEW 7.3. Синтаксис DROP VIEW 7.4. MySQL 5.1 FAQ Views 7.4.1: Имеется ли форум для обсуждения MySQL Views? 7.4.2: Что случается с view, если основная таблица удалена или переименована? 7.4.3: MySQL 5.1 имеет кадры таблицы? 7.4.4: MySQL 5.1 имеет осуществленные views? 7.4.5: Можно ли вставлять во views, которые основаны на объединениях? Глава 8. Планировщик событий 8.1. Обзор планировщика событий 8.2. Синтаксис планировщика событий 8.2.1. Синтаксис CREATE EVENT 8.2.2. Синтаксис ALTER EVENT 8.2.3. Синтаксис DROP EVENT 8.3. Метаданные события 8.4. Состояние планировщика событий 8.5. Планировщик событий и привилегии MySQL 8.6. Ограничения планировщика событий Глава 9. База данных INFORMATION_SCHEMA 9.1. Таблица INFORMATION_SCHEMA SCHEMATA 9.2. Таблица INFORMATION_SCHEMA TABLES 9.3. Таблица INFORMATION_SCHEMA COLUMNS 9.4. Таблица INFORMATION_SCHEMA STATISTICS 9.5. Таблица INFORMATION_SCHEMA USER_PRIVILEGES 9.6. Таблица INFORMATION_SCHEMA SCHEMA_PRIVILEGES 9.7. Таблица INFORMATION_SCHEMA TABLE_PRIVILEGES 9.8. Таблица INFORMATION_SCHEMA COLUMN_PRIVILEGES 9.9. Таблица INFORMATION_SCHEMA CHARACTER_SETS 9.10. Таблица INFORMATION_SCHEMA COLLATIONS 9.11. Таблица INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY 9.12. Таблица INFORMATION_SCHEMA TABLE_CONSTRAINTS 9.13. Таблица INFORMATION_SCHEMA KEY_COLUMN_USAGE 9.14. Таблица INFORMATION_SCHEMA ROUTINES 9.15. Таблица INFORMATION_SCHEMA VIEWS 9.16. Таблица INFORMATION_SCHEMA TRIGGERS 9.17. Таблица INFORMATION_SCHEMA PLUGINS 9.18. Таблица INFORMATION_SCHEMA ENGINES 9.19. Таблица INFORMATION_SCHEMA PARTITIONS 9.20. Таблица INFORMATION_SCHEMA EVENTS 9.21. Таблица INFORMATION_SCHEMA FILES 9.22. Таблица INFORMATION_SCHEMA PROCESSLIST 9.23. Таблица INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS 9.24. Таблицы INFORMATION_SCHEMA GLOBAL_STATUS и SESSION_STATUS 9.25. Таблицы INFORMATION_SCHEMA GLOBAL_VARIABLES и SESSION_VARIABLES 9.26. Другие таблицы INFORMATION_SCHEMA 9.27. Расширения инструкции SHOW 9.28. MySQL 5 FAQ INFORMATION_SCHEMA 9.28.1: Имеется ли форум для обсуждения INFORMATION_SCHEMA? 9.28.2: Где я могу найти спецификацию ANSI SQL 2003 для INFORMATION_SCHEMA? 9.28.3: Каково различие между Oracle Data Dictionary и MySQL INFORMATION_SCHEMA? 9.28.4: Я могу изменять таблицы, найденные в базе данных INFORMATION_SCHEMA? Глава 10. Поддержка наборов символов 10.1. Наборы символов и объединения вообще 10.2. Наборы символов и объединения в MySQL 10.3. Определение наборов символов и объединений 10.3.1. Набор символов и объединение на стороне сервера 10.3.2. Набор символов и объединение базы данных 10.3.3. Набор символов и объединение таблицы 10.3.4. Набор символов и объединение столбца 10.3.5. Набор символов и объединение символьных строковых литералов 10.3.6. Национальный набор символов 10.3.7. Примеры назначения набора символов и объединения 10.3.8. Совместимость с другими СУБД 10.4. Наборы символов и объединения подключения 10.5. Проблемы объединения 10.5.1. Использование COLLATE в SQL-инструкциях 10.5.2. Старшинство предложения COLLATE 10.5.3. Оператор BINARY 10.5.4. Некоторые специальные случаи, где определение объединения сложно 10.5.5. Объединения должны быть для правильного набора символов 10.5.6. Пример эффекта объединения 10.6. Операции, на которые воздействует поддержка набора символов 10.6.1. Строки результата 10.6.2. CONVERT() и CAST() 10.6.3. Инструкции SHOW и INFORMATION_SCHEMA 10.7. Поддержка Unicode 10.8. UTF-8 для метаданных 10.9. Преобразование набора символов столбца 10.10. Наборы символов и объединения, которые поддерживает MySQL 10.10.1. Наборы символов Unicode 10.10.2. Западноевропейские наборы символов 10.10.3. Центральноевропейские наборы символов 10.10.4. Южноевропейские и ближневосточные наборы символов 10.10.5. Балтийские наборы символов 10.10.6. Наборы символов кириллицы 10.10.7. Азиатские наборы символов 10.10.7.1. Набор символов cp932 10.11. MySQL 5 FAQ: поддержка наборов символов CJK 10.11.1: Я вставил символы CJK в мою таблицу. Почему SELECT отображает их как символы '?'? 10.11.2: Какие китайские (GB) наборы символов понимает MySQL? 10.11.3: Какие проблемы я должен знать при работе с китайским набором символов Big5? 10.11.4: Почему японские преобразования набора символов терпят неудачу? 10.11.5: Что я должен делать, если я хочу преобразовывать SJIS 81CA в cp932? 10.11.6: Как MySQL представляют знак Yen (┬е)? 10.11.7: MySQL планирует делать отдельный набор символов, где 5C представляет знак йены? 10.11.8: Какие проблемы я должен знать при работе с корейскими наборами символов в MySQL? 10.11.9: Почему я получаю сообщения об ошибке "Data truncated"? 10.11.10: Почему мой внешний GUI-интерфейс или окно просмотра не отображает символы CJK правильно в моей прикладной программе, использующей Access, PHP или другой API? 10.11.11: Я обновился до MySQL 5.1. Как я могу возвращаться к поведению, аналогичному MySQL 4.0, относительно наборов символов? 10.11.12: Почему некоторые LIKE и поиск FULLTEXT с символами CJK срываются? 10.11.13: Какие наборы символов CJK доступны в MySQL? 10.11.14: Как я узнаю, является ли символ X доступным во всех наборах символов? 10.11.15: Почему CJK-строки не сортируются правильно в Unicode? (I) 10.11.16: Почему CJK-строки не сортируются правильно в Unicode? (дополнение) 10.11.17: Почему мои дополнительные символы отклонены MySQL? 10.11.18: Разве это не должен быть CJKV? 10.11.19: MySQL позволяет символам CJK использоваться в именах баз данных и таблиц? 10.11.20: Где я могу находить переводы руководства по MySQL на китайский, корейский и японский языки? 10.11.21: Где я могу получать справку по CJK и связанным проблемам в MySQL? Глава 11. Ограничения свойств 11.1. Ограничения на сохраненные подпрограммы и триггеры 11.2. Ограничения на курсоры сервера 11.3. Ограничения на подзапросы 11.4. Ограничения на Views 11.5. Ограничения на Join Поиск На сайте В Яндексе
DECIMAL
EXAMPLE
FEDERATED
ARCHIVE
CSV
BLACKHOLE
RANGE
LIST
HASH
LINEAR HASH
KEY
NULL
Geometry
Point
Curve
LineString
Surface
Polygon
GeometryCollection
MultiPoint
MultiCurve
MultiLineString
MultiSurface
MultiPolygon
CREATE PROCEDURE
CREATE FUNCTION
ALTER PROCEDURE
ALTER FUNCTION
DROP PROCEDURE
DROP FUNCTION
CALL
BEGIN ... END
DECLARE
SET
SELECT ... INTO
OPEN
FETCH
CLOSE
IF
CASE
LOOP
LEAVE
ITERATE
REPEAT
WHILE
LAST_INSERT_ID()
WITH RECOMPILE
mod_plsql
IN
OUT
CREATE TRIGGER
DROP TRIGGER
ALTER VIEW
CREATE VIEW
DROP VIEW
CREATE EVENT
ALTER EVENT
DROP EVENT
INFORMATION_SCHEMA
INFORMATION_SCHEMA SCHEMATA
INFORMATION_SCHEMA TABLES
INFORMATION_SCHEMA COLUMNS
INFORMATION_SCHEMA STATISTICS
INFORMATION_SCHEMA USER_PRIVILEGES
INFORMATION_SCHEMA SCHEMA_PRIVILEGES
INFORMATION_SCHEMA TABLE_PRIVILEGES
INFORMATION_SCHEMA COLUMN_PRIVILEGES
INFORMATION_SCHEMA CHARACTER_SETS
INFORMATION_SCHEMA COLLATIONS
INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY
INFORMATION_SCHEMA TABLE_CONSTRAINTS
INFORMATION_SCHEMA KEY_COLUMN_USAGE
INFORMATION_SCHEMA ROUTINES
INFORMATION_SCHEMA VIEWS
INFORMATION_SCHEMA TRIGGERS
INFORMATION_SCHEMA PLUGINS
INFORMATION_SCHEMA ENGINES
INFORMATION_SCHEMA PARTITIONS
INFORMATION_SCHEMA EVENTS
INFORMATION_SCHEMA FILES
INFORMATION_SCHEMA PROCESSLIST
INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS
INFORMATION_SCHEMA GLOBAL_STATUS
SESSION_STATUS
INFORMATION_SCHEMA GLOBAL_VARIABLES
SESSION_VARIABLES
SHOW
COLLATE
BINARY
CONVERT()
CAST()
cp932
SELECT
81CA
┬е
5C
LIKE
FULLTEXT
X