Справочное руководство по MySQL

Справочное руководство по MySQL версии 4.0.11-gamma

Это - справочное руководство по MySQL; оно представляет собой документацию по MySQL версии 4.0.11-gamma. Функциональные изменения отмечены номером версии, в которой они произведены, поэтому это руководство будет полезно при освоении также и более старых версий MySQL. Поскольку данный материал носит чисто справочный характер, в нем не содержится основных положений SQL или сведений по реляционным базам данных.


1 Общая информация
1.1 Об этом руководстве
1.2 Соглашения, используемые в данном руководстве
1.3 О русском переводе руководства

1.4 Что представляет собой MySQL?
1.4.1 История MySQL
1.4.2 Основные возможности MySQL
1.4.3 Насколько стабильным является MySQL?
1.4.4 Насколько большими могут быть таблицы в MySQL?
1.4.5 Вопросы, связанные с Проблемой-2000

1.5 Что представляет собой компания MySQL AB?
1.5.1 Бизнес-модель и услуги, оказываемые компанией MySQL AB
1.5.1.1 Поддержка
1.5.1.2 Обучение и сертификация
1.5.1.3 Консультации
1.5.1.4 Коммерческие лицензии
1.5.1.5 О нашей программе партнерства
1.5.1.6 О рекламе
1.5.2 Как с нами связаться

1.6 Лицензии и поддержка MySQL
1.6.1 Поддержка, предлагаемая компанией MySQL AB
1.6.2 Авторские права и лицензии на MySQL
1.6.3 Лицензии на ПО MySQL
1.6.3.1 Использование ПО MySQL под коммерческой лицензией
1.6.3.2 Бесплатное использование ПО MySQL по лицензии GPL
1.6.4 Логотипы и торговые марки MySQL AB
1.6.4.1 Оригинальный логотип MySQL
1.6.4.2 Логотипы MySQL, которые могут использоваться без письменного разрешения
1.6.4.3 В каком случае для использования логотипов необходимо письменное разрешение?
1.6.4.4 Партнерские логотипы MySQL AB
1.6.4.5 Использование слова MySQL в текстовых документах и презентациях
1.6.4.6 Использование слова MySQL в названиях компаний и продуктов

1.7 Кратко о MySQL 4.x
1.7.1 Поэтапный выпуск
1.7.2 Можно использовать уже прямо сейчас
1.7.3 Встроенный MySQL
1.7.4 Другие функции, доступные в MySQL 4.0
1.7.5 Функции MySQL 4.x, которые будут добавлены в будущем
1.7.6 MySQL 4.1, следующая ветка в разработке

1.8 Источники информации по MySQL
1.8.1 Списки рассылки MySQL
1.8.1.1 Списки рассылки MySQL
1.8.1.2 Как задавать вопросы и направлять сообщения об ошибках
1.8.1.3 Как отправлять отчеты об ошибках или проблемах
1.8.1.4 Рекомендации по ответам на вопросы, направляемые в список рассылки
1.8.2 Пользователи MySQL на IRC

1.9 Насколько MySQL соответствует стандартам?
1.9.1 Каким стандартам соответствует MySQL ?
1.9.2 Запуск MySQL в режиме ANSI
1.9.3 Расширения MySQL к ANSI SQL92
1.9.4 Отличия MySQL от ANSI SQL92
1.9.4.1 Вложенные SELECTы
1.9.4.2 Оператор SELECT INTO TABLE
1.9.4.3 Транзакции и атомарные операции
1.9.4.4 Хранимые процедуры и триггеры
1.9.4.5 Внешние ключи
1.9.4.6 Представления
1.9.4.7 Символы `--' как начало комментария
1.9.5 Известные ошибки и недостатки проектирования в MySQL

1.10 MySQL и будущее (что предстоит сделать)
1.10.1 Что планируется реализовать в версии в 4.0
1.10.2 Things That Should be in 4.1
1.10.3 Что планируется реализовать в версии 5.0
1.10.4 Что должно быть сделано в ближайшем будущем
1.10.5 То, что надо сделать когда-нибудь
1.10.6 То, чего не планируется делать

1.11 Сравнение MySQL с другими СУБД
1.11.1 Сравнение MySQL и mSQL
1.11.1.1 Как конвертировать инструментальные средства mSQL в MySQL
1.11.1.2 Различия в клиент-серверных коммуникационных протоколах mSQL и MySQL
1.11.1.3 Различия в синтаксисе SQL между mSQL 2.0 и MySQL
1.11.2 Сравнение MySQL c PostgreSQL
1.11.2.1 Стратегии развития MySQL и PostgreSQL
1.11.2.2 Сравнение возможностей MySQL и PostgreSQL
1.11.2.3 Тестирование скорости работы MySQL и PostgreSQL

2 Установка MySQL

2.1 Быстрая стандартная установка MySQL
2.1.1 Установка MySQL на Linux
2.1.2 Установка MySQL на Windows
2.1.2.1 Установка бинарного кода
2.1.2.2 Подготовка конфигурации MySQL для Windows
2.1.2.3 Первый запуск сервера

2.2 Общие вопросы инсталляции
2.2.1 Как получить MySQL
2.2.2 Проверка целостности пакетов с помощью MD5 Checksums или GnuPG
2.2.5 Операционные системы, поддерживаемые MySQL
2.2.6 Какую версию MySQL использовать
2.2.7 Схемы установки
2.2.8 Как и когда выпускаются обновления
2.2.9 Бинарные коды MySQL, скомпилированные в MySQL AB
2.2.10 Установка бинарного дистрибутива MySQL

2.3 Установка исходного дистрибутива MySQL
2.3.1 Обзор быстрой установки
2.3.2 Применение патчей
2.3.3 Типичные опции configure
2.3.4 Установка из экспериментального набора исходных кодов
2.3.5 Проблемы с компиляцией?
2.3.6 Замечания по потокам MIT-pthreads
2.3.7 Дистрибутив исходного кода для Windows

2.4 Послеустановочные настройка и тестирование
2.4.1 Проблемы при запуске mysql_install_db
2.4.2 Проблемы при запуске сервера MySQL
2.4.3 Автоматический запуск и остановка MySQL

2.5 Апгрейд/даунгрейд MySQL
2.5.1 Модернизация с версии 4.0
2.5.2 Модернизация с версии 3.23 до версии 4.0
2.5.3 Модернизация с версии 3.22 до версии 3.23
2.5.4 Модернизация с версии 3.21 до версии 3.22
2.5.5 Модернизация с версии 3.20 до версии 3.21
2.5.6 Модернизация к иной архитектуре

2.6 Заметки по операционным системам
2.6.1 Примечания к Linux (Все версии Linux)
2.6.1.1 Примечания к бинарным дистрибутивам Linux
2.6.1.2 Заметки по поводу Linux x86
2.6.1.3 Примечания к Linux SPARC
2.6.1.4 Примечания к Linux Alpha
2.6.1.5 Примечания к Linux PowerPC
2.6.1.6 Примечания к Linux MIPS
2.6.1.7 Примечания к Linux IA64
2.6.2 Примечания к Windows
2.6.2.1 Запуск MySQL на Windows 95, 98 или Me
2.6.2.2 Запуск MySQL на Windows NT, 2000 или XP
2.6.2.3 Работа MySQL в среде Windows
2.6.2.4 Соединение с MySQL на удаленной машине под Windows с использованием SSH
2.6.2.5 Распределение данных в Windows между несколькими различными дисками
2.6.2.6 Компиляция MySQL-клиентов в среде Windows
2.6.2.7 Сравнительные характеристики MySQL под Windows и под Unix
2.6.3 Примечания к Solaris
2.6.3.1 Примечания к Solaris 2.7/2.8
2.6.3.2 Примечания к Solaris x86
2.6.4 Примечания к BSD
2.6.4.1 Примечания к FreeBSD
2.6.4.2 Примечания к NetBSD
2.6.4.3 Примечания к OpenBSD 2.5
2.6.4.4 Примечания к OpenBSD 2.8
2.6.4.5 Примечания к BSD/OS версий 2.x
2.6.4.6 Примечания к BSD/OS версий 3.x
2.6.4.7 Примечания к BSD/OS версий 4.x
2.6.5 Примечания к Mac OS X
2.6.5.1 Общедоступная бета-версия Mac OS X
2.6.5.2 Сервер Mac OS X
2.6.6 Примечания к другим Unix-системам
2.6.6.1 Примечания к бинарному дистрибутиву HP-UX
2.6.6.2 Примечания к HP-UX версии 10.20
2.6.6.3 Примечания к HP-UX версий 11.x
2.6.6.4 Примечания к IBM-AIX
2.6.6.5 Примечания к SunOS 4
2.6.6.6 Примечания к Alpha-DEC-UNIX (Tru64)
2.6.6.7 Примечания к Alpha-DEC-OSF/1
2.6.6.8 Примечания к SGI Irix
2.6.6.9 Примечания к Caldera (SCO)
2.6.6.10 Примечания к Caldera (SCO) Unixware Version 7.0
2.6.7 Примечания к OS/2
2.6.8 Примечания к BeOS
2.6.9 Примечания к Novell NetWare

2.7 Замечания по установке Perl
2.7.1 Установка Perl на Unix
2.7.2 Установка ActiveState Perl на Windows
2.7.3 Установка дистрибутива Perl для MySQL на Windows
2.7.4 Проблемы использования интерфейса Perl DBI/DBD

3 Учебное пособие по MySQL

3.1 Подсоединение к серверу и отсоединение от него

3.2 Ввод запросов

3.3 Создание и использование базы данных
3.3.1 Создание и выбор базы данных
3.3.2 Создание таблицы
3.3.3 Загрузка данных в таблицу
3.3.4 Выборка информации из таблицы
3.3.4.1 Выборка всех данных
3.3.4.2 Выборка определенных строк
3.3.4.3 Выборка определенных столбцов
3.3.4.4 Сортировка строк
3.3.4.5 Вычисление дат
3.3.4.6 Работа с значениями NULL
3.3.4.7 Сравнение по шаблонам
3.3.4.8 Подсчет строк
3.3.4.9 Использование нескольких таблиц

3.4 Получение информации о базах данных и таблицах

3.5 Примеры стандартных запросов
3.5.1 Максимальное значение столбца
3.5.2 Строка, содержащая максимальное значение некоторого столбца
3.5.3 Максимальное значение столбца для группы
3.5.4 Строка, содержащая максимальное значение некоторого столбца
3.5.5 Использование пользовательских переменных
3.5.6 Использование внешних ключей
3.5.7 Поиск по двум ключам
3.5.8 Подсчет посещений за день
3.5.9 Использование атрибута AUTO_INCREMENT

3.6 Использование mysql в пакетном режиме

3.7 Запросы проекта "Близнецы.html" (Twin Project)
3.7.1 Поиск нераспределенных близнецов
3.7.2 Вывод таблицы состояний пар близнецов

3.8 Использование MySQL совместно с Apache

4 Администрирование баз данных

4.1 Конфигурирование MySQL
4.1.1 Параметры командной строки mysqld
4.1.2 Файлы параметров `my.cnf'
4.1.3 Установка нескольких серверов на один компьютер
4.1.4 Запуск нескольких серверов MySQL на одном компьютере

4.2 Общие проблемы безопасности и система привилегий доступа MySQL
4.2.1 Общие принципы обеспечения безопасности
4.2.2 Как обезопасить MySQL от хакеров
4.2.3 Опции запуска mysqld, относящиеся к безопасности
4.2.4 Вопросы безопасности, относящиеся к команде LOAD DATA LOCAL
4.2.5 Функции, выполняемые системой привилегий
4.2.6 Как работает система привилегий
4.2.7 Привилегии, предоставляемые MySQL
4.2.8 Соединение с сервером MySQL
4.2.9 Управление доступом, этап 1: верификация подсоединения
4.2.10 Управление доступом, этап 2: верификация запросов
4.2.11 Причины появления ошибок Access denied ("в доступе отказано.html")

4.3 Управление учетными записями пользователей MySQL
4.3.1 Синтаксис команд GRANT и REVOKE
4.3.2 Имена пользователей MySQL и пароли
4.3.3 Когда изменения в привилегиях вступают в силу
4.3.4 Задание изначальных привилегий MySQL
4.3.5 Добавление новых пользователей в MySQL
4.3.6 Ограничение ресурсов пользователя
4.3.7 Задание паролей
4.3.8 Обеспечение безопасности своего пароля
4.3.9 Использование безопасных соединений
4.3.9.1 Основные сведения
4.3.9.2 Требования
4.3.9.3 Параметры команды GRANT

4.4 Предотвращение катастроф и восстановление
4.4.1 Резервное копирование баз данных
4.4.2 Синтаксис BACKUP TABLE
4.4.3 Синтаксис RESTORE TABLE
4.4.4 Синтаксис CHECK TABLE
4.4.5 Синтаксис REPAIR TABLE
4.4.6 Использование myisamchk для профилактики таблиц и послеаварийного
4.4.6.1 Синтаксис запуска myisamchk
4.4.6.2 Общие опции для myisamchk
4.4.6.3 Проверочные опции для myisamchk
4.4.6.4 Опции исправления для myisamchk
4.4.6.5 Другие опции для myisamchk
4.4.6.6 Использование памяти утилитой myisamchk
4.4.6.7 Использование myisamchk для послеаварийного восстановления
4.4.6.8 Как проверять таблицы на ошибки
4.4.6.9 Как ремонтировать таблицы
4.4.6.10 Оптимизация таблиц
4.4.7 Настройка режима профилактики таблиц
4.4.8 Получение информации о таблице

4.5 Справочник по языку администрирования баз данных

4.5.1 Синтаксис команды OPTIMIZE TABLE
4.5.2 Синтаксис команды ANALYZE TABLE
4.5.3 Синтаксис команды FLUSH
4.5.4 Синтаксис команды RESET
4.5.5 Синтаксис команды KILL
4.5.6 Синтаксис команды SHOW
4.5.6.1 Получение информации по базам данных, таблицам, столбцам и индексам
4.5.6.2 SHOW TABLE STATUS
4.5.6.3 SHOW STATUS
4.5.6.4 SHOW VARIABLES
4.5.6.5 SHOW LOGS
4.5.6.6 SHOW PROCESSLIST
4.5.6.7 SHOW GRANTS
4.5.6.8 SHOW CREATE TABLE

4.6 Локализация MySQL и использование национальных алфавитов
4.6.1 Набор символов, применяющийся для записи данных и сортировки
4.6.1.1 Набор символов немецкого алфавита
4.6.2 Сообщения об ошибках на языках, отличных от английского
4.6.3 Добавление набора символов
4.6.4 Массивы определения символов
4.6.5 Поддержка упорядочивания строк
4.6.6 Поддержка многобайтовых символов
4.6.7 Проблемы с наборами символов

4.7 Серверные сценарии и утилиты MySQL
4.7.1 Обзор серверных сценариев и утилит
4.7.2 safe_mysqld, оболочка mysqld
4.7.3 Mysqld_multi, программа для управления множеством серверов MySQL
4.7.4 myisampack, MySQL-генератор сжатых таблиц (только для чтения)
4.7.5 mysqld-max, расширенный сервер mysqld

4.8 Клиентские сценарии и утилиты MySQL
4.8.1 Обзор клиентских сценариев и утилит
4.8.2 mysql, Утилита командной строки
4.8.3 mysqladmin, Администрирование MySQL-сервера.
4.8.4 Использование mysqlcheck для сопровождения и аварийного восстановления таблиц.
4.8.5 mysqldump, Получение дампов данных и структуры таблицы
4.8.6 mysqlhotcopy, Копирование баз данных и таблиц MySQL
4.8.7 mysqlimport, импорт данных из текстовых файлов
4.8.8 Просмотр баз данных, таблиц и столбцов
4.8.9 perror, разъяснение кодов ошибок
4.8.10 Как запускать SQL-команды из текстового файла

4.9 Файлы журналов MySQL
4.9.1 Журнал ошибок
4.9.2 Общий журнал запросов
4.9.3 Журнал обновлений (update)
4.9.4 Бинарный журнал обновлений
4.9.5 Журнал медленных запросов
4.9.6 Обслуживание файлов журналов
4.10 Репликация в MySQL

4.10.1 Введение
4.10.2 Как реализована репликация: обзор
4.10.3 Как настроить репликацию
4.10.4 Возможности репликации и известные проблемы
4.10.5 Опции репликации в файле `my.cnf'
4.10.6 SQL-команды, относящиеся к репликации
4.10.7 Часто задаваемые вопросы по репликации
4.10.8 Поиск неисправностей репликации

5 Оптимизация в MySQL

5.1 Oбзор оптимизации
5.1.1 Конструктивные ограничения MySQL/компромиссы
5.1.2 Вопросы переносимости
5.1.3 Для чего мы использовали MySQL?
5.1.4 Набор тестов MySQL (The MySQL Benchmark Suite)
5.1.5 Использование собственных тестов

5.2 Оптимизация SELECT и других запросов
5.2.1 Синтаксис оператора EXPLAIN (получение информации о SELECT)
5.2.2 Оценка производительности запроса
5.2.3 Скорость выполнения запросов SELECT
5.2.4 Как MySQL оптимизирует выражения WHERE
5.2.5 Как MySQL оптимизирует DISTINCT
5.2.6 Как MySQL оптимизирует LEFT JOIN и RIGHT JOIN
5.2.7 Как MySQL оптимизирует ORDER BY
5.2.8 Как MySQL оптимизирует LIMIT
5.2.9 Скорость выполнения запросов INSERT
5.2.10 Скорость выполнения запросов UPDATE
5.2.11 Скорость выполнения запросов DELETE
5.2.12 Другие советы по оптимизации

5.3 Вопросы блокировок
5.3.1 Как MySQL блокирует таблицы
5.3.2 Вопросы блокирования таблиц

5.4 Оптимизация структуры базы данных
5.4.1 Конструктивные особенности MySQL
5.4.2 Сделайте объем данных как можно меньше
5.4.3 Использование индексов в MySQL
5.4.4 Индексы столбцов
5.4.5 Многостолбцовые индексы
5.4.6 Почему так много открытых таблиц?
5.4.7 Открытие и закрытие таблиц в MySQL
5.4.8 Недостатки создания множества таблиц в одной базе данных

5.5 Оптимизация сервера MySQL
5.5.1 Настройка параметров системы, компляции и запуска
5.5.2 Настройка параметров сервера
5.5.3 Как компиляция и линкование влияет на скорость MySQL
5.5.4 Как MySQL использует память
5.5.5 Как MySQL использует DNS
5.5.6 Синтаксис команды SET

5.6 Вопросы, относящиеся к диску
5.6.1 Использование символических ссылок
5.6.1.1 Использование символических ссылок для баз данных
5.6.1.2 Использование символических ссылок для таблиц

6 Справочник по языку MySQL
6.1 Структура языка
6.1.1 Литералы: представление строк и чисел
6.1.1.1 Cтроки
6.1.1.2 Числа
6.1.1.3 Шестнадцатеричные величины
6.1.1.4 Значения NULL
6.1.2 Имена баз данных, таблиц, столбцов, индексы псевдонимы
6.1.3 Чувствительность имен к регистру
6.1.4 Переменные пользователя
6.1.5 Синтаксис комментариев
6.1.6 ``Придирчив'' ли MySQL к зарезервированным словам?

6.2 Типы данных столбцов
6.2.1 Числовые типы данных
6.2.2 Типы данных даты и времени
6.2.2.1 Проблема 2000 года и типы данных
6.2.2.2 Типы данных DATETIME, DATE и TIMESTAMP
6.2.2.3 Тип данных TIME
6.2.2.4 Тип данных YEAR
6.2.3 Символьные типы данных
6.2.3.1 Типы данных CHAR и VARCHAR
6.2.3.2 Типы данных BLOB и TEXT
6.2.3.3 Тип перечисления ENUM
6.2.3.4 Тип множества SET
6.2.4 Выбор правильного типа данных в столбце
6.2.5 Использование типов столбцов из других баз данных
6.2.6 Требования к памяти для различных типов столбцов

6.3 Функции, используемые в операторах SELECT и WHERE
6.3.1 Операторы и функции общего назначения
6.3.1.1 Круглые скобки
6.3.1.2 Операторы сравнения
6.3.1.3 Логические операторы
6.3.1.4 Функции потока управления программой
6.3.2 Строковые функции
6.3.2.1 Функции сравнения строк
6.3.2.2 Чувствительность к регистру
6.3.3 Числовые функции
6.3.3.1 Арифметические операции
6.3.3.2 Математические функции
6.3.4 Функции даты и времени
6.3.5 Функции приведения типов
6.3.6 Другие функции
6.3.6.1 Битовые функции
6.3.6.2 Разные функции
6.3.7 Функции, используемые в операторах GROUP BY

6.4 Обработка данных: SELECT, INSERT, UPDATE, DELETE
6.4.1 Синтаксис оператора SELECT
6.4.1.1 Синтаксис оператора JOIN
6.4.1.2 Синтаксис оператора UNION
6.4.2 Синтаксис оператора HANDLER
6.4.3 Синтаксис оператора INSERT
6.4.3.1 Синтаксис оператора INSERT ... SELECT
6.4.4 Синтаксис оператора INSERT DELAYED
6.4.5 Синтаксис оператора UPDATE
6.4.6 Синтаксис оператора DELETE
6.4.7 Синтаксис оператора TRUNCATE
6.4.8 Синтаксис оператора REPLACE
6.4.9 Синтаксис оператора LOAD DATA INFILE
6.4.10 Синтаксис оператора DO

6.5 Определение данных: CREATE, DROP, ALTER
6.5.1 Синтаксис оператора CREATE DATABASE
6.5.2 Синтаксис оператора DROP DATABASE
6.5.3 Синтаксис оператора CREATE TABLE
6.5.3.1 Молчаливые изменения определений столбцов
6.5.4 Синтаксис оператора ALTER TABLE
6.5.5 Синтаксис оператора RENAME TABLE
6.5.6 Синтаксис оператора DROP TABLE
6.5.7 Синтаксис оператора CREATE INDEX
6.5.8 Синтаксис оператора DROP INDEX

6.6 Основные команды пользовательских программ MySQL
6.6.1 Синтаксис команды USE
6.6.2 Синтаксис команды DESCRIBE (Получение информации о столбцах)

6.7 Команды управления транзакциями и блокировками в MySQL
6.7.1 Синтаксис команд BEGIN/COMMIT/ROLLBACK
6.7.2 Синтаксис команд LOCK TABLES/UNLOCK TABLES
6.7.3 Синтаксис команды SET TRANSACTION

6.8 Полнотекстовый поиск в MySQL
6.8.1 Ограничения для полнотекстового поиска
6.8.2 Тонкая настройка полнотекстового поиска в MySQL
6.8.3 Предстоящие доработки по полнотекстовому поиску

6.9 Кэш запросов в MySQL
6.9.1 Как работает кэширование запросов
6.9.2 Конфигурация кэша запросов
6.9.3 Параметры кэша запросов в запросе SELECT
6.9.4 Статус и поддержка кэша запросов

7 Типы таблиц MySQL

7.1 Таблицы MyISAM
7.1.1 Пространство, необходимое для ключей
7.1.2 Форматы таблиц MyISAM
7.1.2.1 Характеристики статической таблицы (с фиксированной длиной)
7.1.2.2 Характеристики динамических таблиц
7.1.2.3 Характеристики сжатых таблиц
7.1.3 Проблемы с таблицами MyISAM.
7.1.3.1 Повреждения таблиц MyISAM
7.1.3.2 Clients is using or hasn't closed the table properly

7.2 Таблицы MERGE
7.2.1 Проблемы при работе с таблицами MERGE

7.3 Таблицы ISAM

7.4 Таблицы HEAP

7.5 Таблицы InnoDB
7.5.1 Обзор таблиц InnoDB
7.5.2 Параметры запуска InnoDB
7.5.3 Создание табличной области InnoDB
7.5.3.1 Если во время создания базы данных что-то происходит не так
7.5.4 Создание таблиц InnoDB
7.5.4.1 Преобразование таблиц MyISAM в формат InnoDB
7.5.4.2 Ограничения внешнего ключа
7.5.5 Добавление и удаление файлов данных и журналов InnoDB
7.5.6 Создание резервных копий и восстановление баз данных InnoDB
7.5.6.1 Контрольные точки
7.5.7 Перенесение базы данных InnoDB на другой компьютер
7.5.8 Транзакционная модель InnoDB
7.5.8.1 Согласованное чтение
7.5.8.2 Чтение с блокировкой
7.5.8.3 Блокировка следующего ключа: устранение проблемы с фантомом
7.5.8.4 Блокировка, осуществляемая различными операторами SQL в InnoDB
7.5.8.5 Обнаружение и откат взаимоблокировки (deadlock)
7.5.8.6 Пример работы согласованного чтения в InnoDB
7.5.9 Рекомендации по увеличению производительности
7.5.9.1 InnoDB Monitor
7.5.10 Реализация многовариантности
7.5.11 Структуры таблиц и индексов
7.5.11.1 Физическая структура индекса
7.5.11.2 Буферизация вставок
7.5.11.3 Адаптивный хешированный индекс
7.5.11.4 Физическая структура записи
7.5.11.5 Как работают автоинкрементные столбцы в InnoDB
7.5.12 Управление файловым пространством и дисковый ввод/вывод
7.5.12.1 Дисковый ввод/вывод
7.5.12.2 Управление файловым пространством
7.5.12.3 Дефрагментация таблицы
7.5.13 Обработка ошибок
7.5.14 Ограничения для таблиц InnoDB
7.5.15 Контактная информация для получения данных по InnoDB

7.6 Таблицы BDB или Berkeley_DB
7.6.1 Обзор таблиц BDB
7.6.2 Установка BDB
7.6.3 Параметры запуска BDB
7.6.4 Характеристики таблиц BDB
7.6.5 Что нам нужно исправить в BDB в ближайшем будущем:
7.6.6 Операционные системы, поддерживаемые BDB
7.6.7 Ограничения таблиц BDB
7.6.8 Ошибки, которые могут возникнуть при использовании таблиц BDB

8 Интерфейсы для MySQL
8.1 Интерфейс PHP API для MySQL
8.1.1 Общие проблемы MySQL и PHP

8.2 Интерфейс Perl API для MySQL
8.2.1 DBI с помощью DBD::mysql
8.2.2 Интерфейс DBI
8.2.3 Больше информации по DBI/DBD

8.3 Поддержка ODBC в MySQL
8.3.1 Как установить MyODBC
8.3.2 Как заполнять различные поля в Администраторе ODBC
8.3.3 Параметры подключения для MyODBC
8.3.4 Как сообщать о проблемах с MyODBC
8.3.5 Программы, работающие с MyODBC
8.3.6 Как получить значение столбца AUTO_INCREMENT в ODBC
8.3.7 Составление отчетов о проблемах с MyODBC

8.4 Интерфейс C для MySQL
8.4.1 Типы данных C API
8.4.2 Обзор функций интерфейса C
8.4.3 Описание функций интерфейса C
8.4.3.1 mysql_affected_rows()
8.4.3.6 mysql_change_user()
8.4.3.11 mysql_character_set_name()
8.4.3.15 mysql_close()
8.4.3.19 mysql_connect()
8.4.3.23 mysql_create_db()
8.4.3.28 mysql_data_seek()
8.4.3.32 mysql_debug()
8.4.3.37 mysql_drop_db()
8.4.3.42 mysql_dump_debug_info()
8.4.3.46 mysql_eof()
8.4.3.51 mysql_errno()
8.4.3.55 mysql_error()
8.4.3.59 mysql_escape_string()
8.4.3.60 mysql_fetch_field()
8.4.3.65 mysql_fetch_field_direct()
8.4.3.70 mysql_fetch_fields()
8.4.3.75 mysql_fetch_lengths()
8.4.3.80 mysql_fetch_row()
8.4.3.85 mysql_field_count()
8.4.3.90 mysql_field_seek()
8.4.3.94 mysql_field_tell()
8.4.3.98 mysql_free_result()
8.4.3.102 mysql_get_client_info()
8.4.3.106 mysql_get_host_info()
8.4.3.110 mysql_get_proto_info()
8.4.3.114 mysql_get_server_info()
8.4.3.118 mysql_info()
8.4.3.122 mysql_init()
8.4.3.126 mysql_insert_id()
8.4.3.130 mysql_kill()
8.4.3.134 mysql_list_dbs()
8.4.3.138 mysql_list_fields()
8.4.3.142 mysql_list_processes()
8.4.3.146 mysql_list_tables()
8.4.3.150 mysql_num_fields()
8.4.3.155 mysql_num_rows()
8.4.3.159 mysql_options()
8.4.3.163 mysql_ping()
8.4.3.167 mysql_query()
8.4.3.171 mysql_real_connect()
8.4.3.176 mysql_real_escape_string()
8.4.3.181 mysql_real_query()
8.4.3.185 mysql_reload()
8.4.3.189 mysql_row_seek()
8.4.3.193 mysql_row_tell()
8.4.3.197 mysql_select_db()
8.4.3.201 mysql_shutdown()
8.4.3.205 mysql_stat()
8.4.3.209 mysql_store_result()
8.4.3.213 mysql_thread_id()
8.4.3.217 mysql_use_result()
8.4.4 Описания функций C, связанных с потоками
8.4.4.1 my_init()
8.4.4.4 mysql_thread_init()
8.4.4.7 mysql_thread_end()
8.4.4.10 mysql_thread_safe()
8.4.5 Описания функций C, доступных во встраиваемом сервере
8.4.5.1 mysql_server_init()
8.4.5.5 mysql_server_end()
8.4.6 Основные вопросы и проблемы в использовании интерфейса C
8.4.6.1 Почему после успешных возвратов функции mysql_query() функция mysql_store_result() иногда возвращает NULL?
8.4.6.2 Какие результаты можно получить из запроса?
8.4.6.3 Как получить уникальный идентификатор для последней внесенной строки?
8.4.6.4 Проблемы линкования с интерфейсом C
8.4.7 Сборка клиентских программ
8.4.8 Как создать клиентскую программу с потоками
8.4.9 libmysqld, встраиваемая библиотека сервера MySQL
8.4.9.1 Обзор библиотеки встраиваемого сервера MySQL
8.4.9.2 Компиляция программ с libmysqld
8.4.9.3 Ограничения при использовании встраиваемого сервера MySQL
8.4.9.4 Использование файлов опций с встраиваемым сервером
8.4.9.5 Что осталось сделать по встраиваемомуому серверу (TODO)
8.4.9.6 Пример простого встраиваемого сервера
8.4.9.7 Лицензирование встраиваемого сервера

8.5 Интерфейсы C++

8.5.1 Интерфейс Borland C++
8.6 Взаимодействие MySQL и Java (JDBC)

8.7 Интерфейсы Python API для MySQL

8.8 Интерфейсы Tcl API для MySQL

8.9 Оболочка Eiffel для MySQL

9 Расширение MySQL

9.1 Внутреннее устройство MySQL
9.1.1 Потоки MySQL
9.1.2 Пакет тестирования MySQL
9.1.2.1 Выполнение тестового пакета MySQL
9.1.2.2 Расширение тестового пакета MySQL
9.1.2.3 Отчет об ошибках в тестовом пакете MySQL

9.2 Добавление новых функций в MySQL
9.2.1 Синтаксис CREATE FUNCTION/DROP FUNCTION
9.2.2 Добавление новой определяемой пользователем функции
9.2.2.1 Последовательность вызова UDF для простых функций
9.2.2.2 Последовательность вызова UDF для агрегатных функций
9.2.2.3 Обработка аргументов
9.2.2.4 Возвращаемые значения и обработка ошибок
9.2.2.5 Компиляция и установка определяемых пользователем функций
9.2.3 Добавление новых родных функции

9.3 Добавление новой процедуры в MySQL
9.3.1 Процедура Analyse
9.3.2 Написание процедуры

A Проблемы и распространенные ошибки

A.1 Как определить, чем вызваны проблемы

A.2 Распространенные ошибки при использовании MySQL
A.2.1 Ошибка Access denied
A.2.2 Ошибка MySQL server has gone away
A.2.3 Ошибка Can't connect to [local] MySQL server
A.2.4 Ошибка Host '...' is blocked
A.2.5 Ошибка Too many connections
A.2.6 Ошибка Some non-transactional changed tables couldn't be rolled back
A.2.7 Ошибка Out of memory
A.2.8 Ошибка Packet too large
A.2.9 Коммуникационные ошибки / Оборванные соединения
A.2.10 Ошибка The table is full
A.2.11 Ошибка Can't create/write to file
A.2.12 Ошибка в клиенте Commands out of sync
A.2.13 Ошибка Ignoring user
A.2.14 Ошибка Table 'xxx' doesn't exist
A.2.15 Ошибка Can't initialize character set xxx
A.2.16 Не найден файл (File not found)

A.3 Вопросы, связанные с инсталляцией
A.3.1 Проблемы при линковании с клиентской библиотекой MySQL
A.3.2 Запуск MySQL от обычного пользователем
A.3.3 Проблемы с правами доступа к файлам

A.4 Вопросы, связанные с администрированием
A.4.1 Что делать, если работа MySQL сопровождается постоянными сбоями
A.4.2 Как переустановить забытый пароль пользователя root
A.4.3 Как MySQL реагирует на переполнение диска
A.4.4 Где MySQL хранит временные файлы
A.4.5 Как защитить или изменить сокет-файл MySQL `/tmp/mysql.sock'
A.4.6 Проблемы с часовыми поясами

A.5 Проблемы, относящиеся к запросам
A.5.1 Чувствительность к регистру при поиске
A.5.2 Проблемы с использованием столбцов типа DATE
A.5.3 Проблемы со значением NULL
A.5.4 Проблемы с alias
A.5.5 Удаление строк из взаимосвязанных таблиц
A.5.6 Решение проблем с отсутствием строк, удовлетворяющих условиям поиска
A.5.7 Проблемы со сравнением чисел с плавающей точкой

A.6 Вопросы, связанные с определением таблиц
A.6.1 Проблемы с ALTER TABLE
A.6.2 Как изменить порядок столбцов в таблице
A.6.3 Проблемы, относящиеся к временным (TEMPORARY) таблицам

B Привнесенные программы
B.1 Интерфейсы (API)
B.2 Клиенты
B.3 Веб-инструменты
B.4 Средства тестирования производительности
B.5 Средства аутентификации
B.6 Конверторы
B.7 Использование MySQL с другими программными продуктами
B.8 Утилиты
B.9 RPM общих инструментальных программ (преимущественно для RedHat 6.1)
B.10 Полезные функции
B.11 Программы для Windows
B.12 Не вошедшие в категории

E Перенос на другие системы

E.1 Отладка сервера MySQL
E.1.1 Компиляция MySQL для отладки
E.1.2 Создание трассировочных файлов
E.1.3 Отладка mysqld при помощи gdb
E.1.4 Использование трассировки стека
E.1.5 Использование журналов для определения причин ошибок в mysqld
E.1.6 Создание контрольного примера при повреждении таблиц

E.2 Отладка клиента MySQL

E.3 Пакет DBUG

E.4 Методы блокировки

E.5 Замечания по потокам RTS

E.6 Различия между разными потоковыми пакетами

F Переменные окружения

G Регулярные выражения в MySQL

H GNU General Public License

H.1 Preamble
H.2 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
H.3 How to Apply These Terms to Your New Programs

I GNU Lesser General Public License

I.1 Preamble
I.2 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
I.3 How to Apply These Terms to Your New Libraries

Команды SQL, функциональное оглавление

Концептуальное оглавление

Советы по Delphi

Сборник коротких, но очень практических советов по работе с Delphi

Очень медленный доступ к таблице
Задание псевдонима программным путем
Создание многомерного массива
Нажатие кнопки
Вызов Delphi DLL из MS Visual C++
Хитрость OnCalcFields
Получение идентификатора диска
Открытие и закрытие привода CD-ROM
Просмотр буфера обмена I
Работа с индексами Clipper'а
Как зарегистрировать OCX?
Программное открытие ComboBox
Директивы компилятора, способные увеличить скорость
Панель Управления
HEX -> Integer
CPU Speed routine
Создание db-файла во время работы приложения
Создание события во время выполнения приложения
Частичный показ DateTime
Таблицы dBASE: Структура .DBF-файла
Различные цвета строк в DBCtrlGrid
Перевод в верхний регистр первого вводимого символа
Использование опции MultiSelect в DBGRID
Проблема хранения TDBImage
Копирование текста DBMemo
Пример KeyDown компонента DBNavigator
Событие OnChange компонента DBRadioGroup
DCOM
Получение данных из Program Manager через DDE
Hard mode без перерыва
Задержка выполнения OnChange (Delphi 2)
Ошибка сохранения текста в Memo
Ошибка в руководстве "Getting Started"
Получение констант с определением ошибки функцией LoadStr
Снимок DESKTOP в form.canvas
Центрирование информационного диалога (MessageDlg)
Drag & Drop c Win95 Explorer I
Пример TDrawGrid Drawcell
Массив Edit-компонентов Procedure
Битное кодирование/декодирование I
Перехват ошибок DBEngine
DLL и ресурсы
Исключения в Delphi
FileListBox с двумя колонками...как
Поиск величины при вводе I
Как мне проверить готовность диска 'a:'? I
Как приложению воспользоваться своими шрифтами?
Заголовок TGA-файла
Серийный номер тома
Процедура форматирования
Header1
Оглавление файлов помощи
Вывод окна CPU (дизассемблер)
Изображение не масштабируется
Автоматический logon к локальной InterBase
Переход с Oracle на Interbase
Контроль джойстика в Delphi
Звуковой сигнал при нажатии <ENTER>
Label1
Изменение шрифта в Listbox
TListView, TTreeView
Перехват клавиши SHIFT во время выбора пункта меню
FFT аглоритм для Delphi
Прокрутка Memo
Общий доступ к памяти, распределенной DLL
Предел сегмента данных в 64K
Сообщения Windows
Перекрытие виртуальных методов
AT-команды модема
Добавление события OnMouseLeave
Excel
MAPI и MS Exchange
Delphi/MS Office 97/OLE/VB для приложений
Получение данных из Delphi-приложения в документе Word
Обзор сети
События OnClick/Onchange компонента Notebook
Создание объектных переменных
Конфигурирование ODBC
OLE тестер
Связь с personal Oracle
Ханойская башня
Извлечение из EXE-файла иконки и рисование ее в TImage
Высокоточный таймер
Сканирование версии структуры базы данных
FTP4W32.DLL и Delphi 2.0
Делегирование события
Сокращенное имя каталога
Каталог вашего приложения
Массив компонентов
Пример использования ActiveControl
Производная TOutline
Перемещение мышью панели на форме во время выполнения программы
Форматированные Memo-поля таблиц Paradox
Пример переменного количества параметров
Как избежать использования неактуальных указателей
Как динамически создавать пункты подменю в PopupMenu
Работа с последовательными портами
Управление монитором
Управляющие коды принтера
ProgressBar в StatusBar
Код определения свойств
Пример защиты типа SHAREWARE
Поиск записи с помощью TQuery
Проблемы со шрифтами у QuickReport
Текущий номер записи
Как удалить файлы в корзину
Регистры - доступ и использование вместо WIN.INI
Передача переменных отчета в ReportSmith
Таблицы строк
Чтение текста RichEdit из базы данных
Создание хранителя экрана
Синхронизация двух компонентов Scrollbox
Как создавать ярлыки
События, происходящие в приложениях Delphi при завершении работы Windows
Низкоуровневые процедуры обработки звука
Конструирование Splitter
Имя SQL-таблицы
Обработчик события OwnerDraw в компоненте StatusBar
Реализация собственного потока
Установка атрибутов
Эквивалент Trim$(),Mid$()
Добавление элементов управления в TTabbedNotebook и TNotebook
Создание компонента TTable без формы
Перемещение на страницу Tabset по имени
Больше цветов
Поиск строки текста в наследниках TCustmoEdit
Информация о TDataLink
Dos Copy через TFileStream
Delphi-приложения без форм
Канва от THandle
Рассуждения о потоках
TMetafile - ошибка при работе с памятью
Недокументированный TParser
Ускорение работы TreeView
Подсказка по работе TRegIniFile
Сохранение и чтение из потока данных объекта
TStringList в TIniFile
Пример TWriter/TReader
Огромные числа
Не работает функция Writeln
Получение переменных окружения DOS
Visual Basic "Beep" в Delphi
Пример DDE & WordPerfect

Самоучитель по Delphi 7 для профессионалов

Несколько лет назад книгу по Delphi 2 или 3 надо было начинать с азов объектно-ориентированного программирования (ООП). Многие только переходили к Delphi из DOS, многие использовали Borland Pascal for Windows и работали с Windows API напрямую. Объекты еще были в диковинку, и полное разъяснение новых принципов было просто обязательно.
Но и сейчас писать об этом вполне актуально. Конечно, выросло поколение программистов, которые "с молоком матери" впитали новые понятия. Но от понимания объектов до их грамотного использования — дистанция огромного размера. Для создания более или менее сложных приложений нужны навыки объектно-ориентированного дизайна, а для приложений в свою очередь — четкое знание возможностей вашей среды программирования. Поэтому в данной главе мы постараемся акцентировать внимание читателя на применение ООП в среде Delphi 7.
По сравнению с традиционными способами программирования ООП обладает рядом преимуществ. Главное из них заключается в том, что эта концепция в наибольшей степени соответствует внутренней логике функционирования операционной системы (ОС) Windows. Программа, состоящая из отдельных объектов, отлично приспособлена к реагированию на события, происходящие в ОС. К другим преимуществам ООП можно отнести большую надежность кода и возможность повторного использования отработанных объектов.

Объектно-ориентированное программирование
Библиотека визуальных компонентов VCL и ее базовые классы
Обработка исключительных ситуаций
Кроссплатформенное программирование для Linux
Элементы управления Win32
Элементы управления Windows XP
Списки и коллекции
Действия (Actions) и связанные с ними компоненты
Файлы и устройства ввода/вывода
Использование графики
Архитектура приложений баз данных
Набор данных
Поля и типы данных
Механизмы управления данными
Компоненты отображения данных
Процессор баз данных Borland Database Engine
Технология dbExpress
Сервер баз данных InterBase и компоненты InterBase Express
Использование ADO средствами Delphi
Технология DataSnap. Механизмы удаленного доступа
Сервер приложения
Клиент многозвенного распределенного приложения
Компоненты Rave Reports и отчеты в приложении Delphi
Визуальная среда создания отчетов
Разработка, просмотр и печать отчетов
Отчеты для приложений баз данных
Стандартные технологии программирования
Динамические библиотеки
Потоки и процессы
Многомерное представление данных
Использование возможностей Shell API

Статьи Королевства Дельфи

Статьи будут рассматривать отдельную тему с практическими примерами и надеюсь на уровне доступном для начинающих. Не знаю как получится, поскольку опыт писательской работы у меня не большой, зато есть приличный опыт работы в дискуссионных группах. Кроме того вся микропроцессорная техника и ее программирование прошли совместно с моей жизнью, начинал я с 8 разрядных машин, затем вплотную от самых первых персональных компьютеров и по текущие дни. Паскаль же от 4 версии до самой последней, а после уже Дельфи, начиная с первой версии.
Это было интересное время, все начинали с нуля, знаний и опыта у всех было мало, все учились друг у друга, в то же время начал развиваться Интернет, что позволило эффективно обмениваться знаниями. Не было обширного парка компонент, только потом развились файловые архивы уровня и Delphi Super Pages. Все это позволило наработать большой опыт и пришло время отдавать долги, что и делаю в виде серии этих статей для начинающих.

Еще раз о звуке
Hooks - аспекты реализации
Взгляд в будущее
XML сериализация объекта Delphi
Лицей
Как заставить работать ActionList в формах, импортируемых из DLL
Создание системы голосовых сообщений из подручных средств

Программирование на Delphi 7

Несколько лет назад сайт по Delphi 2 или 3 надо было начинать с азов объектно-ориентированного программирования (ООП). Многие только переходили к Delphi из DOS, многие использовали Borland Pascal for Windows и работали с Windows API напрямую. Объекты еще были в диковинку, и полное разъяснение новых принципов было просто обязательно.
Но и сейчас писать об этом вполне актуально. Конечно, выросло поколение программистов, которые "с молоком матери" впитали новые понятия. Но от понимания объектов до их грамотного использования — дистанция огромного размера. Для создания более или менее сложных приложений нужны навыки объектно-ориентированного дизайна, а для приложений в свою очередь — четкое знание возможностей вашей среды программирования. Поэтому мы постараемся акцентировать внимание читателя на применение ООП в среде Delphi 7.
По сравнению с традиционными способами программирования ООП обладает рядом преимуществ. Главное из них заключается в том, что эта концепция в наибольшей степени соответствует внутренней логике функционирования операционной системы (ОС) Windows. Программа, состоящая из отдельных объектов, отлично приспособлена к реагированию на события, происходящие в ОС. К другим преимуществам ООП можно отнести большую надежность кода и возможность повторного использования отработанных объектов.

Объектно-ориентированное программирование
Библиотека визуальных компонентов VCL и ее базовые классы
Обработка исключительных ситуаций
Кроссплатформенное программирование для Linux
Элементы управления Win32
Элементы управления Windows XP
Списки и коллекции
Действия (Actions) и связанные с ними компоненты
Файлы и устройства ввода/вывода
Использование графики
Архитектура приложений баз данных
Набор данных
Поля и типы данных
Механизмы управления данными
Компоненты отображения данных
Процессор баз данных Borland Database Engine
Технология dbExpress
Сервер баз данных InterBase и компоненты InterBase Express
Использование ADO средствами Delphi
Технология DataSnap. Механизмы удаленного доступа
Сервер приложения
Клиент многозвенного распределенного приложения

Delphi 3 и создание приложений баз данных

Без баз данных сегодня невозможно представить работу большинства финансовых, промышленных, торговых и прочих организации. Потоки информации, циркулирующие в мире, который нас окружает, огромны. Во времени они имеют тенденцию к увеличению. Не будь баз данных, мы давно захлебнулись бы в информационной лавине. Базы данных позволяют информацию структурировать, хранить и извлекать оптимальным для пользователя образом.
Поскольку использование баз данных является одним из краеугольных камней, на которых построено существование различных организаций, пристальное внимание разработчиков приложений баз данных вызывают инструменты, при помощи которых такие приложения можно было бы создавать. Выдвигаемые к ним требования в общем виде можно сформулировать как: "быстрота, простота, эффективность, надежность".
В основе такой общепризнанной популярности Delphi лежит тот факт, что Delphi, как никакая другая система программирования, удовлетворяет изложенным выше требованиям. Действительно, приложения с помощью Delphi разрабатываются быстро, причем взаимодействие разработчика с интерактивной средой Delphi не вызывает внутреннего отторжения, а наоборот, оставляет ощущение комфорта. Delphi-приложения эффективны, если разработчик соблюдает определенные правила (и часто - если не соблюдает). Эти приложения надежны и при эксплуатации обладают предсказуемым поведением.

Понятие баз данных. Степень детализации информации в базе данных
Формируемые запросы
Предложение WHERE : задание сложных условий поиска
Принудительная запись на диск

Глубины Indy

Indy отличается от других сокетных компонент, с которыми вы возможно уже знакомы. Если вы никогда не работали с другими сокетными компонентами, возможно, вы найдете, что Indy очень прост, так как Indy работает так как вы ожидали. Если вы уже работали с другими сокетными компонентами, то просто забудьте все, что вы знали. Это будет вам только мешать и вы будете делать ложные предпосылки.
Почти все другие компоненты работают в неблокирующем режиме, асинхронно. Они требуют от вас реагировать на события, создавать машину состояний и часто исполнять циклы ожидания. Например, с другими компонентами, когда вы делаете соединения, то вы должны ожидать событие соединения или крутить цикл ожидания, пока свойство, ухаживающие факт соединение не будет установлено. С Indy, вы просто вызываете метод Connect и просто ждете возврата из него. Если соединение будет успешное, то будет возврат из метода по окончанию соединения. Если же соединение не произойдет, то будет возбуждено исключение.
Работа с Indy аналогична работе с файлами. Indy позволяет поместить весь код в одно место, вместо создания различных разработчиков событий. В дополнение, многие находят Indy более простым в использовании. Indy также разработан на работу с потоками. Если вы имеет проблемы с реализацией чего-либо в Indy, то вернитесь назад и реализуйте это как для файлов.

Методология Indy
Прозрачные прокси
Небезопасный код
Обзор
Статьи

Почта mysql4@rambler.ru
Содержание


Книжный интернет магазин Forekc.ru -низкие цены, огромный выбор



купить cs go | Смотри тут проститутки индивидуалки | Проститутки СПБ www.piter-girls.com | Сайт интим досуга в Ростове http://rostov-lux.info/http://www.searchtheporn.com доставка пиццы бровары