SQL DDL ALTERAÇÃO DA ESTRUTURA DE TABELAS - ALTER TABLE - ALTER TABLE NOME_TABELA ADD [COLUMN] NOME_COLUNA TIPO_COLUNA RESTRIÇÕES - PDF Download grátis
Download "SQL DDL ALTERAÇÃO DA ESTRUTURA DE TABELAS - ALTER TABLE - ALTER TABLE NOME_TABELA ADD [COLUMN] NOME_COLUNA TIPO_COLUNA RESTRIÇÕES"
Luís de Andrade Pais
1 ALTERAÇÃO DA ESTRUTURA DE TABELAS - ALTER TABLE - 1. Alterar tabela a. Adicionar coluna: ADD [COLUMN] NOME_COLUNA TIPO_COLUNA RESTRIÇÕES Obs.: a palavra COLUMN, opcional no padrão SQL, não pode ser usada no SQL Server. b. Excluir coluna: DROP [COLUMN] NOME_COLUNA Obs.: a palavra COLUMN, opcional no padrão SQL, é requerida (obrigatória) no SQL Server. c. Adicionar restrição: ADD CONSTRAINT NOME_RESTRIÇÃO TIPO_RESTRIÇÃO (COLUNA_RESTRIÇÃO) REFERENCES (TABELA_ORIGEM) Onde: TIPO_RESTRIÇÃO = FOREIGN KEY ou PRIMARY KEY. d. Excluir restrição: DROP CONSTRAINT NOME_RESTRIÇÃO 2. Destruir tabela: DROP TABLE NOME_TABELA [CASCADE] Obs.: CASCADE Opcional no padrão SQL. Indica que os objetos dependentes dessa tabela, tais como chaves estrangeiras que referenciam a mesma, também devem ser excluídos. No SQL Server 2005 não podemos utilizar a opção CASCADE. Devemos antes destruir as chaves estrangeiras que apontam para a tabela que será destruía (ver item d acima). Somente após este procedimento o comando DROP TABLE será aceito.
2 3. É possível modificar determinadas características de uma coluna: Tipo de dado (alguns SGBD requerem ausência de conteúdo na coluna para fazer essa alteração); Tamanho (alguns só aceitam alterações para valores maiores que o definido). a) Sintaxe padrão SQL: MODIFY nome-coluna tipo-de-dado b) Sintaxe padrão SQL Server utilizado no laboratório das aulas: ALTER COLUMN nome-coluna tipo-de-dado Exemplos (padrão SQL e padrão SQL Server): a) ALTER TABLE cliente MODIFY varchar(100) NOT NULL b) ALTER TABLE cliente ALTER COLUMN varchar(100) NOT NULL Obs.: se houver restrições do tipo CHECK e DEFAULT, pode ser necessário excluí-las antes. Considere no SQL Server o banco de dados DBSP contendo a tabela P (peças) abaixo. Altere o tipo da coluna weight para int com permissão de conteúdo nulo.
3 4. É possível criar e excluir restrições UNIQUE e CHECK nas colunas Exemplos práticos: a) ADD CONSTRAINT cor_unica UNIQUE(color); b) DROP CONSTRAINT cor_unica; c) ADD CONSTRAINT vermelho_nao CHECK(color<> Red ); ou WITH NOCHECK ADD CONSTRAINT vermelho_nao CHECK(color<> Red ); 5. É possível criar e excluir valor DEFAULT Exemplos práticos: ADD CONSTRAINT cor_padrao DEFAULT 'Black' FOR color DROP CONSTRAINT cor_padrao Alterar a coluna weight (tabela P). Obs.: são necessários dois comandos. - O peso pode variar de 1 a 100 (o SGBD deve desconsiderar os valores já existentes na coluna), - O peso default é 1.
4 6. É possível, ao criar uma nova coluna, preenche-la com um valor default Exemplo: ADD qtd_min int DEFAULT 1 WITH VALUES Obs.: Se WITH VALUES não for usado, cada linha terá o valor NULL na nova coluna. 7. É possível, alterar o nome de uma coluna a) Padrão SQL: ALTER TABLE nome_tabela RENAME nome_coluna TO novo_nome_coluna b) Já o SQL Server possui a procedure sp_rename para alterar o nome de uma coluna. Devemos passar três argumentos: a coluna que se deseja renomear, o novo nome e o tipo de objeto (no caso Column). EXEC SP_RENAME nome_tabela.nome_coluna, novo_nome_coluna, COLUMN Exemplo: Temos a tabela cliente e nela uma coluna chamada id. Para alterar o nome da coluna de id para idcliente execute: EXEC sp_rename cliente.id, idcliente, COLUMN Renomear a coluna pname, da tabela p, para pnome
5 8. É possível, alterar o nome de uma tabela a) Padrão SQL: ALTER TABLE nome_tabela RENAME novo_nome_tabela b) No SQL Server usamos a mesma procedure apresentada no item 7, com uma sintaxe semelhante. Exemplo: Alterar o nome da tabela cliente para DadosCliente. EXEC sp_rename cliente, DadosCliente Renomear a tabela p para Peça
6 Respostas dos exercícios: 3) ALTER TABLE DBSP.DBO.P ALTER COLUMN weight int not null 5) WITH NOCHECK ADD CONSTRAINT restricao_peso CHECK(weight>=1 and weight <100); ADD CONSTRAINT peso_padrao DEFAULT 1 FOR weight 7) EXEC SP_RENAME 'p.pname','pnome','column' 8) EXEC SP_RENAME 'p','peca'