A instrução create table permite criar uma nova tabela em um banco de dados.
Podemos usar create table para criar tabelas. Abaixo está um exemplo mais completo do uso do comando create table. Não se preocupe em entender agora. Iremos destrinchar ao decorrer do artigo.
create table meuprojeto( meuprojeto_id int auto_increment, projeto_id int, projeto varchar(255) not null, data_inicio date not null, data_final date not null, finalizado bool default false, primary key(projeto_id, projeto_id), foreign key(projeto_id) references projects(projeto_id) );
Sintaxe
create table [if not exists] table_name( coluna1, coluna2, ..., table_constraints ) engine=storage_engine;
Essa sintaxe mostra que:
- Depois de create table colocamos o nome da tabela que iremos criar. Esse nome deve ser único em todo o banco de dados.
- A opção if not exists é opcional, mas a usamos para criar condicionalmente a nova tabela somente se ela não existir.
- especificamos uma lista de colunas para a tabela entre parênteses, as colunas são separadas por vírgulas(,).
- especificamos tables constraints tais como: primary key(chave primária), foreign key(chave estrangeira).
- opcionalmente, podemos colocar um storage engine(mecanismo de armazenamento) para a tabela. Se você ignorar e não colocar nada será usada o InnoDB por padrão. O InnoDB é um bom storage engine que suporta ACID, integridade referencial e recuperação de falhas.
COLUNAS EM UMA TABELA
Para definir uma coluna para uma tabela, você usa a seguinte sintaxe:
Os valores dentro de [ ] são opcionais.
nome_coluna tipo_de_dado(tamanho) [not null] [valor padrao] [auto_incremento] column_constraint;
- nome_coluna é um nome qualquer que queira dar
- tipo_de_dado(tamanho) tipos de dados pode ser int, varchar… Entre parênteses colocamos um número que será a quantidade de caracteres permitida a ser armazenda.
- not null para forçar o uso de valores não nulos na coluna; por exemplo, a coluna não poderá ser vazia. Além da restrição not null, você pode usar restrições da chave primária.
- valor padrao quando não for preenchida não ficará vazio. Podemos colocar um valor para ser preenchido automaticamente com ele.
- auto_incremento a coluna será preenchida com números sequencialmente, exemplo, 1, 2, 3…. use a propriedade auto_increment para instruir o MariaDB ou MySQL a gerar implicitamente inteiros sequenciais para a coluna. Uma tabela tem uma e apenas uma coluna com a propriedade auto_increment.
A OPÇÃO “OR REPLACE”
É opcional o uso de or replace. Ao usar or replace ela descartará a tabela se ela existir e criará uma nova.
create [or replace] nome_tabela ( ... );
or replace serve como um atalho para:
drop table if exists nome_tabela; create table nome_tabela( … );Ao invés de usar dois comandos passamos a usar apenas um.
Não podemos usar or replace e if not exists ao mesmo tempo!
Exemplos de Uso
Criando uma tabela simples com CREATE TABLE
create table projetos( projeto_id int auto_increment, projeto_nome varchar(255) not null, data_inicial date, data_final date, custo decimal(15,2) not null, criado_em timestamp default current_timestamp, primary key(projeto_id) );
- projeto_id receberá inteiros(números sem vírgula) e como tem auto_increment será preenchido automaticamente com números sequenciais quando você inserir uma linha na tabela. A coluna projeto_id é a chave primária como podemos ver ao final da tabela. Isso significa que um valor na coluna projeto_id identificará exclusivamente uma linha na tabela.
- projeto_nome irá receber um texto(string ou conjunto de caracteres) com tamanho máximo de 255 caracteres. Por ter uma restrição not null, você não pode inserir valores nulos nessa coluna.
- data_inicial e data_final são as colunas para datas. Eles aceitam apenas datas e valores nulos.
- custo é uma coluna decimal que também não aceita valores nulos
- criado_em é uma coluna de registro de data e hora(timestamp). Além disso, seu valor padrão é o carimbo de data/hora atual do sistema operacional no qual o servidor de banco de dados é executado.
Como não especificamos explicitamente o mecanismo de armazenamento para a tabela de projetos, ele usa o InnoDB como mecanismo de armazenamento.
Usando CREATE TABLE para Criar uma tabela com foreign key(chave estrangeira)
Abaixo temos uma tabela com duas chaves primárias(primary key): etapas_id e projeto_id. O projeto_id é auto_increment.
Temos também uma chave estrageira(foreign key) que é o campo projeto_id.
Há também uma referência à outro tabela, a tabela etapas; aqui é usado o campo etapas_id da tabela etapas como referência.
create table meuprojeto( projeto_id int auto_increment, etapas_id int, projeto varchar(255) not null, data_inicio date not null, data_final date not null, finalizado bool default false, primary key(projeto_id, projeto_id), foreign key(projeto_id) references etapas(etapas_id) );
Comment on “MariaDB e MySQL: Criando Tabelas com CREATE TABLE ”