Первая страница > Библиотека > Базы данных
Перенос прикладных программ mSQL в MySQL относительно прост.
Сначала выполните скрипт msql2mysql (поставляется
вместе с MySQL) над вашим источником. Он оттранслирует имена функций
mSQL в имена функций MySQL. Но он не будет корректировать типы
параметров или изменять число параметров в функциях MySQL, которые
нуждаются в дополнительных параметрах.
Замечания:
- MySQL использует структуру данных MYSQL как тип для соединения
с базой данных (mSQL использует int).
- mysql_connect получает указатель на структуру MYSQL как
параметр. Вы можете определять его глобально или использовать
malloc, чтобы его получить.
- mysql_connect получает 2 дополнительных параметра (логин и
пароль пользователя). По умолчанию, они установлены в NULL.
- mysql_error получает параметр типа MYSQL.
MySQL поставляется с портированными версиями
тестовых программ mSQL insert_test.c и select_test.c. Хорошая идея
сравнить их с их mSQL эквивалентами. Это должно дать Вам хорошее
начало для понимания, что Вы будете должны сделать для портирования
mSQL программы в MySQL. Это также даст Вам некоторые мысли о том,
что Вы должны делать, чтобы написать свою MySQL программу.
Чем отличается реализация протокола клиент/сервер в MySQL от
своего аналога в mSQL?
Имеются значительные различия. Среди них:
- Буфер сообщений может содержать много строк результатов.
- На стороне сервера размер буфера сообщений динамически
подстраивается по мере необходимости для больших запросов
пользователя.
- Все пакеты пронумерованы, для синхронизации пакетов.
- Все столбцы представлены в ASCII, длина столбцов и длины строк
представлены с помощью двоичного кодирования (1, 2 или 3 байта).
- MySQL может читать результаты без буферизации.
- Если одна запись/чтение занимает свыше 30 секунд, сервер
закрывает соединение.
- Если соединение неактивно в течение 8 часов, сервер закрывает
соединение.
Отличия между msql 2.0b7 и MySQL
- CREATE TABLE:
MySQL: имеет опции для поля: UNSIGNED, ZEROFILL, имеет
значение по умолчанию для не пустых полей.
mSQL: опций не имеет.
- Создание индексов:
MySQL:Все индексы должны быть заданы в CREATE TABLE.
mSQL:Индексы должны быть созданы отдельным оператором
CREATE INDEX. (msql использует новый файл ключа для каждого
индекса?) Индексы могут быть удалены оператором DROP INDEX
- Для получения уникального идентификатора при вставке:
MySQL: Используйте 'auto_increment' как определение типа
столбца. Используемый индекс может быть получен после обновления
функцией API mysql_insert_id().
mSQL: Создает структуру SEQUENCE для таблицы и
использует функцию __seq для получения уникального индекса.
- Групповые функции:
MySQL: count(), avg(), min(), max() и sum(). min() и
max() могут принимать строковые аргументы. count(*) оптимизирована
для возвращения значения в случае одного столбца.
mSQL: Нет.
- Независимый от регистра поиск:
MySQL: LIKE обязательно не зависит от регистра. Если
возможно, MySQL использует индексы при условии, что подобный
параметр не начинается с подстановочных знаков.
mSQL: Использует CLIKE.
- Поиск с регулярными выражениями.
MySQL: Использует REGEXP or RLIKE
mSQL: Использует RLIKE.
- Какие различия в операторе WHERE:
MySQL имеет скобки, Скоро он будет иметь полную
функциональную поддержку оператора WHERE (это планируется для
версии 3.21.X).
- Имена столбцов:
MySQL: Если имя столбца уникально, Вы не должны
использовать полное имя.
mSQL: При использовании более чем одной таблицы в
SELECT, Вы должны использовать полное имя таблицы.
- Псевдонимы:
MySQL: Псевдонимы для таблиц и столбцов.
mSQL: Псевдонимы для таблиц.
- Insert/update с вычислениями:
MySQL: Полная поддержка вычислений. В insert можно
использовать значения предшествующих полей.
mSQL: Только константы в insert и update.
- Какие формулы могут использоваться в инструкции select:
MySQL: См. руководство.
mSQL: Никакие.
- HAVING:
MySQL: Поддерживается, но может использовать вычисление
только на выбранных полях. Для select на расчетном значении, нужно
использовать псевдоним столбца.
ПРИМЕР: SELECT COUNT(*) AS id_count, id FROM groups GROUP BY id
HAVING id_count > 10
mSQL: Не поддерживается вовсе.
- Импорт и экспорт данных:
MySQL: MySQL имеет соответствующие функциональные
возможности, включая сервис для импорта данных посредством
оператора LOAD DATA INFILE, что весьма ускоряет загрузку данных.
mSQL: Внешние программы.
|