Sintaxe CREATE TABLE


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 "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.

Desde o MariaDB v3.22, 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.

Desde o MariaDB v3.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 MariaDB 4.0.2 você deve ter o privilégio CREATE TEMPORARY TABLES para poder criar tabelas temporárias.

Desde o MariaDB v3.23 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 MariaDB 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, 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 MariaDB você pode utilizar LIKE para criar uma tabela baseada em uma definição de outra tabela. No MariaDB 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 "Tipos de Campos":

Retornar