Перенос прикладных программ mSQL в MySQL относительно прост.
Сначала выполните скрипт msql2mysql (поставляется вместе с MySQL) над вашим источником. Он оттранслирует имена функций mSQL в имена функций MySQL. Но он не будет корректировать типы параметров или изменять число параметров в функциях MySQL, которые нуждаются в дополнительных параметрах.
Замечания:
MySQL поставляется с портированными версиями тестовых программ mSQL insert_test.c и select_test.c. Хорошая идея сравнить их с их mSQL эквивалентами. Это должно дать Вам хорошее начало для понимания, что Вы будете должны сделать для портирования mSQL программы в MySQL. Это также даст Вам некоторые мысли о том, что Вы должны делать, чтобы написать свою 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: Внешние программы.
В заключение хочется попросить Вас, если Вам понравилась эта страничка или пригодилась изложенная здесь информация, послать благодарность автору. Это поможет мне вести статистику того, скольким людям пригодилось хоть что-то из моих трудов.