Introdução
O MySQL mantém os dados que gerencia em tabelas e bancos de dados. As tabelas armazenam dados em esquemas predefinidos de colunas e tipos de dados. Os bancos de dados são uma estrutura que pode conter várias tabelas, índices, procedimentos e ajudar a definir um escopo para privilégios, personalizações e muito mais.
Neste guia, mostraremos como criar tabelas e bancos de dados no MySQL. Mostraremos como gerenciar alguns recursos de ambas as estruturas e, em seguida, abordaremos como removê-los para limpar se você não precisar mais deles.
Pré-requisitos
Para seguir este guia, você precisará fazer login em um servidor MySQL com um usuário com privilégios administrativos usando o
mysql
cliente de linha de comando. Se você não quiser fazer login com o
root
conta administrativa do MySQL, seu usuário precisará pelo menos do CREATE
privilégio para executar as ações descritas neste guia. Você pode verificar os privilégios disponíveis do seu usuário digitando:
SHOW GRANTS\G
Como você cria um novo banco de dados?
A primeira coisa que demonstraremos como fazer é criar um novo banco de dados. No MySQL, os bancos de dados contêm tabelas, índices, procedimentos e outros recursos normalmente relacionados a um único projeto. Cada um desses recursos deve ser criado em um banco de dados, portanto, aprender como criar um novo banco de dados é um bom primeiro passo.
A sintaxe básica usada para criar um novo banco de dados é assim:
CREATE DATABASE <db_name>;
Substitua
<db_name>
com o nome que você deseja dar ao seu banco de dados antes de executar o comando. Este comando criará um banco de dados com o nome fornecido e definirá o usuário atual como proprietário do novo banco de dados. O banco de dados usará os padrões de todo o sistema para as propriedades de conjunto de caracteres, agrupamento e criptografia:
- CONJUNTO DE CARACTERES: define o conjunto de caracteres para o novo banco de dados. Esta é uma opção de localização que afeta quais caracteres são considerados maiúsculas, minúsculas e dígitos.
- RECOLHER: define o agrupamento , ou ordem de classificação para o banco de dados. Esta é uma opção de localização que determina como os itens são organizados quando são pedidos.
- CRIPTAÇÃO: define a criptografia para o novo banco de dados. Esta é uma opção booleana que pode ser 'S' para sim ou 'N' para não.
Você pode encontrar os conjuntos de caracteres disponíveis para sua instalação digitando:
SHOW CHARACTER SET;
Da mesma forma, você pode encontrar os agrupamentos disponíveis digitando:
SHOW COLLATION;
Se você deseja especificar um valor não padrão para um desses parâmetros, pode fazê-lo adicionando-os após a instrução de criação principal como esta:
CREATE DATABASE <db_name> CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_0900_ai_ci' ENCRYPTION = 'Y';
Para acompanhar os exemplos deste guia, crie um banco de dados chamado
school
usando as configurações de localidade padrão da sua instância e o conjunto de caracteres UTF8:CREATE DATABASE school CHARACTER SET = 'utf8mb4';
Isso criará seu novo banco de dados usando as especificações que você forneceu.
Lista de bancos de dados existentes
Para listar os bancos de dados disponíveis em seu servidor, digite:
SHOW DATABASES;
Isso listará cada um dos bancos de dados atualmente definidos no ambiente:
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
Você pode verificar se as configurações fornecidas foram aplicadas à nova
school
banco de dados usando o SHOW CREATE DATABASE
comando:SHOW CREATE DATABASE school;
A saída exibirá o comando e as opções usadas para criar o banco de dados, preenchendo as opções com os valores padrão aplicados:
+----------+----------------------------------------------------------------------------------------------------------------------------------+ Database | Create Database |+----------+----------------------------------------------------------------------------------------------------------------------------------+ school | CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |+----------+----------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)
Como mudar para um banco de dados diferente no MySQL
Uma vez que seu banco de dados é criado, você pode trabalhar com ele de algumas maneiras diferentes.
A primeira opção é especificar o banco de dados como um argumento em cada comando que você usa. Para economizar tempo se você estiver executando vários comandos relacionados aos objetos do banco de dados, você também pode "mudar para" ou "usar" o banco de dados para definir seu novo banco de dados como o contexto padrão para qualquer comando relacionado ao banco de dados que você estiver executando .
Para mudar para um banco de dados diferente, digite:
USE <db_name>;
No nosso caso, podemos mudar para a
school
banco de dados que criamos digitando:USE school;
Criar tabelas dentro de bancos de dados
Depois de criar um banco de dados, você pode definir tabelas e outros objetos internos para armazenar e gerenciar seus dados. No MySQL, as tabelas consistem em um nome de tabela, as definições de coluna (que, por sua vez, incluem nomes, tipos de dados e restrições, entre outros) e opções de tabela.
Qual é a sintaxe de CREATE TABLE
do MySQL comando?
A sintaxe básica para criar tabelas usando
CREATE TABLE
do MySQL comando fica assim:CREATE TABLE <table_name> ( <column_name> <data_type> [<column_constraint>], [<table_constraint>,]);
Podemos dividir o modelo de comando acima nos seguintes componentes:
CREATE TABLE <table_name>
:A declaração básica de criação. O<table_name>
placeholder deve ser substituído pelo nome da tabela que você deseja usar.<column_name> <data_type>
:define uma coluna básica dentro da tabela. O<column_name>
placeholder deve ser substituído pelo nome que você deseja usar para sua coluna. O<data_type>
especifica o tipo de dados MySQL da coluna. Os dados armazenados na tabela devem estar em conformidade com a estrutura da coluna e os tipos de dados da coluna para serem aceitos.<column_constraint>
:Restrições de coluna são restrições opcionais que adicionam requisitos adicionais para dados. Por exemplo, você pode exigir que as entradas não sejam nulas, únicas ou números inteiros positivos.<table_constraint>
:as restrições de tabela são semelhantes às restrições de coluna, mas envolvem a interação de várias colunas. Por exemplo, você pode ter uma restrição de tabela que verifica se umDATE_OF_BIRTH
é anterior aDATE_OF_DEATH
em uma tabela.
Como você cria tabelas somente se elas ainda não existirem?
O comportamento padrão do MySQL é gerar um erro se você tentar criar uma tabela que já existe. No entanto, o opcional
IF NOT EXISTS
cláusula pode ser adicionada à instrução de criação para substituir esse comportamento. Você pode usar o
IF NOT EXISTS
cláusula inserindo-a no comando após o CREATE TABLE
frase, mas antes do nome da tabela:CREATE TABLE IF NOT EXISTS table_name ( column_name TYPE [column_constraint], [table_constraint,]);
Isso modificará o comportamento do comando da seguinte forma:Se o nome da tabela especificada já existir, o MySQL emitirá um aviso em vez de um erro. O restante do comportamento do comando permanece o mesmo.
Criando tabelas em bancos de dados MySQL
O modelo de comando fornecido acima é suficiente para criar tabelas básicas. Para aprofundar nosso exemplo, criaremos duas tabelas em nossa
school
base de dados. Uma tabela será chamada de supplies
e o outro será chamado de teachers
:Nos
supplies
tabela, incluiremos os seguintes campos:- código: Um ID exclusivo para cada tipo de material escolar.
- nome: O nome de um item escolar específico.
- descrição: Uma breve descrição do item.
- fabricante: O nome do fabricante do item.
- cor: A cor do item.
- inventário: O número de itens que temos para um determinado tipo de material escolar. Isso nunca deve ser menor que 0.
Podemos criar os
supplies
tabela com as qualidades acima usando o seguinte SQL:CREATE TABLE supplies ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), description VARCHAR(255), manufacturer VARCHAR(255), color VARCHAR(255), inventory INT CHECK (inventory >= 0));
Isso criará os
supplies
tabela dentro da school
base de dados. A PRIMARY KEY
restrição de coluna é uma restrição especial usada para indicar colunas que podem identificar exclusivamente registros dentro da tabela. Como tal, a restrição especifica que a coluna não pode ser nula e deve ser exclusiva. O MySQL cria índices para colunas de chave primária para aumentar a velocidade de consulta. Verifique se a nova tabela está presente digitando:
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies |+------------------+1 row in set (0.01 sec)
Você pode verificar se o esquema reflete sua definição digitando:
SHOW CREATE TABLE supplies\G
*************************** 1. row *************************** Table: suppliesCreate Table: CREATE TABLE `supplies` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `description` varchar(255) DEFAULT NULL, `manufacturer` varchar(255) DEFAULT NULL, `color` varchar(255) DEFAULT NULL, `inventory` int DEFAULT NULL, PRIMARY KEY (`id`), CONSTRAINT `supplies_chk_1` CHECK ((`inventory` >= 0))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.00 sec
As colunas, tipos de dados e restrições que especificamos estão presentes na saída, embora a ordenação e a exibição possam ser diferentes.
Em seguida, crie um
teachers
tabela. Nesta tabela, as seguintes colunas devem estar presentes:- código :um número de identificação de funcionário exclusivo.
- nome_nome :o primeiro nome do professor.
- sobrenome :o sobrenome do professor.
- assunto :o assunto que o professor é contratado para ensinar.
- nível_classe :a série dos alunos que o professor é contratado para ensinar.
Crie os
teachers
table com o esquema acima com o seguinte SQL:CREATE TABLE teachers ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255), subject VARCHAR(255), grade_level INT);
Como criar tabelas com chaves primárias e chaves estrangeiras
Você pode encontrar informações sobre como criar tabelas com chaves primárias e estrangeiras em alguns de nossos outros guias MySQL. Chaves primárias e chaves estrangeiras são ambos os tipos de restrição de banco de dados no MySQL.
Uma chave primária é uma coluna ou coluna especial com garantia de exclusividade nas linhas da mesma tabela. Todas as chaves primárias podem ser usadas para identificar exclusivamente uma linha específica. As chaves primárias não apenas garantem que cada linha tenha um valor exclusivo para as colunas de chave primária, mas também garantem que nenhuma linha contenha
NULL
valores para essa coluna. Freqüentemente, a chave primária no MySQL usa o seguinte formato para especificar uma chave primária de incremento atribuída automaticamente:id INT AUTO_INCREMENT PRIMARY KEY
. As chaves estrangeiras são uma maneira de garantir que uma coluna ou colunas em uma tabela correspondam aos valores contidos em outra tabela. Isso ajuda a garantir a integridade referencial entre as tabelas.
Como visualizar tabelas no MySQL
No MySQL, você pode listar tabelas de algumas maneiras diferentes, dependendo de quais informações você está procurando.
Se você quiser ver quais tabelas estão disponíveis em seu banco de dados, digite:
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies | teachers |+------------------+2 rows in set (0.00 sec)
Você também pode verificar se o esquema da tabela corresponde às suas especificações:
DESCRIBE teachers;
+--------------+--------------+------+-----+---------+----------------+ Field | Type | Null | Key | Default | Extra |+--------------+--------------+------+-----+---------+----------------+ id | int | NO | PRI | NULL | auto_increment | name | varchar(255) | YES | | NULL | | description | varchar(255) | YES | | NULL | | manufacturer | varchar(255) | YES | | NULL | | color | varchar(255) | YES | | NULL | | inventory | int | YES | | NULL | |+--------------+--------------+------+-----+---------+----------------+6 rows in set (0.00 sec)
Os
teachers
tabela parece corresponder à nossa definição. Como alterar tabelas com o ALTER TABLE
comando
Se você precisar alterar o esquema de uma tabela existente no MySQL, você pode usar o
ALTER TABLE
comando. A ALTER TABLE
comando é muito semelhante ao CREATE TABLE
comando, mas opera em uma tabela existente. Alterar sintaxe da tabela
A sintaxe básica para modificar tabelas no MySQL é assim:
ALTER TABLE <table_name> <change_command> <change_parameters>;
O
<change_command>
indica o tipo exato de alteração que você gostaria de fazer, se envolve definir opções diferentes na tabela, adicionar ou remover colunas ou alterar tipos ou restrições. O <change_parameters>
parte do comando contém qualquer informação adicional que o MySQL precisa para completar a mudança. Adicionar colunas a tabelas
Você pode adicionar uma coluna a uma tabela MySQL com o
ADD
comando de mudança. Os parâmetros de alteração incluirão o nome da coluna, o tipo e as opções, assim como você os especificaria no CREATE TABLE
comando. Por exemplo, para adicionar uma coluna chamada
missing_column
do text
digite para uma tabela chamada some_table
, você digitaria:ALTER TABLE some_table ADD missing_column text;
Removendo colunas de tabelas
Se, em vez disso, você quiser remover uma coluna existente, poderá usar o
DROP COLUMN
comando em vez disso. Você precisa especificar o nome da coluna que deseja remover como parâmetro de alteração:ALTER TABLE some_table DROP COLUMN useless_column;
Alterando o tipo de dados de uma coluna
Para alterar o tipo de dados de uma coluna, você pode usar
ALTER COLUMN
comando de mudança com o MODIFY COLUMN
comando de coluna. Os parâmetros neste contexto incluem o nome da coluna e seu novo tipo:ALTER TABLE resident MODIFY COLUMN id INT;
Outras alterações de tabela
Muitos outros tipos de mudanças podem ser alcançados com o
ALTER TABLE
comando. Para mais informações sobre as opções disponíveis, confira a documentação oficial do MySQL para ALTER TABLE
. Soltar tabelas
Se você quiser deletar uma tabela, você pode usar o
DROP TABLE
instrução SQL. Isso excluirá a tabela, bem como todos os dados armazenados nela. A sintaxe básica fica assim:
DROP TABLE <table_name>;
Isso excluirá a tabela se ela existir e gerará um erro se o nome da tabela não existir.
Se você deseja excluir a tabela se ela existir e não fazer nada se ela não existir, você pode incluir o
IF EXISTS
qualificador dentro da declaração:DROP TABLE IF EXISTS <table_name>;
As tabelas que têm dependências de outras tabelas ou objetos não podem ser excluídas por padrão enquanto essas dependências existirem.
Exclua os
supplies
tabela que criamos anteriormente digitando:DROP TABLE supplies;
Manteremos os
teachers
database para demonstrar que a instrução para excluir bancos de dados também remove todos os objetos filho, como tabelas. Descartar bancos de dados
O
DROP DATABASE
instrução diz ao MySQL para excluir o banco de dados especificado. A sintaxe básica fica assim:DROP DATABASE <database_name>;
Substitua o
<database_name>
placeholder com o nome do banco de dados que você deseja remover. Isso excluirá o banco de dados se ele for encontrado. Se o banco de dados não puder ser encontrado, ocorrerá um erro:DROP DATABASE some_database;
ERROR 1008 (HY000): Can't drop database 'some_database'; database doesn't exist
Se você deseja excluir o banco de dados se ele existir e não fazer nada, inclua o opcional
IF EXISTS
opção:DROP DATABASE IF EXISTS some_database;
Query OK, 0 rows affected, 1 warning (0.00 sec)
Isso removerá o banco de dados ou não fará nada se ele não puder ser encontrado.
Para remover a
school
banco de dados que usamos neste guia, liste os bancos de dados existentes em seu sistema:SHOW DATABASES;
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
Excluir a
school
banco de dados com o seguinte comando:DROP DATABASE school;
Isso removerá a
school
banco de dados junto com os teachers
tabela definida dentro. Conclusão
Este artigo abordou os conceitos básicos de como criar e excluir bancos de dados e tabelas com o MySQL. Estes são alguns dos comandos mais básicos necessários para configurar um sistema de banco de dados e definir a estrutura de seus dados.
Como mencionado anteriormente, as instruções SQL abordadas neste tutorial do MySQL, particularmente o
CREATE TABLE
declaração, tem muitos parâmetros adicionais podem ser usados para alterar o comportamento do sistema. Você pode descobrir mais sobre isso verificando a documentação oficial do MySQL.