Article image
Sérgio Junior
Sérgio Junior19/07/2021 15:32
Compartilhe

MySQL – Alterando Estruturas de Dados Com DDL

  • #SQL
  • #Banco de dados relacional
  • #MySQL

Dando continuidade ao nosso tour pelos comandos DDL (Data Definition Language – subconjunto da linguagem SQL) no contexto dos bancos de dados MySQL, vamos verificar agora como podemos fazer uso desses comandos para dar manutenção em estruturas de dados, implementando alterações que se façam necessárias.

No artigo anterior (https://digitalinnovation.one/artigos/mysql-modelando-cadastro-de-dinossauros-com-ddl), vimos como modelar uma estrutura de dados simples, implementando um cadastro de informações sobre dinossauros.

Para os próximos exemplos, vamos criar e ampliar gradativamente uma única tabela, de forma a tornar o processo mais simples para o entendimento. Nossa tabela irá conter informações sobre pessoas e, inicialmente, vamos propositalmente criá-la apenas com dois campos: IdPessoa (chave primária da tabela) e Nome (irá armazenar o nome da pessoa).

image

Vamos supor agora que eu tenha cometido um erro na instrução acima. Eu criei o campo “Nome”, quando, na verdade, minha intenção era criar esse campo com a denominação “NomePessoa”.

Nossa primeira manutenção então será corrigir esse nome, fazendo uma pequena alteração (CHANGE COLUMN) na tabela:

image

Ao executar o comando acima, estou implementando uma mudança na coluna “Nome”, que passará a se chamar “NomePessoa”. Note que, logo após trocar o nome do campo, repetimos o mesmo tipo VARCHAR(80) NOT NULL, ou seja, mesmo mudando de nome, o campo continua sendo texto de no máximo 80 caracteres, e não aceita nulo. Se quiséssemos, poderíamos mudar isso também, mas vamos ver isso um pouco mais adiante.

Imagine agora que um novo requisito tenha surgido e que, para atendê-lo, precisássemos incluir uma nova coluna na tabela para armazenar a idade de cada pessoa. Novamente vamos utilizar o ALTER TABLE, mas agora adicionando uma coluna (ADD COLUMN), que será chamada de “Idade”.

image

Executando o comando acima, o novo campo será criado com sucesso, mas, olhando detalhadamente, você perceberá que novamente um erro foi cometido: cadastramos a idade, uma informação, por padrão, numérica, como sendo um texto -VARCHAR(3). Dessa forma, temos agora que corrigir essa falhar e mudar o tipo desse campo (MODIFY COLUMN):

image

Agora, nossa coluna “Idade” armazena números inteiros.

Ao inserir a coluna para as idades, você deve ter percebido que, por padrão, essa coluna foi adicionada como sendo a última coluna da tabela. Contudo, eventualmente você pode querer que o seu novo campo ocupe uma posição específica ao invés de ser inserido sempre no final.

Para exemplificar isso, vamos inserir uma coluna chamada “DataNascimento”, posicionando-a entre as colunas “NomePessoa” e “Idade”, complementando o comando ADD COLUMN com “AFTER NomePessoa” (o novo campo será inserido após o campo “NomePessoa”).

image

Note que nosso novo campo foi inserido após a coluna “NomePessoa”, ocupando a posição que desejávamos.

Se, por algum motivo, precisássemos alterar a posição desse campo, poderíamos movê-lo fazendo uso do “MODIFY COLUMN”, como no exemplo abaixo, onde estamos reposicionando o campo DataNascimento para depois da coluna “Idade”.

image

Analisando agora a nova estrutura, vemos que talvez não faça mais sentido manter o campo “Idade”, uma vez que podemos obter essa informação através de um simples cálculo a partir do campo “DataNascimento”. Sendo assim, vamos agora apagar (DROP COLUMN) essa coluna da nossa tabela de pessoas.

image

Com isso, embora não tenhamos explorado todas as possibilidades, passamos por boa parte das operações de alterações em estruturas de dados que você pode realizar usando o comando ALTER TABLE.

Espero que tenham gostado e nos vemos na próxima. Até lá.

Compartilhe
Comentários (2)
Márcio Araújo
Márcio Araújo - 05/07/2022 22:43

Excelente maneira de explanar o ALTER TABLE....parabéns...

Aníbal Florentino
Aníbal Florentino - 22/12/2021 23:38

Excelente maneira de passar as informações sobre o conteúdo exposto, parabéns !!!