mysql alter table how add column table mysql
Saiba mais sobre o comando MySQL ALTER Table para adicionar / eliminar uma coluna, índice, restrição, alterar o nome da tabela, etc. com exemplos:
MySQL ALTER comando é usado para modificar uma tabela existente adicionando uma nova coluna ou removendo uma coluna existente ou alterando o tipo de dados da coluna.
Simplesmente falando, o comando ALTER é usado para modificar a estrutura de uma tabela existente, adicionando / removendo / atualizando colunas, renomeando tabelas, etc.
É quase impossível que todos os requisitos para um determinado esquema estejam disponíveis de antemão, portanto, é imperativo que haja uma maneira de atualizar a estrutura da tabela conforme necessário.
O que você aprenderá:
MySQL ALTER TABLE
SINTAXE:
ALTER TABLE table_name (alter_option1, alter_option2...)
Aqui table_name é o nome da tabela na qual queremos realizar a ação de alteração. Uma ou mais alter_options podem ser especificadas junto com o ALTERAR A TABELA comando.
Vejamos diferentes alter_options usadas principalmente fornecidas pelo MySQL.
Dados de amostra e configuração de tabela
Com o objetivo de compreender os diferentes usos do IDADE comando, usaremos 2 tabelas de amostra - Funcionário e Departamento tendo a estrutura mencionada a seguir.
Também estamos adicionando alguns dados fictícios a ambas as tabelas.
Não adicionamos nenhuma restrição FOREIGN KEY entre essas tabelas. Aprenderemos a adicioná-los usando o comando ALTER nos exemplos mostrados nas seções abaixo, conforme discutiremos.
CREATE TABLE IF NOT EXISTS Employee_Department ( id INT, name VARCHAR(100), PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS Employee ( name VARCHAR(100), id INT, address VARCHAR(100), department_id INT, PRIMARY KEY (id) ); INSERT INTO `employee_department`(`name`,`id`) VALUES ('Information Technology',1),('HR',2),('Finance',3),('Accounting',4),('Housekeeping',5 ),('Security',6),('Support',7),('Contract Staff',8),('Sales',9),('Management',10); INSERT INTO `employee` (`id`,`name`,`address`) VALUES (1,'Alyssa Villarreal','Ap #558-3012 Nulla Street'),(2,'Vanna Parks','103-986 Cursus Rd.'),(3,'Quyn Byers','770 Nulla Avenue'),(4,'Kristen Hall','Ap #622-9967 Nullam St.'),(5,'Chelsea Stone','6017 Elementum St.'),(6,'Sacha Sweeney','239-7402 Etiam St.'),(7,'Sophia Charles','799 -745 Tellus. Rd.'),(8,'Jennifer Joyner','5803 Ligula. Avenue'),(9,'Mercedes Head','Ap #375-7999 Facilisis Rd.'),(10,'Reagan Holland','P.O. Box 625, 5744 Proin Avenue');
Diferentes maneiras de usar o comando ALTER Table
O MySQL ALTER O comando pode ser usado para várias coisas, como adicionar / remover uma coluna, adicionar / remover índice ou restrição e atualizar a própria tabela. Vejamos diferentes cenários com a ajuda de exemplos.
ADICIONE COLUNA
Com as tabelas de exemplo acima, vamos adicionar uma nova coluna chamada ‘department_id’ do tipo INT na tabela Employee.
ALTER TABLE employee ADD COLUMN department_id INT
DROP COLUMN
Semelhante a adicionar uma nova coluna, o MySQL ALTER comando pode ser usado para remover uma coluna existente da tabela.
Tente remover a coluna department_id adicionada acima da tabela Employee.
ALTER TABLE employee DROP COLUMN department_id
Observe que, ao eliminar COLUMN, você só precisa mencionar o nome da coluna e não seu tipo de dados.
Para validar se o comando ALTER foi bem-sucedido, você pode executar o comando SHOW COLUMNS.
SHOW COLUMNS FROM employee;
Resultado:
Campo | Modelo | Nulo | Chave | Predefinição | Extra |
---|---|---|---|---|---|
nome | varchar (100) | SIM | NULO | ||
eu ia | int | SIM | NULO | ||
Morada | varchar (100) | SIM | NULO |
Você pode ver que não há coluna department_id na tabela ‘Employee’ agora.
Adicionar / eliminar restrições
Vamos agora ver como ALTER pode ser usado para adicionar uma restrição.
O comando ALTER pode ser usado para adicionar ou remover restrições para uma tabela existente. Vamos ver um exemplo de uma restrição FOREIGN KEY que precisa ser adicionada entre 2 tabelas.
Usaremos o comando ALTER para adicionar FOREIGN KEY CONSTRAINT na tabela Employee para a tabela employee_department.
Adicione uma nova coluna chamada department_id na tabela Employee.
ALTER TABLE employee ADD COLUMN department_id INT
Agora, adicione a restrição FOREIGN KEY.
ALTER TABLE employee ADD FOREIGN KEY (department_id) REFERENCES employee_department(id)
Para validar essa restrição, podemos usar o comando SHOW para ver a definição da tabela.
SHOW CREATE TABLE employee;
Mesa | Criar a tabela |
---|---|
empregado | CRIAR TABELA `funcionário` ( `nome` varchar (100) DEFAULT NULL, `id` int DEFAULT NULL, `address` varchar (100) DEFAULT NULL, `departamento_id` int DEFAULT NULL, CHAVE `departamento_id` (` departamento_id`), CONSTRAINT `employee_ibfk_1` FOREIGN KEY (` department_id`) REFERÊNCIAS `employee_department` (` id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Você verá que há uma restrição FOREIGN KEY criada na coluna department_id.
Vamos agora ver como podemos usar o comando ALTER para remover a restrição FOREIGN KEY que acabamos de adicionar.
ALTER TABLE employee DROP CONSTRAINT employee_ibfk_1
Observe que você precisará usar o nome da restrição que foi criada. Portanto, na saída do comando SHOW acima, você pode ver que o nome da restrição que o MySQL criou para a restrição FOREIGN KEY é ‘ funcionário_ibfk_1 ’
Execute o comando SHOW para ver se a restrição foi removida conforme mostrado abaixo:
SHOW CREATE TABLE employee;
Mesa | Criar a tabela |
---|---|
empregado | CRIAR TABELA `funcionário` ( `nome` varchar (100) DEFAULT NULL, `id` int DEFAULT NULL, `address` varchar (100) DEFAULT NULL, `departamento_id` int DEFAULT NULL, CHAVE `departamento_id` (` departamento_id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Adicionar / eliminar índices
MySQL ALTER O comando table também permite que você crie ou elimine INDEXES em uma tabela.
Pode haver quatro tipos diferentes de índices que podem ser adicionados usando o comando ALTER TABLE.
# 1) Adicionar CHAVE PRIMÁRIA: Este comando adiciona um índice PRIMARY KEY a uma determinada coluna (ou colunas)
No exemplo abaixo, use a tabela Employee e adicione o índice PRIMARY KEY à coluna 'Id'.
ALTER TABLE employee ADD PRIMARY KEY (id);
# 2) Adicionar UNIQUE: Adiciona ou cria um índice exclusivo em relação a determinada (s) coluna (s)
Suponha que hipoteticamente queiramos apenas nomes exclusivos em uma tabela. Adicione um índice UNIQUE na coluna 'nome' na tabela Funcionário, conforme mostrado abaixo.
ALTER TABLE employee ADD UNIQUE (name);
# 3) Adicionar INDEX: Adicione um índice comum a qualquer coluna.
Adicione um índice normal no campo 'endereço' na tabela Funcionário.
ALTER TABLE employee ADD INDEX (name);
# 4) Adicionar índice FULLTEXT: Este é um tipo especial de índice usado para fins de pesquisa de texto.
Estaremos adicionando um índice FULLTEXT aos valores da coluna ‘nome’ na tabela Funcionário.
ALTER TABLE employee ADD FULLTEXT(address);
Para todos os 4 exemplos acima, podemos executar o MOSTRAR CRIAR TABELA comando para obter os detalhes sobre os índices criados.
SHOW CREATE TABLE employee;
Mesa | Criar a tabela |
---|---|
empregado | CRIAR TABELA `funcionário` ( `nome` varchar (100) DEFAULT NULL, `id` int NOT NULL, `address` varchar (100) DEFAULT NULL, `departamento_id` int DEFAULT NULL, CHAVE PRIMÁRIA (`id`), UNIQUE KEY `name` (` name`), CHAVE `nome_2` (` nome`), FULLTEXT KEY `address` (` address`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Na saída acima, você observará que todos os índices foram criados de acordo com o valor na coluna create_table.
Semelhante à criação de índices, o comando ALTER também pode ser usado para eliminar os índices existentes da tabela.
Exemplo:
ALTER TABLE employee DROP INDEX address;
O comando acima irá DROP o índice FULLTEXT que adicionamos para o campo de endereço.
Observe o nome 'Morada'. Isso deve corresponder ao nome do índice na saída do MOSTRAR CRIAR TABELA comando.
Alterar o valor padrão da coluna
ALTERAR A TABELA comando também pode ser usado para definir / alterar o valor DEFAULT para uma coluna existente.
implementando uma pilha c ++
Vejamos um exemplo em que alteraremos o valor padrão da coluna department_id para ‘1’. Com isso, qualquer nova inserção nesta tabela mudaria / definiria o valor da coluna department_id para 1
ALTER TABLE employee ALTER department_id SET DEFAULT 1
Adicione um novo registro à tabela Employee:
INSERT INTO `employee` (`id`,`name`,`address`) VALUES (11,'Saket Sharma','NB 23 Domlur')
E agora vamos consultar o department_id para este registro e ver qual é o valor que está sendo definido.
SELECT department_id FROM employee where id=11 //Output department_id 1
Atualizar o nome da tabela
MySQL ALTER O comando table também pode ser usado para atualizar o nome de uma tabela existente. Às vezes, é necessário atualizar a estrutura do esquema, o que pode envolver a alteração / atualização dos nomes das tabelas.
Exemplo - Iremos renomear a tabela `funcionário` para` detalhes_de_pregados`.
ALTER TABLE table_name RENAME TO new_table_name;
perguntas frequentes
P # 1) Como mudo a estrutura da tabela no MySQL?
Responda: O MySQL fornece o comando ALTER para alterar a estrutura de uma tabela existente no MySQL. Você pode realizar várias operações com o comando ALTER como,
- Adicionando / removendo uma coluna
- Adicionando / removendo índice ou restrição
- Renomeando uma mesa
P # 2) O comando ALTER bloqueia uma tabela?
Responda: Pode depender de versões - com versões anteriores do MySQL Bloqueando uma tabela durante a execução da instrução ALTER. Em geral, o bloqueio aconteceria, ou seja, qualquer leitura e gravação durante ALTER.
Por exemplo - Adicionar uma nova coluna a uma tabela existente afetaria todas as linhas da tabela na qual a coluna está sendo adicionada e, quando a tabela tem um número de registros em milhões, a operação ALTER pode levar algum tempo para ser executada. Neste caso, o Bloqueio ocorrendo nas leituras / gravações seria caro, pois o banco de dados ficaria inativo e inacessível.
P # 3) Podemos adicionar mais de uma coluna na tabela ALTER?
Responda: Sim, o comando ALTER pode ser usado para adicionar várias colunas em uma única instrução.
Vejamos um exemplo onde temos uma tabela Employee com as colunas id, name e address e suponha que queremos adicionar mais 2 colunas chamadas - higher_education (type varchar) e phone_number (type varchar)
ALTER TABLE employee ADD highest_education VARCHAR(50), ADD phone_number VARCHAR(20);
Vamos dar uma olhada nas informações da tabela
SHOW COLUMNS FROM employee;
Resultado:
Campo | Modelo | Nulo | Chave | Predefinição | Extra |
---|---|---|---|---|---|
nome | varchar (100) | SIM | UNIDOS | NULO | |
eu ia | int | NÃO | PRI | NULO | |
Morada | varchar (100) | SIM | NULO | ||
departamento_id | int | SIM | 1 | ||
A mais alta educação | varchar (50) | SIM | NULO | ||
número de telefone | varchar (20) | SIM | NULO |
Na saída acima, você pode ver as colunas, higher_education e phone_number foram adicionados.
Conclusão
Neste tutorial, aprendemos sobre os diferentes usos do MySQL ALTER Comando da Tabela. ALTER é um comando importante, pois pode ser usado para vários propósitos para ALTER a estrutura de uma tabela existente no MySQL.
Pode ser usado para coisas como - adicionar / remover uma coluna, adicionar / eliminar índices ou restrições, e também pode ser usado até mesmo para renomear uma tabela existente.
Qualquer pessoa que esteja aprendendo MySQL deve ter um conhecimento profundo do comando ALTER table, já que ele é usado principalmente durante as fases de manutenção de bancos de dados onde o esquema de tabela existente precisa ser alterado.
Leitura recomendada
- Tutorial de criação de tabela MySQL com exemplos
- MySQL Insert Into Table - sintaxe e exemplos de instruções de inserção
- Tipos de dados MySQL | Quais são os diferentes tipos de dados no MySQL
- Noções básicas da restrição FOREIGN KEY do MySQL com exemplos
- Tutorial do MySQL JOIN: interno, externo, cruzado, esquerdo, direito e próprio
- MySQL Create Database - Como criar um banco de dados no MySQL
- As 40 melhores perguntas e respostas para entrevistas em MySQL (2.021 perguntas)
- Tabela de hash em C ++: programas para implementar tabela de hash e mapas de hash