O MySQL fornece algumas extensões que você provavelmente não
        irá encontrar em alguns bancos de dados SQL. Fique avisado que
        se você usá-las, seu código pode não ser mais portável para
        outros servidores SQL. Em alguns casos, você pode escrever
        código que inclui extensões MySQL, mas continua portável,
        usando comentários da forma /*! ...*/. Neste
        caso, o MySQL irá analisar e executar o código com o
        comentário como irá fazer com qualquer outra instrução
        MySQL, mas outros servidores SQL irão ignorar as extensões.
        Por exemplo:
      
SELECT /*! STRAIGHT_JOIN */ nome_campo FROM table1,table2 WHERE ...
        Se você adicionar um número de versão depois do
        '!', a sintaxe só será executada se a
        versão do MySQL é igual ou maior que o número de versão
        usado:
      
CREATE /*!32302 TEMPORARY */ TABLE t (a INT);
        O exemplo acima significa que se você tiver uma versão do
        MySQL 3.23.02 ou mais nova, então o MySQL irá usar a
        palavra-chave TEMPORARY
      
Extensões MySQL são listadas abaixo:
            Os tipos de campo MEDIUMINT,
            SET, ENUM e os
            diferentes tipos BLOB e
            TEXT.
          
            Os atributos de campos AUTO_INCREMENT,
            BINARY, NULL,
            UNSIGNED e ZEROFILL.
          
            Todas comparações de strings por padrão são caso
            insensitivo, com classificação ordenada determinada pelo
            conjunto de caracteres corrente (ISO-8859-1 Latin1 por
            padrão). Se você não gosta disso você deverá declarar
            suas colunas com o atributo BINARY ou
            usar o operador BINARY, que fazendo com
            que as comparações sejam feitas de acordo com a ordem
            ASCII usada na máquina servidora do MySQL.
          
O MySQL mapeia cada banco de dados em um diretório sob o diretório de dados do MySQL, e tabelas internamente num banco de dados para arquivos no diretório do banco de dados.
Isto tem algumas implicações:
Nomes de bancos de dados e tabelas são caso sensitivoo no MySQL em sistemas operacionais que possuem o sistema de arquivos caso sensitivoo (como na maioria dos sistemas Unix). See Secção 6.1.3, “Caso Sensitivo nos Nomes”.
Nomes de Bancos de dados, tabelas, índices, campos ou apelidos pode começar com um dígito (porém não podem consistir somente de digitos).
                Você pode usar comandos padrão do sistemas para fazer
                backups, renomear, apagar e copiar tabelas. Por exemplo,
                para renomear uma tabela, renomeie os arquivos
                .MYD, .MYI e
                .frm. para o nome da tabela
                correspondente.
              
            Em algumas instruções SQL, você pode acessar tabelas de
            diferentes bancos de dados com a sintaxe
            nome_bd.nome_tbl. Alguns servidores SQL
            fornecem a mesma funcionalidade mas chamam isto de
            User space. O MySQL não suporta
            tablespaces como em: create table
            ralph.my_table...IN minha_tablespace.
          
            LIKE é permitido em campos numéricos.
          
            O uso de INTO OUTFILE e
            STRAIGHT_JOIN em uma instrução
            SELECT. See Secção 6.4.1, “Sintaxe SELECT”.
          
            A opção SQL_SMALL_RESULT em uma
            instrução SELECT.
          
            EXPLAIN SELECT para obter uma descrição
            de como as tabelas são ligadas.
          
            A utilização de nomes de índices, índices em um prefixo
            de um campo, e uso de INDEX ou
            KEY em uma instrução CREATE
            TABLE. See Secção 6.5.3, “Sintaxe CREATE TABLE”.
          
            O uso de TEMPORARY ou IF NOT
            EXISTS com CREATE TABLE.
          
            O uso de COUNT(DISTINCT lista) onde
            'lista' é maior que um elemento.
          
            O uso de CHANGE nome_campo, DROP
            nome_campo, ou DROP INDEX,
            IGNORE ou RENAME em
            uma instrução ALTER TABLE. See
            Secção 6.5.4, “Sintaxe ALTER TABLE”.
          
            O uso de RENAME TABLE. See
            Secção 6.5.5, “Sintaxe RENAME TABLE”.
          
            Utilização de múltiplas cláusulas
            ADD, ALTER,
            DROP, ou CHANGE em uma
            instrução ALTER TABLE.
          
            O uso de DROP TABLE com as palavras-chave
            IF EXISTS.
          
            Você pode remover múltiplas tabelas com uma instrução
            única DROP TABLE.
          
            As cláusulas ORDER BY e
            LIMIT das instruções
            UPDATE e DELETE.
          
            Sintaxe INSERT INTO ... SET col_name =
            ....
          
            A cláusula DELAYED das instruções
            INSERT e REPLACE.
          
            A cláusula LOW_PRIORITY das instruções
            INSERT, REPLACE,
            DELETE e UPDATE.
          
            O uso de LOAD DATA INFILE. Em alguns
            casos essa sintaxe é compatível com o Oracle LOAD
            DATA INFILE. See Secção 6.4.8, “Sintaxe LOAD DATA INFILE”.
          
            As intruções ANALYZE TABLE,
            CHECK TABLE, OPTIMIZE
            TABLE, e REPAIR TABLE.
          
            A instrução SHOW. See
            Secção 4.6.8, “Sintaxe de SHOW”.
          
            Strings podem ser fechadas pelo
            ‘"’ ou
            ‘'’, não apenas pelo
            ‘'’.
          
            O uso do meta-caractere de escape
            ‘\’.
          
            A instrução SET OPTION. See
            Secção 5.5.6, “Sintaxe de SET”.
          
            Você não precisa nomear todos os campos selecionados na
            parte GROUP BY. Isto fornece melhor
            performance para algumas consultas específicas, mas muito
            comuns. See
            Secção 6.3.7, “Funções e Modificadores para Usar com Cláusulas GROUP
        BY”.
          
            Pode ser especificado ASC e
            DESC com o GROUP BY.
          
Para tornar mais fácil para usuários que venham de outros ambientes SQL, o MySQL suporta apelidos (aliases) para várias funções. Por exemplo, todas funções de string suportam as sintaxes ANSI SQL e ODBC.
            O MySQL entende os operadores || e
            && como ou(OR) e e(AND) logicos,
            como na linguagem de programação C. No MySQL,
            || e OR são
            sinônimos, assim como && e
            AND. Devido a esta ótima sintaxe, o
            MySQL não suporta o operador ANSI SQL para concatenação
            de strings ||; em vez disso, use o
            CONCAT(). Como
            CONCAT() aceita vários argumentos, é
            fácil converter o uso do operador ||
            para MySQL.
          
            CREATE DATABASE or DROP
            DATABASE. See Secção 6.5.1, “Sintaxe CREATE DATABASE”.
          
            O operador % é um sinônimo para
            MOD(). Isto é, N % M
            é equivalente a MOD(N,M).
            % é suportado para programadores C e
            para compatibilidade com o PostgreSQL.
          
            Os operadores =,
            <>, <=
            ,<,
            >=,>,
            <<, >>,
            <=>, AND,
            OR ou LIKE podem ser
            utilizados em comparações de campos a esquerda do
            FROM nas instruções
            SELECT. Por exemplo:
          
mysql> SELECT col1=1 AND col2=2 FROM nome_tabela;
            A função LAST_INSERT_ID(). See
            Secção 12.1.3.32, “mysql_insert_id()”.
          
            Os operadores extendidos REGEXP e
            NOT REGEXP utilizados em expressões
            regulares.
          
            CONCAT() ou CHAR() com
            um ou mais de dois argumentos. (No MySQL, estas funções
            receber qualquer número de argumentos.)
          
            As funções BIT_COUNT(),
            CASE, ELT(),
            FROM_DAYS(), FORMAT(),
            IF(), PASSWORD(),
            ENCRYPT(), MD5(),
            ENCODE(), DECODE(),
            PERIOD_ADD(),
            PERIOD_DIFF(),
            TO_DAYS() ou
            WEEKDAY().
          
            Uso de TRIM() para cortar substrings. o
            SQL-99 só suporta remoção de caracteres únicos.
          
            As funções do GROUP BY:
            STD(), BIT_OR(),
            BIT_AND() e BIT_XOR()
            e GROUP_CONCAT(). See
            Secção 6.3.7, “Funções e Modificadores para Usar com Cláusulas GROUP
        BY”.
          
            Uso de REPLACE no lugar de
            DELETE + INSERT. See
            Secção 6.4.7, “Sintaxe REPLACE”.
          
            As instruções FLUSH,
            RESET e DO.
          
            A possibilidade de configurar variáveis em uma instrução
            com :=:
SELECT @a:=SUM(total),@b=COUNT(*),@a/@b AS media FROM tabela_teste; SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
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.

