CREATE [TEMPORARY] TABLE [IF NOT EXISTS] nome_tabela [(definição_create,...)]
[table_options] [select_statement]
ou
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] nome_tabela [(]LIKE nome_antigo_tabela[)];
definição_create:
  nome_coluna tipo [NOT NULL | NULL] [DEFAULT valor_padrão] [AUTO_INCREMENT]
            [[PRIMARY] KEY] [COMMENT 'string'] [definição_referência]
  | [CONSTRAINT [symbol]] PRIMARY KEY (index_col_name,...)
  | KEY [nome_indice] (index_nome_coluna,...)
  | INDEX [nome_indice] (index_nome_coluna,...)
  | [CONSTRAINT [symbol]] UNIQUE [INDEX] [index_name] (index_col_name,...)
  | FULLTEXT [INDEX] [nome_indice] (index_nome_coluna,...)
  | [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...)
            [definição_referência]
  |    CHECK (expr)
tipo:
        TINYINT[(tamanho)] [UNSIGNED] [ZEROFILL]
  |    SMALLINT[(tamanho)] [UNSIGNED] [ZEROFILL]
  |    MEDIUMINT[(tamanho)] [UNSIGNED] [ZEROFILL]
  |    INT[(tamanho)] [UNSIGNED] [ZEROFILL]
  |    INTEGER[(tamanho)] [UNSIGNED] [ZEROFILL]
  |    BIGINT[(tamanho)] [UNSIGNED] [ZEROFILL]
  |    REAL[(tamanho,decimais)] [UNSIGNED] [ZEROFILL]
  |    DOUBLE[(tamanho,decimais)] [UNSIGNED] [ZEROFILL]
  |    FLOAT[(tamanho,decimais)] [UNSIGNED] [ZEROFILL]
  |    DECIMAL(tamanho,decimais) [UNSIGNED] [ZEROFILL]
  |    NUMERIC(tamanho,decimais) [UNSIGNED] [ZEROFILL]
  |    CHAR(tamanho) [BINARY | ASCII | UNICODE]
  |    VARCHAR(tamanho) [BINARY]
  |    DATE
  |    TIME
  |    TIMESTAMP
  |    DATETIME
  |    TINYBLOB
  |    BLOB
  |    MEDIUMBLOB
  |    LONGBLOB
  |    TINYTEXT
  |    TEXT
  |    MEDIUMTEXT
  |    LONGTEXT
  |    ENUM(value1,value2,value3,...)
  |    SET(value1,value2,value3,...)
index_nome_coluna:
        nome_coluna [(tamanho)] [ASC | DESC]
definição_referência:
        REFERENCES nome_tabela [(index_nome_coluna,...)]
                   [MATCH FULL | MATCH PARTIAL]
                   [ON DELETE opção_referência]
                   [ON UPDATE opção_referência]
opção_referência:
        RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
opções_tabela: table_option [table_option] ...
opções_tabela:
  TYPE = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM }
   | AUTO_INCREMENT = #
   | AVG_ROW_LENGTH = #
   | CHECKSUM = {0 | 1}
   | COMMENT = 'string'
   | MAX_ROWS = #
   | MIN_ROWS = #
   | PACK_KEYS = {0 | 1 | DEFAULT}
   | PASSWORD = 'string'
   | DELAY_KEY_WRITE = {0 | 1}
   | ROW_FORMAT = { DEFAULT | DYNAMIC | FIXED | COMPRESSED }
   | RAID_TYPE = { 1 | STRIPED | RAID0 } RAID_CHUNKS=#  RAID_CHUNKSIZE=#
   | UNION = (table_name,[table_name...])
   | INSERT_METHOD = { NO | FIRST | LAST }
   | DATA DIRECTORY = 'caminho absluto para o diretório'
   | INDEX DIRECTORY = 'caminho absluto para o diretório'
   | DEFAULT CHARACTER SET character_set_name [COLLATE collation_name]
instrução_select:
  [IGNORE | REPLACE] [AS] SELECT ...  (Alguma instrução válida)
        CREATE TABLE cria uma tabela com op nome dado
        no banco de dados atual.
      
As regras para nomes de tabelas permitidos são dados em Secção 6.1.2, “Nomes de Banco de dados, Tabela, Índice, Coluna e Alias”. Por padrão a tabela é criada no banco de dados atual. Um erro ocorre se não houver o banco de dados atual ou se a tabela já existir.
        No MySQL Versão 3.22 ou posterior, o nome de tabela pode ser
        especificado como nome_bd.nome_tabela para
        criar a tabela em um banco de dados específico. Ele funciona
        sem se preoocupar se existe um banco de dados atual.
      
        A partir do MySQL Versão 3.23, você pode usar a palavra-chave
        TEMPORARY qaundo você criar uma tabela. A
        tabela temporária é visível apenas a para a conexão atual, e
        será automaticamente deletada quando a conexão é fechada.
        Isto significa que duas conexões diferentes podem usar o mesmo
        nome de tabela temporária sem conflitos outras ou com uma
        tabela existente com o mesmo nome. (A tabela existente é
        escondida até que a tabela temporária seja deletada). A partir
        do MySQL 4.0.2 você deve ter o privilégio CREATE
        TEMPORARY TABLES para poder criar tabelas
        temporárias.
      
        No MySQL Versão 3.23 ou posterior você pode utilizar as
        palavras-chaves IF NOT EXISTS para que não
        ocorra um erro se a tabela já existir. Note que não há
        verificação de que a tabela existente tem uma estrutura
        idêntica a aquela indicada pela instrução CREATE
        TABLE
      
        A partir da versão 4.1.0, o atributo SERIAL
        pode ser usado com um alias para BIGINT NOT NULL
        AUTO_INCREMENT UNIQUE. Este é um recuros para
        compatibilidade.
      
        Como no MySQL 3.23, você pode criar uma tabela de autra
        adicionando uma instrução SELECT no fim da
        instrução CREATE TABLE:
      
CREATE TABLE new_tbl SELECT * FROM orig_tbl;
        Os índices não são transportados para a nova tabela, e
        algumas conversões de tipos de coluna podem ocorrer. Por
        exemplo, o atributoAUTO_INCREMENT não está
        preservado e colunas VARCHAR podem se tornar
        colunas CHAR.
      
        Quando criar uma tabela com CREATE ...
        SELECT, de um apelido para qualquer chamada de
        função ou expressões em uma consulta. Se você não o fizer,
        a instrução CREATE pode falhar ou resultar
        em nomes de colunas indesejáveis.
      
CREATE TABLE artists_and_works SELECT artist.name, COUNT(work.artist_id) AS number_of_works FROM artist LEFT JOIN work ON artist.id = work.artist_id GROUP BY artist.id;
No MySQL 4.1, você pode especificar explicitamente o tipo para uma coluna gerada:
CREATE TABLE foo (a tinyint not null) SELECT b+1 AS 'a' FROM bar;
        No MySQL 4.1 você pode utilizar LIKE para
        criar uma tabela baseada em uma definição de outra tabela. No
        MySQL 4.1 você também pode especificar o tipo para uma coluna
        gerada:
      
CREATE TABLE new_tbl LIKE orig_tbl;
        Cada tabela nome_tabela é representada por
        algum arquivo no diretório de banco de dados. No caso das
        tabelas tipo MyISAM você irá obter:
      
        CREATE TABLE ... LIKE não copia nenhuma
        opção de tabela DATA DIRECTORY ou
        INDEX DIRECTORY que foi especificada para a
        tabela original.
      
| Arquivo | Proposito | 
| nome_tabela.frm | Arquivo de formato (definição) da tabela. | 
| nome_tabela.MYD | Arquivo de dados | 
| nome_tabela.MYI | Arquivo Índice | 
Para mais informações de propriedades de varios tipo de coluna, veja Secção 6.2, “Tipos de Campos”:
            Se nem NULL nem NOT
            NULL for especificado, a coluna é tratada como se
            NULL fosse especificado.
          
            Uma coluna integer pode ter o atributo adicional
            AUTO_INCREMENT. Quando você insere um
            valor de NULL (recomendado) ou
            0 em uma coluna
            AUTO_INCREMENT indexada, a coluna é
            definida com o valor da próxima sequência. Normalmente ele
            é valor+1, onde valor
            é o maior valor para a coluna column atualmente na tabela.
            A sequência de AUTO_INCREMENT começa
            com 1. See
            Secção 12.1.3.32, “mysql_insert_id()”.
          
            A partir do MySQL 4.1.1, especificando o parâmetro
            NO_AUTO_VALUE_ON_ZERO para a opção do
            servidor --sql-mode ou a variável do
            servidor sql_mode permite que você
            aramzene 0 nas colunas
            AUTO_INCREMENT como 0,
            em vez de gerar uma nova sequência de valores. See
            Secção 4.1.1, “Opções de Linha de Comando do mysqld”.
          
            Se você deletar a linha contendo o valor máximo para uma
            coluna AUTO_INCREMENT, o valor será
            reutilizado por uma tabela ISAM, ou
            BDB, mas não por tabelas
            MyISAM ou InnoDB. Se
            você deletar todas as linhas na sua tabela com
            DELETE FROM nome_tabela (sem um
            WHERE) no modo
            AUTOCOMMIT, a sequencia será reiniciada
            em todos os tipos de tabela, exceto
            InnoDB. See
            Secção 7.5.12.5, “Como Funciona uma Coluna AUTO_INCREMENT no InnoDB”.
          
            Nota: Só pode haver uma
            coluna AUTO_INCREMENT por tabela, e ela
            deve ser indexada e não pode ter uma valor
            DEFAULT. No MySQL Versão 3.23, uma
            coluna AUTO_INCREMENT funcionará
            corretamente apenas se conter apenas valores positivos.
            Inserir um número negativo é considerado como a inserção
            de um número positivo muito grande. Isto ocorre para evitar
            problemaa de precisão quando os números vão de positivo
            para negativo e também para assegurar que não se obtenha,
            acidentalmente, uma coluna AUTO_INCREMENT
            que contenha 0.
          
            Em tabelas MyISAM e
            BDB você pode especificar colunas
            AUTO_INCREMENT secundárias em uma chave
            ulti-coluna. See Secção 3.6.9, “Usando AUTO_INCREMENT”.
          
            Para tornar MySQL compatível com alguns aplicativos ODBC,
            você pode encontrar o valor
            AUTO_INCREMENT da última linha inserida
            com a seguinte consulta:
          
SELECT * FROM nome_tabela WHERE auto_col IS NULL
            Valores NULL são tratados em colunas
            TIMESTAMP de modo diferente de outros
            tipos de colunas. Você não pode armazenar um
            NULL literal em uma coluna
            TIMESTAMP; definindo a coluna com
            NULL lhe atribui a a data e a hora atual.
            Como colunas TIMESTAMP se comportam desta
            forma, os atributos NULL e NOT
            NULL não se aplicam de modo normal e são
            ignorados se você os especificar.
          
            Por outro lado, tornar o uso de colunas
            TIMESTAMP mais fácil para os clientes
            MySQL, o servidor relata que tal coluna pode ter o valor
            NULL atribuído (a que é verdade), mesmo
            que TIMESTAMP nunca contenham, realmente,
            um valor NULL. Você pode ver isto quando
            você utiliza DESCRIBE nome_tabela para
            obter informações sobre sua tabela.
          
            Note que definir uma coluna TIMESTAMP com
            0 não é o mesmo que definí-la com
            NULL, porque 0 é um
            valor TIMESTAMP válido.
          
            
            Um valor padrão (DEFAULT) tem que ser
            constante, ele não pode ser uma função ou uma expressão.
          
            Se nenhum valor DEFAULT é especificado
            para uma coluna, o MySQL atribuirá um automaticamente, como
            a seguir.
          
            Se a coluna aceitar NULL como um valor, o
            valor padrão é NULL.
          
            Se a coluna é declarada como NOT NULL, o
            valor padrão depende do tipo de coluna:
          
                Para tipos numéricos não declarados com o atributo
                AUTO_INCREMENT, o padrão é
                0. Para uma coluna
                AUTO_INCREMENT, o valor padrão é o
                próximo valor na sequência.
              
                Para tipos date e time diferentes de
                TIMESTAMP, o padrão é o valor zero
                apropriado para o tipo. Para a primeira coluna
                TIMESTAMP na tabela, o padrão é a
                data e hora atuais. See
                Secção 6.2.2, “Tipos de Data e Hora”.
              
                Para tipos string diferentes de ENUM,
                o valor padrão é uma string vazia. Para
                ENUM, o padrão é o primeiro valor
                enumerado.
              
            Valores padrões devem ser constantes. Isto significa, por
            exemplo, que você não pode definir o padrão de uma coluna
            date como o valor de funções como NOW()
            or CURRENT_DATE.
          
            
            Um comentário para uma coluna pode ser especificado com a
            opção COMMENT. O comentário é
            mostrado pela instrução SHOW CREATE
            TABLE e por SHOW FULL COLUMNS.
            Esta opção está disponível a partir do MySQL 4.1. (Ela
            é perimitida mas ignorada em versões anteriores.)
          
            KEY é normalmente um sinônimo para
            INDEX. A partir da versão 4.1, o
            atributo de chave PRIMARY KEY também
            pode ser especificado apenas como KEY.
            Isto foi implementado para compatibilidade com outros bancos
            de dados.
          
            No MySQL,uam chave UNIQUE só pode ter
            valores distintos. Um erro ocorre se você tantar adicionar
            uma nova linha com uma chave que coincida com uma já
            existente.
          
            
            PRIMARY KEY é uma chave única
            (KEY) onde todas as colunas chaves devem
            ser definidas como NOT NULL. Se elas não
            forem explicitamente declaradas como NOT
            NULL, isto será feito implicitamente e sem aviso.
            No MySQL a chave é chamada PRIMARY. Uma
            tabela pode ter apenas uma PRIMARY KEY.
            Se você não tiver uma PRIMARY KEY e
            alguma aplicação perguntar pela PRIMARY
            KEY em sua tabela, o MySQL retornará a primeira
            chave UNIQUE, que não possui nenhuma
            coluna NULL, como a PRIMARY
            KEY.
          
            Uma PRIMARY KEY pode ser um índice
            multi-coluna. Porém, você não pode criar um índice
            multi-coluna usando o atributo de chave PRIMARY
            KEY em uma especificação de coluna. Fazendo
            assim apenas colunas simples poderão ser marcadas como
            primárias. Você deve utilizar uma cláusula
            PRIMARY KEY(index_nome_coluna, ...)
            separada.
          
            Um índice UNIQUE é aquele no qual todos
            os valores no índice devem ser distintos. A exceção a
            isto é que se for permtido conter valores
            NULL em uma coluna no índice, ele pode
            conter múltiplos valores NULL. Este
            exceção não se aplica a tabelas BDB,
            que permitem apenas um único NULL.
          
            Se a chave PRIMARY ou
            UNIQUE consistir de apenas uma coluna e
            ela é do tipo inteiro, você também poderá se referir a
            ela como _rowid (novo na versão
            3.23.11).
          
            Se você não atribuir um nome ao índice que não é um
            PRIMARY KEY, ele terá o mesmo nome da
            prmeira index_nome_coluna, com um sufixo
            opicional (_2, _3,
            ...) para torná-lo único. Você pode
            nome de índices para uma tabela usando SHOW INDEX
            FROM nome_tabela. See
            Secção 4.6.8.1, “Recuperando Informações sobre Bancos de Dados, Tabelas, Colunas e
          Índices”.
          
            
            
            Apenas os tipos de tabelas MyISAM,
            InnoDB, e BDB suportam
            índices em coluna que possam ter valores
            NULL. Nos outros casos você deve
            declarar tais colunas NOT NULL ou um erro
            será retornado.
          
            Com a sintaxe nome_coluna(length) em uma
            especificação de índice, você pode criar um índice que
            utiliza apenas os primeiros length()
            bytes de uma coluna CHAR ou
            VARCHAR. Isto pode tornar o arquivo de
            índices muito menor. See Secção 5.4.4, “Índices de Colunas”.
          
            
            
            
            
            Apenas os tipos de tabela MyISAM e (a
            partir do MySQL 4.0.14) InnoDB suportam
            índice em colunas BLOB e
            TEXT. Ao colocar um índice em uma coluna
            BLOB ou TEXT você
            sempre DEVE especificar o tamanho do índice, até 255
            bytes. Por exemplo:
CREATE TABLE test (blob_col BLOB, INDEX(blob_col(10)));
            Uma especificação index_col_name pode
            finalizar com ASC ou
            DESC. Esta palavras chaves são
            permitidas para estensão futura para especificar o
            armazenamento do valor do índice em crescente ou
            decrescente. Atualmente elas são analisadas mas ignoradas;
            valores de índice são sempre armazenados em ordem
            crescente.
          
            Quando você utiliza ORDER BY ou
            GROUP BY com uma coluna
            TEXT ou BLOB, o
            servidor ardena valores usando apenas o número inicial de
            bytes, indicado pela variável do servidor
            max_sort_length. See
            Secção 6.2.3.2, “Os Tipos BLOB e TEXT”.
          
            No MySQL Versão 3.23.23 ou posterior, você também pode
            criar índices FULLTEXT especiais. Eles
            são usados para busca full-text. Apenas o tipo de tabela
            MyISAM suporta índices
            FULLTEXT. Eles só podem ser criados em
            colunas CHAR, VARCHAR,
            e TEXT. A indexação sempre ocorre sobre
            toda a coluna; índices parciais não são suportados. Veja
            Secção 6.8, “Pesquisa Full-text no MySQL” para detalhes de
            operação.
          
            No MySQL Versão 3.23.44 ou posterior, tabelas
            InnoDB suportam verificação de chaves
            estrangeiras. See Secção 7.5, “Tabelas InnoDB”. Note que a
            sintaxe FOREIGN KEY no
            InnoDB é mais restrita que a sintaxe
            apresentada acima. As colunas da tabela indicada devem ser
            nomeadas explicitmente. O InnoDB suporta ambas as ações
            ON DELETE e ON UPDATE
            em chaves esrtrangiras nos MySQL 3.23.50 e 4.0.8,
            respectivamente. Veja a seção InnoDB do
            manual para a sintaxe precisa. See
            Secção 7.5.5.2, “Restrições FOREIGN KEY”. Para
            outros tipos de tabelas, MySQL Server analisa as sinatxes
            FOREIGN KEY, CHECK e
            REFERENCES no comando CREATE
            TABLE, mas sem tal ação ser tomada. See
            Secção 1.8.4.5, “Chaves Estrangeiras”.
          
            Para tabelas ISAM e
            MyISAM, cada coluna
            NULL tem um bit extra, arredondado para o
            byte mais próximo. O tamanho máximo de um registro em
            bytes pode ser calculado como a seguir:
          
tamanho da linha = 1
             + (soma do tamanho da coluna)
             + (números de coluna NULL + delete_flag 7)/8
             + (número de colunas de tamanho variável)
            delete_flag é 1 para tabelas com formato
            de registro estático. Tabelas estáticas usam um bit no
            registro para um parâmetro que indica se o linha foi
            deletada. delete_flag é 0 para tabelas
            dinâmicas porque este parâmetro é armazenado no
            cabeçalho da linha dinâmica.
          
            Estes cálculos não se aplicam à tabelas
            InnoDB, para a qual o tamanho do
            armazenamento não é diferente para colunas
            NULL comparados a colunas NOT
            NULL.
          
            A opçao opção_tabela e
            SELECT só são implmentadas no MySQL
            Versão 3.23 e acima.
          
            A opção TYPE para especificar o tipo de
            tabela possui os seguintes valores:
          
| Tipo de tabela | Descrição | 
| BDBouBerkeleyDB | Tabelas de transação segura com bloqueio de página. See
                    Secção 7.6, “Tabelas BDBouBerkeleyDB”. | 
| HEAP | Os dados desta tabela são armazenados apenas na memória. See
                    Secção 7.4, “Tabelas HEAP”. | 
| ISAM | O mecanismo de armazenamento original. See Secção 7.3, “Tabelas ISAM”. | 
| InnoDB | Tabelas com transações eguras com bloqueio de linha. See
                    Secção 7.5, “Tabelas InnoDB”. | 
| MERGE | Uma coleção de tabelas MyISAM usadas como uma tabela. See
                    Secção 7.2, “Tabelas MERGE”. | 
| MRG_MyISAM | Um apelido para tabelas MERGE | 
| MyISAM | O novo mecanismo de armazenamento portável binário que substitui o
                    ISAM. See Secção 7.1, “Tabelas MyISAM”. | 
See Capítulo 7, Tipos de Tabela do MySQL.
            Se um tipo de tabela é especificado, e este tipo não está
            disponível, MySQL irá usar MyISAM. Por
            exemplo, se uma definição de tabela inclui a opção
            TYPE=BDB mas o MySQL não suporta tabelas
            BDB, a tabela será criada como uma
            tabela MyISAM. Isto torna possível de se
            ter uma configuração de replicação onde você tem
            tabelas transacionaisno master mas as tabelas criadas no
            slave são não transacionais (para obter mais velocidade).
            No MySQL 4.1.1 você obtém um aviso se o tipo de tabela
            especificado não é aceito.
          
Os outros tipos de tabelas são utilizados para otimizar o comportamento da tabela. Na maioria dos casos, você não precisa especificar nenhuma delas. As opções funcionam com todos os tipos, a menos que haja indicação:
| Opção | Descrição | 
| AUTO_INCREMENT | O próximo valor AUTO_INCREMENTque você quer
                    definir em sua tabela (apenasMyISAM; para definir o primeiro
                    valor auto incrementeem uma tabela InnoDB insira uma
                    linha com um valor de menos um e delete esta linha). | 
| AVG_ROW_LENGTH | Uma aproximação do tamanho médio de linha em sua tabela. Você só precisa definí-la para tabelas grnades com tamanho de registros variáveis. | 
| CHECKSUM | Defina com 1 se você quiser manter um checksum para todas as linha
                    (deixa a tabela um pouco mais lenta para
                    atualizações, mas fica mais fácil encontrar
                    tabelas corrompidas) (apenas MyISAM). | 
| COMMENT | Um comentário de 60 caracteres para a sua tabela. | 
| MAX_ROWS | Número máximo de linhas que você deseja armazenar na tabela. | 
| MIN_ROWS | Número mínimo de linha que você planeja armazenar na tabela. | 
| PACK_KEYS | Defina com 1 se você quiser um índice menor, Normalmente torna a
                    atualização mais lenta e a leitura mais rápida
                    (apenas MyISAMeISAM). Definr com 0 irá
                    desabilitar empacotamento das chaves. Definir comDEFAULT(MySQL 4.0) dirá ao
                    mecanismo de armazenamento para empacotar apenas
                    colunasCHAR/VARCHARlongas. | 
| PASSWORD | Criptografa o arquivo .frmcom uma senha. Esta
                    opção não fa nada na versão padrão do MySQL. | 
| DELAY_KEY_WRITE | Defina com 1 se quiser atrasar a atualização das chaves da tabela até
                    que a tabela seja fechada (apenas MyISAM). | 
| ROW_FORMAT | Define como as linhas devem ser armazenadas. Atualmente esta opção só
                    funciona com tabelas MyISAM, as
                    quais suportam os formatos de linhaDYNAMICeFIXED. See
                    Secção 7.1.2, “Formatos de TabelasMyISAM”. | 
            Quando você utiliza uma tabela MyISAM,
            MySQL usa o produto de MAX_ROWS *
            AVG_ROW_LENGTH para decidir o tamanho da tabela
            resultante. Se você não especificar qualquer uma das
            opções acima, o tamanho máximo de uma tabela será 4G (ou
            2G se o seu sistema operacional só suporta tabelas de 2G).
            A razão para isto é apenas manter o tamanho dos ponteiros
            baixo para tornar o índice menor e mais rápido se você
            realmente não precisa de tabelas grandes.
          
            Se você não utilizar PACK_KEYS, o
            padrão é só empacotar strings, não números. Se você
            utilizar PACK_KEYS=1, números também
            serão empacotados.
          
            Ao empacotar chaves numéricas binárias, o MySQL usará a
            compactação prefixada. Isto significa que você só terá
            grandes benefícios disto se você tiver muitos números
            iguais. Compactação prefixada significa que toda a chave
            precisa de um byte extra para indicar quantos bytes das
            caves anteriores são o mesmo da próxima chave (note que o
            ponteiro para a linha é armazenado na ordem do byte mais
            alto em primeiro diretamente depois da chave, para aumentar
            compactação). Isto significa que se você tiver muitas
            chaves iguais em duas linhas consecutivas, todas os chaves
            ``iguais'' seguintes irão normalmente ter apenas 2 bytes
            (incluindo o ponteiro para a linha). Compare isto isto ao
            caso comum onde as chaves seguintes irão levar
            tamanho_armazenamento_chave + tamanho_ponteiro (nomralmente
            4). Por outro lado, se todas as chaves são totalmente
            diferente, você usará 1 byte por chave, se a chave não
            puder ter valores NULL. (Neste caso o
            tamanho da chave empacotada será armazenado no mesmo byte
            que é usado para marcar se a chave é
            NULL.)
          
            No MySQL 3.23, Se você especificar um
            SELECT depois de uma instrução
            CREATE, MySQL criará novos campos para
            todos os elemento em SELECT. Por exemplo:
          
mysql>CREATE TABLE test (a INT NOT NULL AUTO_INCREMENT,->PRIMARY KEY (a), KEY(b))->TYPE=MyISAM SELECT b,c FROM test2;
            Isto irá criar uma tabela MyISAM com
            três colunas, a, b e c. Note que as colunas da instrução
            SELECT são inseridas do lado correto da
            tabela, nào sobreposta nela. Considere o seguinte exemplo:
          
mysql>SELECT * FROM foo;+---+ | n | +---+ | 1 | +---+ mysql>CREATE TABLE bar (m INT) SELECT n FROM foo;Query OK, 1 row affected (0.02 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql>SELECT * FROM bar;+------+---+ | m | n | +------+---+ | NULL | 1 | +------+---+ 1 row in set (0.00 sec)
            Para cada linha na tabela foo, uma linha
            é inserida em bar com os valores de
            foo e os valores padrões para a nova
            coluna.
          
            CREATE TABLE ... SELECT não irá criar
            automaticamente nenhum índice para você. Isto é feito
            intencionalmente para deixar o comando o mais flexível
            possível. Se você quiser ter índices em uma tabela
            criada, você deve especificá-lo antes da instrução
            SELECT:
          
mysql> CREATE TABLE bar (UNIQUE (n)) SELECT n FROM foo;
Se ocorrer qualquer erro durante enquanto os dados são copiados para a tabela, ele será automaticamente deletado.
            Você pode preceder o SELECT por
            IGNORE ou REPLACE para
            indicar como tratar registros que duplicam valores de chave
            única. Com IGNORE, novos registros que
            duplicam um registro existente em um valor de chave única
            são descartados. Com REPLACE, novos
            registros substituem registros que tem o mesmo valor de
            chave única. Se nem IGNORE nem
            REPLACE são especificados, valir de
            chave unica duplicados resultam em erro.
          
            Para assegurar que o log binário/atualização pode ser
            usado para recriar a tabela original, MySQL não permitirá
            inserções concorrentes durante um CREATE TABLE
            ... SELECT.
          
            
            
            A opção RAID_TYPE irá ajudá-lo a
            exceder o limite de 2G/4G limit para arquivo de dados MyISAM
            (não o arquivo de índice) em sistemas operacionais que
            não suportam arquivos grandes. Note que esta opção não
            é recomendada para sistema de arquivos que suportam
            arquivos grandes!
          
            Você pode obter mais velocidade da gargalo de E/S colocando
            diretorios RAID em diferentes discos
            físicos. RAID_TYPE funcionará em
            qualquer sistema operacional, desde que você tenha
            configurado o MySQL com --with-raid. Por
            agora o único RAID_TYPE permitido é
            STRIPED (1 e
            RAID0 são utilizados para isto).
          
            Se você especificar RAID_TYPE=STRIPED
            para tabeals MyISAM,
            MyISAM criará subdiretórios
            RAID_CHUNKS chamados 00, 01, 02 no
            diretório de banco de dados. Em cada um destes diretórios
            MyISAM criará uma
            nome_tabela.MYD. Ao escrever dados no
            arquivo de dados, o manipulador RAID irá
            mapear o primeiro RAID_CHUNKSIZE *1024
            bytes para o primeiro arquivo e os próximos
            RAID_CHUNKSIZE *1024 bytes para o
            próximo arquivo.
          
            UNION é utilizado quando você quer
            utilizar uma coleção de tabelas identicas como uma. Isto
            só funciona com tabelas MERGE. See
            Secção 7.2, “Tabelas MERGE”.
          
            No momento você precisa ter privilégios
            SELECT, UPDATE e
            DELETE nas tabelas mapeadas para uma
            tabela MERGE. Todas as tabelas mapeadas
            devem estar no mesmo banco de dados na tabela
            MERGE.
          
            Se você quiser inserir dados em uma tabela
            MERGE, você tem que especificar com
            INSERT_METHOD na tabela onde o registro
            deve ser inserido. INSERT_METHOD é uma
            opção útil somente para tabelas MERGE.
            See Secção 7.2, “Tabelas MERGE”. Esta opção foi
            introduzida no MySQL 4.0.0.
          
            Na tabela criada a chave PRIMARY será
            colocado primeiro, seguida de todas a chaves únicas
            (UNIQUE) e então das chaves normais.
            Isto ajuda o otimizador MySQL para priorizar qual chave
            utilizar e também a detectaa mais rapidamente chaves
            únicas (UNIQUE) duplicadas.
          
            Utilizando DATA DIRECTORY='directorio' ou
            INDEX DIRECTORY='directorio' você pode
            especificar onde o mecanismo de armazenamento deve colocar
            os seus arquivos de tabelas e índices. Note que
            ``diretório'' deve ser um caminho completo para o
            diretório (não um caminho relativo).
          
            Isto só funciona para tabelas MyISAM no
            MySQL 4.0, quando não estiver usando a
            opção --skip-symlink. See
            Secção 5.6.1.2, “Utilizando Links Simbólicos para Tabelas”.
          
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.

