MySQL – клиент-серверная система управления реляционными базами данных, которая содержит многопоточный SQL-сервер, обеспечивающий поддержку различных вычислительных машин баз данных, а также несколько различных клиентских программ и библиотек, средства администрирования и широкий спектр программных интерфейсов. Разработкой и сопровождением системы занимается компания MySQL AB (Швеция, David Axmark).
Характеристики СУБД
- SQL СУБД (реляционная), быстрая, но не оптимизированная под поиска и добавления, если предстоят частые изменения.
- Стандарты : entry level SQL92, ODBC levels 0-2.
- Лицензия - GPL / LGPL . Для хостинга лицензия не нужна.
- Написана на C и C ++. Базовая платформа: Solaris 2.7-2.8, SuSE Linux 7.1 (ядро 2.4, ReiserFS ), но работает также в других ОС.
- Многопотоковая.
- API для C , C ++, Java , Eiffel , Perl , PHP , Python , и др.
- Парольная защита.
-
- Таблицы в виде B - tree со сжатием индекса. До 32 индексов на таблицу. До 16 колонок на индекс.
- По умолчанию MySQL -таблицы имеют максимальный размер около 4 Гб.
- Записи переменной длины. Есть примеры использования MySQL с 60000 таблиц и 5 миллиардами строк.
- Поддержка koi 8- r и cp 1251 (сортировка, сравнение и т.д.).
- Клиенты могут соединяться по TCP / IP (можно использовать только, если никто не подслушивает) или Unix socket
Имеются расширения к ANSI SQL 92.
Отсутствующие возможности ANSI SQL 92:
- Вложенные подзапросы
- хранимые процедуры и тригеры (тригеры не планируются совсем)
- Внешние ключи
- Представления
Основные модули СУБД
- mysql – клиентская часть СУБД. Она обеспечивает интерфейс командной строки с СУБД MySQL, и возможность неинтерактивной пакетной обработки.
- m ysqlaccess – используется, чтобы внести в список привилегии пользователя для конкретной базы данных. Это дает информацию, которая может быть полезна при диагностировании проблем с доступом пользователей к данной базе данных.
- mysqladmin – выполняет административные функции. Данная команда может использоваться для создания баз данных,изменения пароля пользователя (администратор может изменить пароль любому пользователю, а рядовой пользователь – только свой собственный), перезагрузки и остановки сервера, просмотра списка процессов, запущенных на сервере.
- mysqld – программа является ядром СУБД MySQL . Она запускается как демон в системе и принимает подключения из клиентских программ, выполняя запросы и возвращая результаты. Она многопоточная, то есть обработает больше чем один запрос одновременно.
- mysqldump – программа используется для создания дампа содержания базы данных MySQL. Она пишет инструкции SQL в стандартный вывод. Эти инструкции SQL могут быть переназначены в файл. Можно резервировать базу данных MySQL, используя mysqldump, но при этом Вы должны убедиться, что в этот момент с базой данных не выполняется никаких других действий.
- mysqlshow – программа может использоваться, чтобы показать, с какими базами данных MySQL работает, какие таблицы данная база данных содержит, и какие поля есть в таблице в данной базе данных.
Типы данных
BIGINT [(length)] [UNSIGNED] [ZEROFILL] |
8 байт целое (если компилятор поддерживает такой тип) |
BLOB |
Двоичный объект (максимальная длина 65535 байт) |
CHAR(NUM) |
Строка фиксированной длины (1 <= NUM <= 255) |
DATE |
Сохраняет информацию о дате. Использует формат "YYYY-MM-DD". Может модифицироваться как строка или число.
Диапазон для этого типа данных от 0000-00-00 до 9999-12-31. Так что "проблема 2000" здесь не стоит. В отличие от TIMESTAMP, DATE принимает годы и в виде двух цифр от 0000 до 0099. Тип DATE имеет длину 4 байта. |
DATETIME |
Объединение типов DATE и TIME. Тип DATETIME идентичен типу TIMESTAMP со следующими исключениями:
Когда запись вставляется в таблицу, содержащую поля типа DATETIME, поле DATETIME не изменяется.
Диапазон для поля типа DATETIME: '0000-01-01 00:00:00' - '9999-12-31 23:59:59 ' при использовании в контексте строки, и '00000000000000' - '99991231235959' при использовании в контексте числа.
Тип DATETIME имеет длину 8 байт. |
DECIMAL (length,dec) |
Десятичное число с плавающей запятой. |
DOUBLE [(length,dec)] |
Число (4 или 8 байт) двойной точности с максимальной длиной и фиксированном числом десятичных чисел. |
FLOAT [(precision)] |
Номер с плавающей запятой. FLOAT(4) и FLOAT одиночная точность. FLOAT(8) обеспечивает двойную точность. |
FLOAT [(length,decimals)] |
Число одиночной точности с максимальной длиной и фиксированном числом десятичных чисел (4 байта). |
INT [(length)] [UNSIGNED] [ZEROFILL] |
Целое (4 байта). |
INTEGER [(length)] [UNSIGNED] [ZEROFILL] |
Целое число 4 байта |
LONGBLOB |
Двоичный объект с максимальной длиной 2**32 байт. |
MEDIUMBLOB |
Двоичный объект с максимальной длиной 16777216 байт. |
MEDIUMINT [(length)] [UNSIGNED] [ZEROFILL] |
Целое (3 байта). |
REAL [(length,dec)] |
Идентично DOUBLE (8 байт). |
SMALLINT [(length)] [UNSIGNED] [ZEROFILL] |
Целое (2 байта). |
TINYBLOB |
Двоичный объект с максимальной длиной 255 байт. |
TINYINT [(length)] [UNSIGNED] [ZEROFILL] |
Целое число (1 байт). |
VARCHAR(NUM) |
Строка переменной длины (1 <= NUM <= 255) |
TIME |
Хранит информацию о времени. Использует формат "HH:MM:SS". Может использоваться как строка или число.
Данные типа TIME имеют длину 3 байта. |
TIMESTAMP(NUM) |
Автоматически изменяется при вставке/обновлении. Имеет формат YYMMDDHHMMSS или YYYYMMDDHHMMSS. Когда используете mysql с ODBC и Access Вы должны использовать значение 14 для NUM , поскольку это заставляет MySQL всегда использовать в годах четыре цифры. Значение 12 заставит MySQL использовать в году две цифры. Значение по умолчанию - 14.
В случае таблиц с несколькими полями TIMESTAMP только первое такое поле будет модифицироваться автоматически. |
Физическая организация данных
Каждая база данных находится в своём каталоге, имя которого соответствует имени базы. Каждая таблица находится в отдельном файле <имя таблицы>. MYD , индекс в файле <имя таблицы>. MYI , файл определения таблицы <имя таблицы>. frm
Основные команды MySQL
СУБД MySQL оперирует подмножеством языка SQL , соответствующим спецификации ANSI SQL 92. |