1.11.1.2 Различия в клиент-серверных коммуникационных протоколах mSQL и MySQL | Оглавление | 1.11.2 Сравнение MySQL c PostgreSQL |
Типы столбцов
MySQL
CREATE TABLE
):
ENUM
- тип для одного набора строк.
SET
- тип для нескольких наборов строк.
BIGINT
- тип для 64-битовых целых чисел.
UNSIGNED
- опция для целочисленных столбцов и столбцов чисел с
плавающей запятой.
ZEROFILL
- опция для целочисленных столбцов.
AUTO_INCREMENT
- опция для целочисленных столбцов, являющихся
первичными ключами. See section 8.4.3.126 mysql_insert_id()
.
DEFAULT
- значение для всех столбцов.
mSQL2
Тип в mSQL | Соответствующий тип в MySQL |
CHAR(len) | CHAR(len)
|
TEXT(len) | TEXT(len) . len - максимальная длина. Работает LIKE .
|
INT | INT . Со множеством опций!
|
REAL | REAL . Или FLOAT . Имеются как 4-битовые, так и 8-битовые варианты.
|
UINT | INT UNSIGNED
|
DATE | DATE . Использует формат ANSI SQL, а не собственный формат mSQL.
|
TIME | TIME
|
MONEY | DECIMAL(12,2) . Значение с фиксированной точкой и двумя знаками после нее.
|
Создание индексов
MySQL
CREATE TABLE
.
mSQL
CREATE
INDEX
.
Вставка уникального идентификатора в таблицу
MySQL
AUTO_INCREMENT
. See section 8.4.3.126 mysql_insert_id()
.
mSQL
SEQUENCE
и выбрать столбец _seq
.
Получение уникального идентификатора для строки
MySQL
PRIMARY
или UNIQUE
состоит только
из одного целочисленного столбца, к нему можно обращаться и как к _rowid
.
mSQL
_rowid
. Нельзя забывать о том, что _rowid
может, в зависимости от множества факторов, со временем измениться.
Получение времени последнего изменения столбца
MySQL
TIMESTAMP
. Этому столбцу автоматически
присваиваются текущая дата и время при вызове операторов INSERT
или
UPDATE
, если ему не присвоить определенного значения или присвоить
значение NULL
.
mSQL
_timestamp
.
Сравнение значений NULL
MySQL
NULL
всегда возвращает результат NULL
.
mSQL
NULL = NULL
имеет значение TRUE. Поэтому при переводе
старого кода из mSQL в MySQL =NULL
необходимо заменить на IS NULL
,
а <>NULL
- на IS NOT NULL
.
Сравнение строк
MySQL
BINARY
, тогда сравнение будет проводиться в
соответствии с ASCII-порядком, установленным на сервере MySQL.
mSQL
Поиск без учета регистра символов
MySQL
LIKE
может быть как чувствительным, так и нечувствительным к регистру
оператором, в зависимости от столбцов, к которым он применяется. По
возможности MySQL использует индексы, если аргумент LIKE
не начинается с
шаблонного символа.
mSQL
CLIKE
.
Обработка концевых пробелов
MySQL
CHAR
и VARCHAR
удаляются. Если такое
поведение нежелательно, используйте столбцы TEXT
.
mSQL
Операторы WHERE
MySQL
AND
имеет приоритет перед
OR
). Заставить MySQL вести себя так, как mSQL, можно при помощи
скобок (как можно видеть в соответствующем примере).
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
mSQL
1.11.1.2 Различия в клиент-серверных коммуникационных протоколах mSQL и MySQL | Оглавление | 1.11.2 Сравнение MySQL c PostgreSQL |