Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como criar uma tabela em SQL – Postgres e MySQL Exemplo de consulta


Saber como criar tabelas em SQL é um conceito importante e fundamental.

Neste tutorial, mostrarei o SQL sintaxe para o CREATE TABLE usando exemplos de código para PostgreSQL e MySQL.

Basic CREATE TABLE Sintaxe


Aqui está a sintaxe básica para CREATE TABLE demonstração:
CREATE TABLE table_name(
	column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc
);

Para a primeira parte, você precisa começar com o CREATE TABLE instrução seguida pelo nome da tabela que você deseja criar.

Se eu quisesse criar uma tabela de informações do professor, escreveria algo assim:
CREATE TABLE teachers();

Dentro dos parênteses, você adicionará as informações para criar as colunas da tabela. Se você esquecer o parêntese, receberá uma mensagem de erro.
CREATE TABLE teachers;

O ponto e vírgula no final dos parênteses informa ao computador que é o final do SQL demonstração. Às vezes, você ouvirá isso chamado de terminador de instrução.

O que são MySQL mecanismos de armazenamento?


De acordo com o MySQL documentação:
Mecanismos de armazenamento são componentes MySQL que lidam com operações SQL para diferentes tipos de tabelas.

MySQL usa esses mecanismos de armazenamento para executar operações CRUD (criar, ler, atualizar e excluir) no banco de dados.

Em MySQL , você tem a opção de especificar o tipo de mecanismo de armazenamento que deseja usar para sua tabela. Se você omitir o ENGINE cláusula então o padrão será InnoDB.
CREATE TABLE table_name(
	column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc
)ENGINE=storage_engine;

O que é IF NOT EXISTS cláusula?


Existe uma cláusula opcional chamada IF NOT EXISTS que irá verificar se a tabela que você deseja criar já existe no banco de dados. Você pode colocar essa cláusula logo antes do nome da tabela.
CREATE TABLE IF NOT EXISTS teachers();

Se a tabela já existir, o computador não criará uma nova tabela.

Se você omitir o IF NOT EXISTS cláusula e tentar criar uma tabela que já existe no banco de dados, você receberá uma mensagem de erro.

Neste exemplo, primeiro criei uma tabela chamada professores. Mas se eu tentar criar essa mesma tabela no próximo comando, encontrarei um erro.
CREATE TABLE IF NOT EXISTS teachers();
CREATE TABLE teachers();

Como criar colunas na tabela


Dentro dos parênteses para CREATE TABLE , você listará os nomes das colunas que deseja criar junto com seus tipos de dados e restrições.

Este é um exemplo de como podemos adicionar quatro colunas de school_id , name , email e age à mesa dos nossos professores. Cada nome de coluna deve ser separado por vírgulas.
CREATE TABLE teachers(
	school_id data_type column_constraint, 
	name data_type column_constraint,
    email data_type column_constraint, 
	age data_type column_constraint
);

De acordo com o MySQL documentação:
O MySQL tem um limite rígido de 4096 colunas por tabela, mas o máximo efetivo pode ser menor para uma determinada tabela. O limite exato da coluna depende de vários fatores.

Se você estiver trabalhando em MySQL menores projetos pessoais, então você provavelmente não terá que se preocupar em exceder o número de colunas para suas tabelas.

De acordo com a documentação do PostgreSQL, há um limite de 1600 colunas por tabela. Semelhante a MySQL , um limite exato pode variar dependendo do espaço em disco ou das restrições de desempenho.

Tipos de dados em SQL


Ao criar colunas na tabela, você precisa atribuir a ela um tipo de dados. Os tipos de dados descrevem o tipo de valor dentro das colunas.

Aqui estão seis categorias populares de tipos de dados em SQL :
  1. Numérico (int, float, serial, decimal, etc)
  2. Dados e hora (timestamp, data, hora, etc)
  3. Caractere e string (char, varchar, text, etc)
  4. Unicode (ntext, nvarchar, etc.)
  5. Binário (binário, etc.)
  6. Diversos (xml, tabela, etc.)

Este artigo não abordará todos os tipos de dados, mas abordará alguns dos mais populares.

Aqui está a lista completa de PostgreSQL tipos de dados e MySQL tipos de dados.

O que é SERIAL e AUTO_INCREMENT ?


Em PostgreSQL , um SERIAL tipo de dados é um número inteiro que será incrementado automaticamente em um para cada nova linha criada.

Podemos adicionar SERIAL logo após o school_id coluna em nossa tabela de professores.
school_id SERIAL

Em MySQL , você usaria AUTO_INCREMENT em vez de SERIAL . Neste exemplo, o INT tipo de dados é usado que representa um inteiro.
school_id INT AUTO_INCREMENT

Se adicionarmos cinco linhas à nossa tabela de professores, a saída mostrará os números de 1, 2, 3, 4, 5 para o school_id coluna porque o número inteiro é incrementado automaticamente em um para cada nova linha.

O que é o VARCHAR tipo de dados?


Um VARCHAR tipo de dados é um comprimento de string variável onde você pode definir um comprimento máximo de caracteres.

Este é um exemplo de uso do VARCHAR tipo de dados para o name e email colunas na nossa tabela de professores. O número 30 é o comprimento máximo de caracteres.
name VARCHAR(30) column_constraint,
email VARCHAR(30) column_constraint,

Restrições de coluna no SQL


Essas são regras aplicadas aos dados dentro das colunas da tabela.

Aqui está uma lista de algumas das restrições de coluna mais comuns:
  • CHAVE PRIMÁRIA - esta chave serve como um identificador exclusivo para a tabela
  • FOREIGN KEY - esta chave garante que os valores de uma coluna também estejam presentes em outra tabela. Isso serve como um link entre as tabelas.
  • ÚNICO - todos os valores na coluna precisam ser únicos
  • NOT NULL - os valores não podem ser NULL. NULL é a ausência de um valor
  • CHECK - testa um valor em relação a uma expressão booleana

Exemplos de PRIMARY e FOREIGN teclas


Em nossa tabela de professores, podemos adicionar uma PRIMARY KEY para o school_id coluna.

É assim que o código ficaria no PostgreSQL:
 school_id SERIAL PRIMARY KEY

É assim que o código ficaria no MySQL:
school_id INT AUTO_INCREMENT PRIMARY KEY

Se você quiser ter mais de uma coluna para a PRIMARY KEY , você o adicionaria logo após a criação da coluna.
CREATE TABLE table_name(
	column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc
    PRIMARY KEY (column1, column2)
);

Se você deseja vincular uma tabela a outra, pode usar uma FOREIGN KEY .

Digamos que tenhamos uma tabela chamada district_employees com uma chave primária de district_id . Aqui está como o código ficaria no PostgreSQL:
CREATE TABLE district_employees(
   district_id SERIAL PRIMARY KEY,
   employee_name VARCHAR(30) NOT NULL,
   PRIMARY KEY(district_id)
);

Em nossa tabela de professores, podemos usar uma chave estrangeira e referenciar a tabela district_employees.
district_id INT REFERENCES district_employees(district_id),
CREATE TABLE teachers(
    school_id SERIAL PRIMARY KEY,
    district_id INT REFERENCES district_employees(district_id),
    column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc 
);

Exemplos de NOT NULL , CHECK e UNIQUE


Se quisermos garantir que não temos nenhum valor nulo, podemos usar o NOT NULL limitação.
name VARCHAR(30) NOT NULL

Podemos usar o CHECK restrição para garantir que todos os nossos professores tenham 18 anos ou mais. O CHECK restrição testa um valor em relação a uma expressão booleana.
age INT CHECK(age >= 18)

Se um de nossos valores não atender a essa condição, receberemos uma mensagem de erro.

Podemos usar o UNIQUE restrição para garantir que todos os emails sejam exclusivos.
email VARCHAR(30) UNIQUE

Este é o resultado final para a tabela dos professores:

É assim que o código ficaria no PostgreSQL:
CREATE TABLE teachers(
	school_id SERIAL PRIMARY KEY,
	name VARCHAR(30) NOT NULL,
    email VARCHAR(30) UNIQUE,
	age INT CHECK(age >= 18)      
);

É assim que o código ficaria no MySQL:
CREATE TABLE teachers(
	school_id INT AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(30) NOT NULL,
    email VARCHAR(30) UNIQUE,
	age INT CHECK(age >= 18)      
);

Espero que você tenha gostado deste artigo e boa sorte em sua jornada SQL.