CREATE TABLE e restrições

Crie uma nova tabela e defina as regras que os dados dela devem seguir.

Sintaxe

CREATE TABLE name (column type [PRIMARY KEY] [NOT NULL] [UNIQUE] [DEFAULT value] [REFERENCES other (column)] [GENERATED ALWAYS AS IDENTITY]);
CREATE TABLE name AS SELECT ...;
  • PRIMARY KEY: única e obrigatória.
  • REFERENCES: o valor deve existir na outra tabela.
  • UNIQUE proíbe repetição numa coluna que não é a chave primária.
  • GENERATED ALWAYS AS IDENTITY preenche uma chave inteira para você (MySQL: AUTO_INCREMENT; SQL Server: IDENTITY).
  • CREATE TABLE AS SELECT copia uma consulta para uma tabela nova. Outros bancos costumam usar SELECT INTO.

Exemplo

CREATE TABLE notes (note_id integer PRIMARY KEY, body text NOT NULL, order_id integer REFERENCES orders (order_id));

Uma tabela nova; o banco de dados recusa uma anotação que se refere a um pedido inexistente.

Tabelas usadas: orders. Experimente em uma lição abaixo.

Erros comuns

  • Uma chave estrangeira só é verificada quando as linhas mudam. Excluir um cliente que ainda tem pedidos é recusado se os pedidos se referirem a ele.
  • CREATE TABLE AS copia os dados, não a chave primária nem outras restrições. Adicione-as depois se precisar.

Pratique