mysql create table tutorial with examples
Neste tutorial, exploraremos o uso do comando CREATE TABLE do MySQL com exemplos de sintaxe e programação:
A instrução CREATE TABLE faz parte da DDL (Data Definition Language) do SQL.
Discutiremos as maneiras pelas quais você pode CRIAR uma tabela em um determinado banco de dados, mencionar nomes de colunas e mecanismo de banco de dados ao criar a tabela, junto com as regras sobre convenções de nomenclatura para tabelas SQL.
O que você aprenderá:
- Pré-requisitos
- Comando CREATE TABLE do MySQL
- Conclusão
Pré-requisitos
O pré-requisito para executar qualquer um dos comandos SQL seria baixar o servidor MySQL. A edição gratuita da comunidade pode ser baixada aqui.
Também usaremos o MySQL Workbench SQL Client para todos os exemplos e discussões neste tutorial. A edição gratuita da comunidade do MySQL Workbench pode ser baixada aqui (você pode escolher a versão dependendo do sistema operacional em que está trabalhando).
Caso você não queira usar o MySQL Workbench - você também pode usar o cliente de linha de comando MySQL que vem com a instalação padrão do MySQL Server.
Comando CREATE TABLE do MySQL
O comando CREATE TABLE faz parte do conjunto de comandos DDL (Data Definition Language) do MySQL e permite ao usuário criar uma nova tabela para o banco de dados fornecido.
Nota: O comando CREATE TABLE existe para quase todos os bancos de dados relacionais - como MySQL, Postgres, SQL Server, etc.
MySQL CREATE TABLE Sintaxe
Na forma mais simples, você pode usar o comando CREATE TABLE apenas com as opções básicas, ou seja, o nome da tabela e as definições das colunas.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... );
Vamos entender os argumentos de sintaxe em detalhes:
- Nome da tabela: Deve ser o nome da tabela que você está tentando criar. Deve ser um nome totalmente qualificado (caso você não tenha um conjunto de banco de dados padrão). Por exemplo, databaseName.tableName
O nome da tabela pode ser especificado sem aspas ou com o símbolo de crase como `tableName` e` databaseName` `tableName` - Definição da coluna: Uma tabela em SQL deve consistir em pelo menos uma coluna. Todas as definições de coluna devem consistir em column_name, bem como no tipo de dados da coluna. Você também pode incluir opcionalmente as outras propriedades da coluna, como chave primária, nula, não nula, etc.
Vejamos um exemplo do uso da sintaxe acima para criar uma tabela.
Vamos criar uma tabela chamada EMPLOYEE_DETAILS (no banco de dados - SAMPLE_DB) com colunas
- nome: varchar (100)
- idade: int
- Morada: varchar (100)
CREATE TABLE SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) );
A seguir está o resultado da criação da Tabela:
Nota:
# 1) Observe o uso de (IF NOT EXISTS) o comando opcional na sintaxe acima.
Em geral, é recomendado usar este comando, pois evitaria gerar um erro se a tabela que estamos tentando criar já estiver presente no banco de dados.
Aqui está um exemplo de uso com e sem IF NOT EXISTS.
- Sem IF NOT EXISTS geraria um erro se a tabela já existisse.
- Com IF NOT EXISTS não gerará um erro. No entanto, ele mostrará um aviso de que a tabela já existe.
# 2) O ‘tableName’ ao usar o comando CREATE TABLE deve ser totalmente qualificado com o nome do banco de dados, ou seja, a forma como o usamos é SAMPLE_DB.employee_details
As outras maneiras de especificar o nome da tabela são configurando o banco de dados atual usando o comando ‘USE’. Por exemplo. USE SAMPLE_DB; e então executando / usando apenas o nome da tabela em vez do nome da tabela totalmente qualificado.
CRIAR TABELA com opções de tabela
As opções de tabela são usadas para otimizar o comportamento das tabelas MySQL. Eles podem ser aplicados durante a criação de uma tabela usando o comando CREATE TABLE do MySQL (ou posterior através do comando ALTER TABLE).
A sintaxe permanece a mesma com opções de tabela adicionais que podem ser especificadas.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... ) (table “” not found /)
;
Discutiremos as opções mais utilizadas abaixo (uma lista completa de opções de tabela pode ser encontrada aqui )
# 1) MOTOR
É usado para especificar o mecanismo de armazenamento da tabela, ou seja, o valor padrão é InnoDB. Isso não precisa ser alterado, a menos que haja necessidade de algum mecanismo de armazenamento específico. Os outros valores válidos para mecanismos de armazenamento são MEMORY, CSV, HEAP, etc.
A sintaxe para especificar ENGINE como parte do MySQL CREATE TABLE é fornecida abaixo.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )ENGINE='MEMORY';
# 2) AUTO_INCREMENT
Esta opção é usada para definir o valor inicial AUTO_INCREMENT da tabela, ou seja, o valor padrão é 1, mas você pode sobrescrever para qualquer outro valor inteiro positivo.
Nota: AUTO_INCREMENT pode ser especificado para apenas uma coluna na tabela e deve ser a chave primária. Vejamos um exemplo de como especificar o incremento automático como 10 e inserir um registro para validar se o incremento automático está definido corretamente.
Estamos usando a mesma tabela employee_details (certifique-se de eliminar a tabela existente antes de executar este comando) com um campo de id adicional marcado como a chave primária.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details( id int not null AUTO_INCREMENT primary key, name varchar(100), age int, address varchar(100) )AUTO_INCREMENT=10;
Vamos inserir uma linha sem nenhum valor para ID e garantir que os valores sejam inseridos a partir do valor que começa em 10.
INSERT INTO SAMPLE_DB.employee_details(name,age,address) values ('aman kumar',20,'mumbai'); select * from SAMPLE_DB.employee_details;
# 3) CHECKSUM
Deve ser definido como 1 se você quiser ter uma soma de verificação para toda a tabela armazenada. Geralmente é usado para garantir que não haja tabelas corrompidas.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )CHECKSUM=1;
CHECKSUM mantém uma soma de verificação ao vivo de toda a tabela durante qualquer inserção ou atualização
CRIAR TABELA com detalhes de particionamento
Também podemos mencionar o particionamento definido pelo usuário, se necessário, usando as opções de particionamento.
O conceito de particionamento é amplamente utilizado para distribuir o conteúdo das tabelas no sistema de arquivos, a fim de garantir tempos de acesso mais rápidos e consultas otimizadas. O particionamento divide uma grande tabela em tabelas menores, dependendo das estratégias ou chaves de particionamento especificadas.
Vamos ver como podemos especificar os detalhes do particionamento com o comando CREATE TABLE do MySQL.
Usaremos a tabela de amostra employee_details e adicionaremos uma nova coluna inteira chamada department_id que seria usada como uma chave hash de partição para ter uma distribuição uniforme de dados.
Especificar também a contagem de partições indicaria quantas partições reais seriam criadas (neste caso, 4). Se não for especificado, por padrão, haverá apenas 1 partição.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100), department_id int )PARTITION BY HASH (department_id) PARTITIONS 4;
Nota: Geralmente, a chave que seria usada para criar partições dependeria dos padrões de acesso previstos que seriam usados para a tabela. Nesse caso, suponha que estaríamos consultando a tabela com base no ID do departamento na maioria das vezes, então faz sentido ter o department_id como parte da chave hash.
Clonagem e cópia de tabelas MySQL
Às vezes, você pode desejar criar um clone de uma tabela existente ou copiar o conteúdo de uma tabela para outra. O MySQL oferece suporte a 2 maneiras de fazer isso, conforme mostrado abaixo.
- Usando o comando LIKE
- Usando o comando SELECT
Clonagem de tabela usando LIKE COMMAND
Com o comando LIKE, você pode criar uma nova tabela com exatamente os mesmos nomes de coluna e propriedades das tabelas existentes.
Esta é a sintaxe usando o comando LIKE.
técnicas de teste de caixa branca com exemplos
CREATE TABLE tableName1 LIKE tableName2
Com o comando acima, uma nova tabela, ou seja, tableName1 seria criada com a mesma estrutura e propriedades de tableName2.
Observe que, com essa abordagem, apenas os nomes e propriedades das colunas são clonados e não os dados reais da tabela.
Vamos tentar criar uma tabela chamada employee_details e usar esta tabela para criar uma nova tabela chamada student_details usando a opção LIKE.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100), department_id int ); CREATE TABLE SAMPLE_DB.student_details LIKE SAMPLE_DB.employee_details;
A seguir está a saída do comando acima.
Clonagem de tabela usando o COMANDO SELECT
Essa abordagem usa o comando SELECT para criar uma cópia da tabela existente em uma nova tabela.
Com essa abordagem, os dados da tabela também são copiados para a nova tabela.
CREATE TABLE tableName1 AS SELECT * FROM tableName2;
Vamos tentar criar uma tabela chamada employee_details e usar esta tabela para criar uma nova tabela chamada student_details usando a opção SELECT.
CREATE TABLE SAMPLE_DB.student_details AS SELECT * FROM SAMPLE_DB.employee_details;
Convenções de nomenclatura de tabela MySQL
Nas seções anteriores, aprendemos sobre como criar tabelas MySQL. Agora vamos ver algumas regras que devem ser mantidas em mente ao nomear as tabelas, juntamente com as restrições que se aplicam ao MySQL.
Essas convenções / regras se aplicam a tabelas SQL e também a bancos de dados.
# 1) Personagens legais em nomes
para) Nomes sem aspas podem consistir em quaisquer caracteres no conjunto de caracteres padrão do SQL Server, com a exceção de que nem todos os caracteres podem ser dígitos. Por exemplo, '23test' é um nome de tabela válido, mas não '2345'.
A seguir está a lista de caracteres que podem ser usados para nomes não citados:
ASCII: (0-9, a-z, A-Z $ _) (letras latinas básicas, dígitos 0-9, dólar, sublinhado)
Estendido: U + 0080 .. U + FFFF
Saiba mais sobre os códigos ASCII aqui
b) Nomes de tabelas e bancos de dados podem ser citados com um caractere de crase (`) e podem conter qualquer letra / caractere, exceto o próprio caractere de crase. Com os nomes citados, você pode até ter nomes de tabelas / bancos de dados com todos os dígitos.
Observe que, para tais tabelas, você precisará usar crases ao redor da tabela e / ou nome do banco de dados para acessar os dados dentro de tais tabelas.
c) Os nomes de tabelas e bancos de dados não podem conter o ponto '.', Pois é usado como banco de dados e separador de tabela.
d) Os nomes do banco de dados e da tabela podem conter - caracteres especiais ‘$’ e ‘_’.
# 2) Comprimento do nome
O comprimento máximo permitido para um banco de dados ou nome de tabela no MySQL é 64 personagens.
# 3) Qualificadores de nome
Conforme discutido nas seções anteriores, no MySQL, uma tabela está sempre no contexto do banco de dados do qual faz parte. Portanto, para acessar uma tabela, você pode usar um nome de tabela totalmente qualificado - que nada mais é do que a combinação do nome do banco de dados separado por um ponto e o nome da coluna.
Por exemplo, para selecionar todos os elementos da tabela ‘EMPLOYEE_DETAILS’ do banco de dados SAMPLE_DB, você pode usar um nome totalmente qualificado conforme abaixo.
SELECT * from SAMPLE_DB.EMPLOYEE_DETAILS;
Os nomes do banco de dados e da tabela também podem ser especificados como citados com crases separadamente, conforme mostrado abaixo.
SELECT * from `SAMPLE_DB`.`EMPLOYEE_DETAILS`;
As convenções e melhores práticas recomendadas pela indústria em torno das tabelas de nomenclatura e bancos de dados são fornecidas abaixo.
- Tabelas de nomes e bancos de dados em letras minúsculas - Isso geralmente acelera a digitação e consulta do banco de dados, especialmente para aqueles envolvidos nas consultas diárias do banco de dados.
- Use sublinhados (‘_’) em vez de espaços em nomes de tabelas e bancos de dados - Isso torna os nomes mais legíveis.
- Use nomes autoexplicativos para as tabelas e bancos de dados - Por exemplo, uma tabela contendo detalhes do funcionário pode ser nomeada de diferentes maneiras, como funcionário_info, funcionário_dados, funcionário, detalhes_de_funcionário, nome_do_comprador e endereço. Faria sentido escolher um nome que seja mais autoexplicativo. Por exemplo, podemos escolher o nome da tabela como employee_details ou employee_info. Embora seja uma discussão subjetiva, ela deve ser acordada por vários membros da equipe que usarão e criarão essas entidades.
- Evite usar números em nomes de banco de dados e tabelas - Como sample_db_2, test_table_1 etc.
Perguntas e respostas mais frequentes
P # 1) Como criar uma tabela no MySQL usando o índice?
Responda: Você pode adicionar um INDEX a qualquer coluna (ou combinação de colunas) durante a própria criação da tabela.
Vejamos um exemplo de adição de um índice contra a coluna department_id para a tabela employee_details.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int, age int, address varchar(100), department_id int, index(department_id) );
Q # 2) Como criar uma tabela com data no MySQL?
Responda: Data é um tipo de dados que deve ser associado a qualquer coluna ao criar uma tabela.
Consulte a amostra de comando CREATE TABLE abaixo com a coluna joining_date tendo DATETIME como o tipo de dados para uma tabela de amostra employee_details.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int primary key, age int, address varchar(100), joining_date datetime, department_id int );
P # 3) Como posso ver a estrutura da tabela no MySQL?
Responda: Depois de criar uma tabela, se você quiser se referir à estrutura da tabela como colunas, índices, etc, você pode usar o comando DESCRIBE para buscar os detalhes.
Sintaxe:
DESCRIBE tableName;
Vamos criar uma tabela e ver a saída para o comando DESCRIBE.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int primary key, age int, address varchar(100), department_id int ); DESCRIBE sample_db.employee_details;
A seguir está a saída do comando DESCRIBE.
P # 4) Como adiciono uma CHAVE ESTRANGEIRA a uma tabela no MySQL?
Responda: A chave estrangeira é usada para vincular 2 tabelas no MySQL. Para usar a restrição de chave estrangeira, você já deve ter criado a tabela à qual está se referindo.
>> Saiba mais sobre Restrição de chave estrangeira MySQL
Vamos tentar entender isso com um exemplo. Digamos que temos 2 tabelas, ou seja, Departamento (que contém detalhes sobre os vários departamentos que a faculdade possui) e Detalhes do aluno (todos os detalhes relativos aos alunos).
Departamento tem colunas - id (chave primária) e nome.
Dados do aluno - id (chave primária), idade, endereço e departamento_id (chave estrangeira referenciada na tabela Departamento).
A seguir está a sintaxe do comando CREATE TABLE para ambas as tabelas.
CREATE TABLE department ( name varchar(100), id INT NOT NULL, PRIMARY KEY (id) ); CREATE TABLE student_details ( name varchar(100), id int not null, age int, address varchar(100), department_id int, PRIMARY KEY (id), FOREIGN KEY (department_id) references department(id) ON DELETE CASCADE );
Consulte a sintaxe da referência FOREIGN KEY na tabela student_details onde mencionamos a relação entre as colunas e department_id deve ser referenciado pelo id de coluna da tabela de departamento.
fila de ponteiros c ++
Conclusão
O comando CREATE TABLE no MySQL que pertence aos comandos na categoria de Linguagem de Definição de Dados foi explicado em detalhes aqui.
Aprendemos sobre as diferentes opções de tabela, como ENGINE, CHECKSUM, etc, que podem ser mencionadas junto com o comando CREATE TABLE para que propriedades adicionais sejam definidas para a tabela.
Percorremos as maneiras de criar um clone da tabela existente no MySQL. Por fim, falamos sobre as convenções de nomenclatura para os nomes das tabelas, juntamente com as melhores práticas recomendadas pelo setor.
Leitura feliz!!
Leitura recomendada
- Tutorial de criação de visualização do MySQL com exemplos de código
- Tipos de dados MySQL | Quais são os diferentes tipos de dados no MySQL
- MySQL Insert Into Table - sintaxe e exemplos de instruções de inserção
- Tutorial do MySQL JOIN: interno, externo, cruzado, esquerdo, direito e próprio
- Diferença entre SQL Vs MySQL Vs SQL Server (com exemplos)
- Como usar a instrução PL SQL Insert, Update, Delete and Select
- MongoDB Create Database Tutorial
- MongoDB criar usuário e atribuir funções com exemplos