Categories
Banco de dados Tutoriais

Como criar tabelas no MySQL

Neste post vou tentar mostrar objetivamente como criar tabelas em um banco de dados através da linha de comando do cliente MySQL.
Dada a grande quantidade de parâmetros aceitos, a declaração CREATE TABLE é uma das mais complexas no MySQL. Por isto vou procurar simplificar através de exemplos práticos — já pressupondo que você tenha privilégios para criar novas tabelas e saiba como criar bancos de dados. Ao final do texto, vou mostrar como criar tabelas em um script PHP.
Comece por selecionar o banco de dados dentro do qual uma nova tabela será criada:

USE nome_do_banco;

Sintaxe de CREATE TABLE

De acordo com a documentação da Oracle, a sintaxe mais simplificada é esta aqui:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...)

As partes da declaração que se encontram entre [] (colchetes) são opcionais:

  • TEMPORARY – indica que a tabela criada será temporária, o que significa que ela expira assim que a sua sessão no MySQL terminar. Use-a sempre que estiver fazendo testes.
  • IF NOT EXISTS – verifica a prévia existência da tabela e evita uma interrupção do script, causada por erro.

Os nomes das tabelas são sensíveis à caixa (case sensitive). Ou seja, tbl_name e Tbl_Name são dois nomes totalmente diferentes pro MySQL.
Uma tabela é composta por uma ou mais colunas, cada qual com suas definições. Vamos ver, daqui pra frente, algumas formas de definir este item durante a criação da tabela

Exemplos de criação de tabelas no MySQL

Vou começar pela criação de uma agenda telefônica, como esta que você usa no celular e é armazenável no cartão SIM, que contenha apenas strings (cadeias de caracteres) curtas – nome e telefone:

CREATE TABLE contatos (
nome VARCHAR(50) NOT NULL,
telefone VARCHAR(25) NOT NULL
)ENGINE=CSV;

Note que a engine escolhida foi a CSV. Leia mais sobre mecanismos de armazenamento (storage engines), para saber entender mais sobre o assunto.
Verifique se a tabela foi criada:

SHOW TABLES;

Mysql tutorial - Create Table - Show Tables
Podemos melhorar um pouco mais a tabela contatos, ao acrescentar mais alguns campos, como sobrenome dos contatos, DDD, data de nascimento e email. Antes de criar uma nova tabela, com o mesmo nome, vamos remover a anterior:

DROP TABLE contatos;

Agora, vamos criar a nova tabela:

CREATE TABLE IF NOT EXISTS contatos (
nome VARCHAR(20),
sobrenome VARCHAR(30),
ddd INT(2),
telefone VARCHAR(9),
data_nasc DATE,
email VARCHAR(30)
)ENGINE=MyISAM;

Note que acrescentamos alguns outros itens a esta declaração:

  • Usar IF NOT EXISTS é uma boa prática dentro de scripts (veremos mais sobre isto, mais afrente);
  • Ao final do código, optamos por um outro mecanismo de armazenamento

Saiba mais:

Campos vazios, numeração automática e chave primária

Vou fazer uma apresentação rápida de alguns parâmetros que podem ser usados para melhorar a usabilidade e, mesmo, a segurança das tabelas criadas.

NOT NULL

Comumente, o desenvolvedor, ao projetar o banco de dados, não deseja que certos campos sejam deixados em branco, pelo usuário. Para evitar que isto ocorra, usa-se o parâmetro NOT NULL – o sistema irá retornar um erro, caso o usuário não preencha os campos configurados com este parâmetro.

AUTO_INCREMENT

Quando se quer aplicar uma ação a um determinado registro, na tabela, é importante que se encontre exatamente aquele que se quer, mesmo que haja 10 pessoas registradas com o mesmo nome e sobrenome. Apagar um registro errado, por exemplo, pode ser fonte para uma grande dor de cabeça.
Ter um campo de identificação única para cada registro pode prevenir este tipo de erro. É aí que entra o parâmetro AUTO_INCREMENT que pode ser usado para criar um campo numérico com uma identificação única e automática dentro da tabela.

PRIMARY KEY

O parâmetro PRIMARY KEY é usado para definir uma coluna como chave primária e ajudar a identificar um registro em relação aos outros dentro da tabela. Os valores de uma chave primária têm que ser únicos e não podem ser nulos. Pense na palavra inglesa primary com o significado de principal.
Vamos ver estes conceitos aplicados ao exemplo da tabela de contatos:

DROP TABLE contatos;
CREATE TABLE IF NOT EXISTS contatos (
id INT(5) AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(20) NOT NULL,
sobrenome VARCHAR(30) NOT NULL,
ddd INT(2),
telefone VARCHAR(9) NOT NULL,
data_nasc DATE,
email VARCHAR(30)
)ENGINE=MyISAM;

Veja abaixo o resultado que eu obtive:

DROP TABLE contatos;
Query OK, 0 rows affected (0.14 sec)

CREATE TABLE IF NOT EXISTS contatos (
    -> id INT(5) AUTO_INCREMENT PRIMARY KEY,
    -> nome VARCHAR(20) NOT NULL,
    -> sobrenome VARCHAR(30) NOT NULL,
    -> ddd INT(2),
    -> telefone VARCHAR(9) NOT NULL,
    -> data_nasc DATE,
    -> email VARCHAR(30)
    -> )ENGINE=MyISAM;
Query OK, 0 rows affected (0.10 sec)

show tables;
+--------------------+
| Tables_in_primeiro |
+--------------------+
| contatos           |
+--------------------+
1 row in set (0.00 sec)

Evite mensagens de erros, usando IF NOT EXISTS

Note que, ao executar este código, ele irá criar uma tabela, com o nome contatos se ela já não existir. O que significa que o script retornará uma mensagem de erro, se você recarregar a página, logo após tê-lo executado:
script php mysql criar tabela comando create table
Se você mudar a linha 14, acrescentando o parâmetro opcional IF NOT EXISTS, tal como vimos no começo deste texto, a mensagem de erro não será exibida e o script prosseguirá normalmente. Veja como:

$sqlcriatabela = "CREATE TABLE IF NOT EXISTS contatos (nome VARCHAR(50), telefone VARCHAR(25));";

Mas, neste caso, isto não seria útil.

Faça o trabalho com o PHP

Até aqui, você aprendeu a criar novas tabelas e alguns parâmetros relacionados a este comando, dentro da linha de comando do cliente MySQL. Espero ter conseguido demonstrar que, embora seja complexa (pela quantidade de recursos) a declaração CREATE TABLE não é, de modo algum, complicada.
Se estiver interessado em realizar a tarefa através da linguagem de programação PHP, leia este post — onde a construção do script em PHP é explicado com bastante detalhamento.

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

18 replies on “Como criar tabelas no MySQL”

Tenho uma tabela que se relaciona com ela mesmo. E nessa tabela, tenho um ID que é a primary key e auto incremento. Na mesma tabela tenho um outro campo que dependendo da situação terá o mesmo valor do ID. Como preencher esse campo2 com o mesmo valor do ID, uma vez que não sei qual o valor do ID pois o mesmo é autoincremento?

create database Classroom;

use Classroom;

create table F (ESTADO int, CIDADE varchar(30);

Onde está meu erro?!
Error Code: 1064

Falta o fechamento do parênteses “)” no final do comando.
substitua create table F (ESTADO int, CIDADE varchar(30);
por create table F (ESTADO int, CIDADE varchar(30));

Existe alguma forma de criar uma tabela com colunas usando informações de um formulário? por exemplo “CREATE TABLE $contato ($nome VARCHAR(50), $telefone VARCHAR(25));”; ? nao acho nenhum material que possa solucionar essa dúvida

comando: CREATE DATABASE NOMEDOBANCO; E DÊ UM CONTROL ENTER.
DEPOIS utilize o comando Use e informe o nome do banco criado.

Ex:
create database teste;
use teste;

Elias, muito boa explicação. Você tem um exemplo de iteração entre tabelas para eu testar? Obrigado.

Opa, entendi tudo, o único problema foi na id com AUTO_INCREMENT e PRIMARY KEY, acho que não da pra fazer dessa mandeira, aqui deu erro, então dei uma googlada e achei gente com o mesmo problema.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.