Se você inicializa o mysqld
com a opção
--ansi
ou --sql-mode=ANSI
, o
seguinte comportamento é alterado no MySQL:
||
é um oprador de concatenação de
strings em vez de um sinônimo para OR
.
‘"
’ é tratado como um
caracter identificados (com o caracter de aspasr
‘`
’ do MySQL Server)e não um
caracter de string. Você ainda pode usar
‘`
’ para citar
identificadores no modo ANSI. Uma implicação disto é que
você não pode usar aspas duplas para citar um string
literal, porque ela será intepretada como um identificador.
Você pode ter qualquer número de espaços entre um nome de
função e o ‘(
’. Isto faz
com que todos nomes de funções sejam tratadas como
palavras reservadas. Como resultado, se você quiser acessar
qualquer banco de dados, tabelas ou coluna que é uma
palavra reservada, você deve colocá-lo entre aspas. Por
exemplo, por haver a função USER()
, o
nome da tabela user
no banco de dados
mysql
e a coluna User
nesta tabela se torna reservada, assim você deve colocá-la
entre aspas:
SELECT "User" FROM mysql."user";
REAL
é um sinônimo para
FLOAT
no lugar de um sinônimo de
DOUBLE
.
O nível de isolamento padrão de um transação é
SERIALIZABLE
. See
Secção 6.7.6, “Sintaxe SET TRANSACTION
”.
Você pode usar um campo/expressão em GROUP
BY
que não está na lista de campos.
Executando o servidor em modo ANSI é o mesmo que iniciá-lo com estas opções:
--sql-mode=REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES, IGNORE_SPACE,ONLY_FULL_GROUP_BY --transaction-isolation=serializable
No MySQL 4.1, você pode conseguir o mesmo efeito com estas duas instruções:
SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET GLOBAL sql_mode= "REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY";
No MySQL 4.1.1 a última opção sql_mode
também pode ser dada com:
SET GLOBAL sql_mode="ansi";
No caso acima o sql_mode
estará configurado
com todas as opções que são relevantes para o modo ANSI.
Você pode verificar o resultado fazendo:
mysql>SET GLOBAL sql_mode="ansi";
mysql>SELECT @@GLOBAL.sql_mode;
-> "REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI"
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.