Em SQL, existem basicamente três tipos de comandos:
DDL - Data Definition Language (Linguagem de Definição de Dados), que reúne comandos SQL usados para definir o banco de dados: criar tabelas, definir especificações, alterar tabelas e assim por diante. Exemplos de DDL: CREATE, DROP, ALTER etc. As mudanças feitas por comandos DDL não podem ser desfeitas (rollback).
DML - Data Manipulation Language (Linguagem de Manipulação de Dados), que permite executar consultas de seleção, inserção, atualização e exclusão. As mudanças feitas por comandos DML podem ser revertidas. Exemplos: SELECT, INSERT, UPDATE e DELETE.
DCL - Data Control Language (Linguagem de Controle de Dados), que permite especificar direitos, permissões e outros controles do seu sistema de banco de dados.
Neste tutorial, você vai ver o uso do comando ALTER TABLE, que é de natureza DDL. Os seguintes tópicos serão abordados:
Por que usar o comando ALTER TABLE
Criando uma tabela em um banco de dados PostgreSQL
Executando diferentes comandos ALTER TABLE no PostgreSQL
Observação: este tutorial não vai ensinar a criar tabela, inserir dados ou selecionar dados em uma tabela no PostgreSQL. Se você quiser revisar esses tópicos, confira este artigo.
Por que usar o comando ALTER TABLE
As especificações de um banco de dados podem mudar com o tempo. Por exemplo, pode ser necessário adicionar uma coluna a uma tabela específica, definir outra chave primária para uma tabela ou alterar o tipo de dado de uma coluna. Nem sempre é viável excluir uma tabela e recriá-la do zero. O comando ALTER TABLE permite fazer tudo isso com facilidade. Com ALTER TABLE, você pode:
Adicionar, modificar ou remover uma coluna
Adicionar ou remover uma restrição (constraint)
Você também pode habilitar/desabilitar constraints, mas isso não está no escopo deste tutorial.
Você verá cada um dos casos de uso acima neste tutorial, mas antes disso, vamos criar uma tabela no PostgreSQL para começar. Na próxima seção, você vai criar uma tabela simples.
Criando uma tabela em um banco de dados PostgreSQL
Você vai criar uma tabela chamada student_details no PostgreSQL (usando o utilitário pgAdmin) com as seguintes colunas e tipos de dados:
student_id (integer)
student_full_name (character)
student_year (integer)
Você vai começar com essa tabela contendo apenas três colunas. Depois, ao longo do tutorial, vai adicionar mais colunas e alterar a tabela de diferentes maneiras. A consulta de criação a seguir gera a tabela de acordo com as especificações acima:
Vamos inserir alguns registros nessa tabela também:
INSERT INTO student_details(student_full_name, student_year) VALUES('John Doe','1st');
INSERT INTO student_details(student_full_name, student_year) VALUES('Chris Villa','3rd');
Como o tipo de dado de student_id está definido como SERIAL, o PostgreSQL incrementa automaticamente o valor da coluna, e esse tipo é interpretado como integer por padrão no PostgreSQL.
A tabela student_details deve ficar assim:
Agora você tem uma tabela criada no PostgreSQL. Vamos ver outras aplicações de ALTER TABLE na próxima seção.
Executando diferentes comandos ALTER TABLE no PostgreSQL
Nesta seção, você vai ver o uso do ALTER TABLE das seguintes formas, como mencionado acima:
Adicionar, modificar e remover uma coluna
Adicionar e remover uma constraint
Adicionar, modificar ou remover uma coluna
Vamos começar adicionando mais uma coluna chamada student_grade (do tipo character) na tabela:
Repare que, para os registros já inseridos, os valores da coluna student_grade estão como null. Isso é feito de forma implícita na maioria dos SGBDs relacionais. Porém, você sempre pode executar uma consulta de atualização para definir os valores. Agora vamos ver como modificar uma coluna usando ALTER TABLE. Você vai reduzir o tamanho máximo permitido da coluna student_year de 100 para 10, pois alocar muito espaço para apenas três caracteres (student_year pode ser 1st, 2nd ou 3rd) não é muito prático.
ALTERTABLE student_details RENAME student_id TO student_roll;Tecnologia
A consulta acima renomeia a coluna student_id para student_roll. Você pode verificar isso com uma consulta de seleção; seu resultado deve ser semelhante ao da figura a seguir:
Agora, vamos ver como remover uma coluna de uma tabela:
Essa consulta remove a coluna student_year, e a tabela após a execução deve ficar assim:
Observe que, se a coluna que você está removendo for referenciada por outra tabela, podem ocorrer erros de violação de integridade referencial.
Agora você vai ver como adicionar e remover constraints em uma tabela.
Adicionar e remover uma constraint.
A tabela student_details não tem chave primária. A chave primária combina as constraints not null e unique. Vamos definir a coluna student_roll (renomeada a partir de student_id) como chave primária de student_details:
Você também pode adicionar outras constraints. Por exemplo, dá para adicionar uma constraint check na coluna student_grade para que os valores sejam sempre A, B ou C.
year_check é um nome de referência para a constraint que você está adicionando à tabela. Agora, se você tentar inserir a seguinte linha, deverá receber um erro:
Vamos verificar. Se a constraint year_check foi realmente removida, então esta consulta INSERT INTO student_details(student_full_name, student_grade) VALUES('David Lune','3rd'); não deve gerar erro. A tabela agora contém o registro:
Você pode testar outras constraints do tipo check também.
É isso por hoje!
Neste tutorial, você conheceu o comando ALTER TABLE para modificar o esquema de uma tabela de forma eficiente. Se quiser levar suas habilidades em SQL para o próximo nível, vale a pena conferir estes cursos da DataCamp:
Se você deseja começar a usar o SQL, nós o ajudamos. Neste tutorial de SQL, apresentaremos as consultas SQL, uma ferramenta poderosa que nos permite trabalhar com os dados armazenados em um banco de dados. Você verá como escrever consultas SQL, aprenderá sobre
Saiba como usar os acionadores SQL para automatizar tarefas, manter a integridade dos dados e melhorar o desempenho do banco de dados. Experimente exemplos práticos como os comandos CREATE, ALTER e DROP no MySQL e no Oracle.
Saiba como selecionar facilmente várias colunas de uma tabela de banco de dados em SQL ou selecionar todas as colunas de uma tabela em uma consulta simples.
Em SQL, existem basicamente três tipos de comandos:
DDL - Data Definition Language (Linguagem de Definição de Dados), que reúne comandos SQL usados para definir o banco de dados: criar tabelas, definir especificações, alterar tabelas e assim por diante. Exemplos de DDL:
CREATE,DROP,ALTERetc. As mudanças feitas por comandos DDL não podem ser desfeitas (rollback).DML - Data Manipulation Language (Linguagem de Manipulação de Dados), que permite executar consultas de seleção, inserção, atualização e exclusão. As mudanças feitas por comandos DML podem ser revertidas. Exemplos:
SELECT,INSERT,UPDATEeDELETE.DCL - Data Control Language (Linguagem de Controle de Dados), que permite especificar direitos, permissões e outros controles do seu sistema de banco de dados.
Neste tutorial, você vai ver o uso do comando
ALTER TABLE, que é de natureza DDL. Os seguintes tópicos serão abordados:ALTER TABLEALTER TABLEno PostgreSQLObservação: este tutorial não vai ensinar a criar tabela, inserir dados ou selecionar dados em uma tabela no PostgreSQL. Se você quiser revisar esses tópicos, confira este artigo.
Por que usar o comando ALTER TABLE
As especificações de um banco de dados podem mudar com o tempo. Por exemplo, pode ser necessário adicionar uma coluna a uma tabela específica, definir outra chave primária para uma tabela ou alterar o tipo de dado de uma coluna. Nem sempre é viável excluir uma tabela e recriá-la do zero. O comando
ALTER TABLEpermite fazer tudo isso com facilidade. ComALTER TABLE, você pode:Você também pode habilitar/desabilitar constraints, mas isso não está no escopo deste tutorial.
Você verá cada um dos casos de uso acima neste tutorial, mas antes disso, vamos criar uma tabela no PostgreSQL para começar. Na próxima seção, você vai criar uma tabela simples.
Criando uma tabela em um banco de dados PostgreSQL
Você vai criar uma tabela chamada
student_detailsno PostgreSQL (usando o utilitáriopgAdmin) com as seguintes colunas e tipos de dados:Você vai começar com essa tabela contendo apenas três colunas. Depois, ao longo do tutorial, vai adicionar mais colunas e alterar a tabela de diferentes maneiras. A consulta de criação a seguir gera a tabela de acordo com as especificações acima:
Vamos inserir alguns registros nessa tabela também:
INSERT INTO student_details(student_full_name, student_year) VALUES('John Doe','1st');INSERT INTO student_details(student_full_name, student_year) VALUES('Chris Villa','3rd');Como o tipo de dado de
student_idestá definido comoSERIAL, o PostgreSQL incrementa automaticamente o valor da coluna, e esse tipo é interpretado comointegerpor padrão no PostgreSQL.A tabela
student_detailsdeve ficar assim:Agora você tem uma tabela criada no PostgreSQL. Vamos ver outras aplicações de
ALTER TABLEna próxima seção.Executando diferentes comandos ALTER TABLE no PostgreSQL
Nesta seção, você vai ver o uso do
ALTER TABLEdas seguintes formas, como mencionado acima:Adicionar, modificar ou remover uma coluna
Vamos começar adicionando mais uma coluna chamada
student_grade(do tipo character) na tabela:Agora, a tabela deve ficar assim:
Repare que, para os registros já inseridos, os valores da coluna
student_gradeestão comonull. Isso é feito de forma implícita na maioria dos SGBDs relacionais. Porém, você sempre pode executar uma consulta de atualização para definir os valores. Agora vamos ver como modificar uma coluna usandoALTER TABLE. Você vai reduzir o tamanho máximo permitido da colunastudent_yearde 100 para 10, pois alocar muito espaço para apenas três caracteres (student_year pode ser 1st, 2nd ou 3rd) não é muito prático.Você pode ver o resultado na figura a seguir:
Também é possível renomear uma coluna. Veja como:
A consulta acima renomeia a coluna
student_idparastudent_roll. Você pode verificar isso com uma consulta de seleção; seu resultado deve ser semelhante ao da figura a seguir:Agora, vamos ver como remover uma coluna de uma tabela:
Essa consulta remove a coluna
student_year, e a tabela após a execução deve ficar assim:Observe que, se a coluna que você está removendo for referenciada por outra tabela, podem ocorrer erros de violação de integridade referencial.
Agora você vai ver como adicionar e remover constraints em uma tabela.
Adicionar e remover uma constraint.
A tabela
student_detailsnão tem chave primária. A chave primária combina as constraints not null e unique. Vamos definir a colunastudent_roll(renomeada a partir destudent_id) como chave primária destudent_details:Você também pode adicionar outras constraints. Por exemplo, dá para adicionar uma constraint
checkna colunastudent_gradepara que os valores sejam sempreA,BouC.year_checké um nome de referência para a constraint que você está adicionando à tabela. Agora, se você tentar inserir a seguinte linha, deverá receber um erro:O erro será parecido com o seguinte:
Remover uma constraint é semelhante. Você precisa informar o nome da constraint que deseja excluir. Vamos remover a constraint chamada
year_check:Vamos verificar. Se a constraint
year_checkfoi realmente removida, então esta consultaINSERT INTO student_details(student_full_name, student_grade) VALUES('David Lune','3rd');não deve gerar erro. A tabela agora contém o registro:Você pode testar outras constraints do tipo check também.
É isso por hoje!
Neste tutorial, você conheceu o comando
ALTER TABLEpara modificar o esquema de uma tabela de forma eficiente. Se quiser levar suas habilidades em SQL para o próximo nível, vale a pena conferir estes cursos da DataCamp: