·

Cursos Gerais ·

Estrutura de Dados

Send your question to AI and receive an answer instantly

Ask Question

Preview text

Banco de Dados Profa MSc Viviane Guimarães Ribeiro 1 42 Alteração das Tabelas ALTER TABLE O comando ALTER TABLE altera a definição de uma tabela existente É necessário ser o dono da tabela para executar o comando ALTER TABLE exceto para o super usuário Existem várias formas alternativas ADD COLUMN Esta forma adiciona uma nova coluna à tabela usando a mesma sintaxe do comando CREATE TABLE DROP COLUMN Esta forma exclui uma coluna da tabela Note que os índices e as restrições da tabela que referenciam a coluna também serão automaticamente excluídos Será necessário especificar CASCADE se algum objeto fora da tabela depender da coluna por exemplo chaves estrangeiras visões etc SETDROP NOT NULL Estas formas mudam a definição da coluna para permitir valores nulos ou para rejeitar valores nulos A forma SET NOT NULL somente pode ser usada quando não existem valores nulos na coluna RENAME A forma RENAME muda o nome de uma tabela um índice uma seqüência ou uma visão ou o nome de uma coluna da tabela Não produz efeito sobre os dados armazenados ADD definiçãoderestriçãodetabela Esta forma adiciona uma nova restrição para a tabela usando a mesma sintaxe do comando CREATE TABLE DROP CONSTRAINT Esta forma exclui a restrição da tabela Atualmente as restrições de tabela não necessitam ter nomes únicos portanto pode haver mais de uma restrição correspondendo ao nome especificado Todas estas restrições serão excluídas Sinopse ALTER TABLE tabela ADD COLUMN column tipo ALTER TABLE tabela DROP COLUMN coluna RESTRICT CASCADE ALTER TABLE tabela ALTER COLUMN coluna SET DROP NOT NULL ALTER TABLE tabela RENAME COLUMN coluna TO novonomedacoluna ALTER TABLE tabela RENAME TO novonomedatabela ALTER TABLE tabela ADD CONSTRAINT nomedarestrição ALTER TABLE tabela DROP CONSTRAINT nomedarestrição RESTRICT CASCADE Entradas tabela O nome opcionalmente qualificado pelo esquema da tabela existente a ser alterada coluna O nome de uma coluna nova ou existente Banco de Dados Profa MSc Viviane Guimarães Ribeiro 2 tipo O tipo da nova coluna novonomedacoluna O novo nome para a coluna existente novonomedatabela O novo nome para a tabela definiçãoderestriçãodetabela A nova restrição de tabela table constraint para a tabela nomedarestrição O nome da restrição existente a ser excluída CASCADE Exclui automaticamente os objetos dependentes da coluna ou restrição excluída por exemplo visões fazendo referência à coluna RESTRICT Recusa excluir a coluna ou a restrição se existirem objetos dependentes Este é o comportamento padrão Saídas ALTER TABLE Mensagem retornada se o nome da coluna ou da tabela for alterado com sucesso ERROR Mensagem retornada se a tabela ou a coluna não existir Exemplos 1 Para adicionar uma coluna do tipo varchar em uma tabela ALTER TABLE distribuidores ADD COLUMN endereco VARCHAR30 2 Para excluir uma coluna de uma tabela ALTER TABLE distribuidores DROP COLUMN endereco RESTRICT 3 Para mudar o nome de uma coluna existente ALTER TABLE distribuidores RENAME COLUMN endereco TO cidade 4 Para mudar o nome de uma tabela existente ALTER TABLE distribuidores RENAME TO fornecedores 5 Para adicionar uma restrição NOT NULL a uma coluna ALTER TABLE distribuidores ALTER COLUMN logradouro SET NOT NULL 6 Para remover a restrição NOT NULL da coluna ALTER TABLE distribuidores ALTER COLUMN logradouro DROP NOT NULL 7 Para remover uma restrição de verificação de uma tabela e de todas as suas descendentes ALTER TABLE distribuidores DROP CONSTRAINT chkcep 8 Para adicionar uma restrição de chave estrangeira a uma tabela ALTER TABLE distribuidores ADD CONSTRAINT fkdist FOREIGN KEY endereco REFERENCES enderecosendereco Banco de Dados Profa MSc Viviane Guimarães Ribeiro 3 9 Para adicionar uma restrição de unicidade à tabela ALTER TABLE distribuidores ADD CONSTRAINT unqdistidcodcep UNIQUE codcep 10 Para adicionar uma restrição de chave primária a uma tabela com o nome gerado automaticamente levando em conta que a tabela somente pode possuir uma única chave primária ALTER TABLE distribuidores ADD PRIMARY KEY distid Compatibilidade SQL92 As cláusulas para mudar os nomes das tabelas índices e seqüências são extensões do PostgreSQL ao SQL92 43 Remoção de Tabelas DROP TABLE O comando DROP TABLE remove tabelas do banco de dados Somente o criador pode remover a tabela A tabela poderá ficar sem linhas mas não será removida usando o comando DELETE O comando DROP TABLE sempre remove todos os índices regras gatilhos e restrições existentes na tabela Entretanto para remover uma tabela referenciada por uma restrição de chave estrangeira de outra tabela deve ser especificado o CASCADE O CASCADE remove a restrição de chave estrangeira e não a tabela Sinopse DROP TABLE nome CASCADE RESTRICT Entradas nome O nome opcionalmente qualificado pelo esquema de uma tabela existente a ser removida CASCADE Remove automaticamente os objetos que dependem da tabela como visões RESTRICT Recusa remover a tabela se existirem objetos dependentes Este é o padrão Saídas DROP TABLE Mensagem retornada se o comando for executado com sucesso ERROR table nome does not exist Se a tabela especificada não existe no banco de dados Exemplo 1 Destruir as tabelas filmes e distribuidores DROP TABLE filmes distribuidores Compatibilidade SQL92 As cláusulas para mudar os nomes das tabelas índices e seqüências são extensões do PostgreSQL ao SQL92