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


1.11.1.3 Различия в синтаксисе SQL между mSQL 2.0 и MySQL - часть 2


MySQL

Нужно вставить в таблицу столбец TIMESTAMP. Этому столбцу автоматически присваиваются текущая дата и время при вызове операторов INSERT или UPDATE, если ему не присвоить определенного значения или присвоить значение NULL. mSQL

Следует использовать столбец _timestamp.

Сравнение значений NULL

MySQL

MySQL соответствует стандарту ANSI SQL, поэтому сравнение с NULL

всегда возвращает результат NULL. mSQL

В mSQL выражение NULL = NULL имеет значение TRUE. Поэтому при переводе старого кода из mSQL в MySQL =NULL необходимо заменить на IS NULL, а <>NULL - на IS NOT NULL.

Сравнение строк

MySQL

Обычно сравнение строк проводится без учета регистра символов, с порядком сортировки, который определяется текущим набором символов (ISO-8859-1 Latin1 по умолчанию). Если вам это не подходит, необходимо установить при объявлении столбцов атрибут BINARY, тогда сравнение будет проводиться в соответствии с ASCII-порядком, установленным на сервере MySQL. mSQL

Все сравнения строк проводятся с учетом регистра символов в ASCII-порядке сортировки.

Поиск без учета регистра символов

MySQL

LIKE может быть как чувствительным, так и нечувствительным к регистру оператором, в зависимости от столбцов, к которым он применяется. По возможности MySQL использует индексы, если аргумент LIKE не начинается с шаблонного символа. mSQL

Следует использовать CLIKE.

Обработка концевых пробелов

MySQL

Все пробелы в конце столбцов CHAR и VARCHAR удаляются. Если такое поведение нежелательно, используйте столбцы TEXT. mSQL

Концевые пробелы сохраняются.

Операторы WHERE

MySQL

MySQL правильно определяет приоритеты действий (AND имеет приоритет перед OR). Заставить MySQL вести себя так, как mSQL, можно при помощи скобок (как можно видеть в соответствующем примере). mSQL

Все действия производятся слева направо. А это значит, что некоторые логические вычисления, в которых наличествует более трех аргументов, не могут быть выполнены вообще. Кроме того, это означает, что при переносе в MySQL некоторые запросы необходимо менять. Это довольно просто сделать при помощи скобок. Возьмем, к примеру, следующий запрос mSQL:

mysql> SELECT * FROM table WHERE a=1 AND b=2 OR a=3 AND b=4;

Чтобы MySQL вычислил результат этого запроса так же, как это сделал бы mSQL, нужно расставить скобки:

mysql> SELECT * FROM table WHERE (a=1 AND (b=2 OR (a=3 AND (b=4))));

Ограничения доступа

MySQL

Для хранения привилегий для каждого пользователя, удаленного компьютера и базы имеются соответствующие таблицы. See section 4.2.6 Как работает система привилегий. mSQL

Имеется файл `mSQL.acl', в котором можно определить привилегии чтения/записи для пользователей.




- Начало -  - Назад -  - Вперед -