Roteiro 8 Comandos SQL parte 2: Comandos DDL Objetivos: Adicionar chaves primárias em tabelas de dados; Utilizar comandos DDL para alteração de estruturas de bancos de dados Neste roteiro são utilizados comandos para realizar a manipulação nas estruturas de bancos de dados que são importantes para modificar ou adicionar componentes as tabelas de bancos de dados. Ferramentas necessárias Navegador, Xampp,Notepad++,console Mysql, Bibliografias de livros da faculdade. Introdução Alterar a estrutura de tabelas é uma tarefa bastante importante na administração de bancos de dados. A estrutura das tabelas pode ser alterada a qualquer momento que se desejar através dos comandos fornecidos pelo SGBD. Serão exploradas algumas das tarefas comuns na manipulação de estruturas de tabelas em bancos de dados. Adicionando Chaves primárias: Para adicionar uma chave primária na definição de uma tabela de dados é suficiente a adição do comando primary key(nome-campo). Exemplo de criação de chave primária para uma tabela contatos: No comando criado, temos de atentar aos itens: NOT NULL, DEFAULT NULL, PRIMARY KEY. NOT NULL define que o campo não poderá ser definido com valores vazios; DEFAULT NULL define como valor padrão o NULL; PRIMARY KEY(nome_campo) Define que o campo mencionado no comando será utilizado como chave primária dentro da estrutura das tabelas. Pág 43
ALTERANDO A ESTRUTURA DE TABELAS Estruturas de tabelas podem ser alteradas através do comando ALTER TABLE. Este comando, como o nome indica, realiza uma alteração na tabela para que seja possível inserir, alterar ou remover colunas de dados. A seguir um exemplo de coluna sendo adicionada: ALTER TABLE DRINKS ADD COLUMN ID_DRINK INT NOT NULL AUTO_INCREMENT FIRST; Indica que a nova coluna a ser inserida ocupará a primeira coluna na tabela de dados a qual estamos inserindo este novo campo, ou seja, o FIRST é a cláusula que permite realizar esta inclusão em primeiro. ALTERANDO UMA TABELA PARA ADICIONAR UMA CHAVE PRIMÁRIA: É possível que uma tabela seja alterada para incluir um novo campo e adicionarmos nossa chave primária, para tanto é utilizado o comando ALTER TABLE. No comando anterior foi feita a inserção de uma nova coluna denominada id_drink com os parâmetros INT, NOT NULL, AUTO_INCREMENT e FIRST. Sendo que com isso informamos que o campo será do tipo inteiro, não vazio, será incrementado automaticamente e será posicionado como a primeira coluna da tabela. EXEMPLO DE ALTERAÇÃO DE COLUNA: Incluir uma coluna em uma tabela DRINKS com o nome de nota. A coluna será posicionada após a coluna de preço. RENOMEANDO UMA TABELA CRIADA ANTERIORMENTE: Para renomear uma tabela criada anteriormente é possível utilizar o comando ALTER TABLE juntamente com o comando RENAME TO Exemplo de renomeação de tabela BEBIDAS para INGREDIENTES. ALTERANDO NOMES DE CAMPOS DE UMA TABELA: Para alterarmos um campo podemos utilizar o comando ALTER TABLE seguido do comando CHANGE COLUMN. Exemplo de modificação do nome da coluna NOME para DESCRICAO. Pág 44
OBSERVAÇÕES: O cuidado ao alterar colunas de tabelas se deve ao tipo de dados e tamanhos escolhidos. Se alterarmos um tipo de uma coluna para um tipo que não é compatível com o anterior, os dados serão perdidos. Caso a alteração seja feita para dados compatíveis, porém de menor tamanho, os dados serão reduzidos para adaptarem-se ao novo tamanho. ALTERANDO APENAS OS TIPOS DE DADOS DE UM CAMPO: Quando for necessário alterar o tipo de dado de uma coluna específica, podemos também utilizar o comando MODIFY campo NOVO_TIPO; EXEMPLO: Modificando o tipo de dados do campo DESCRICAO para VARCHAR(100); A diferença do comando MODIFY para o comando CHANGE se dá no fato de não estarmos modificando o nome e tipo de dados da coluna, e sim apenas o tipo de dados. Tarefas 1) Preencher a tabela de comandos abaixo com uma descrição, baseado no seu exemplo de uso. Comandos para alteração de estrutura de tabelas Todos os comandos listados a seguir devem ser executados sempre precedidos do comando ALTER TABLE [NOMETABELA] Comando Função Exemplo de uso ADD COLUMN [nomecoluna] [TIPO] [PARÂMETROS] RENAME TO [nometabela] LAST BEFORE AFTER FIRST AUTO_INCREMENT CHANGE COLUMN ALTER TABLE X ADD COLUMN NOME VARCHAR(30); ALTER TABLE X RENAME TO Y; ADD COLUMN ZZZ INT LAST; ADD COLUMN AAA INT BEFORE BBB; ADD COLUMN CCC INT AFTER BBB; ADD COLUMN CHAVE INT FIRST; ADD COLUMN CHAVE2 INT AUTO_INCREMENT; TRUNCATE TABLE TRUNCATE TABLE Y; CHANGE COLUMN CHAVE2 CHAVEPRINCIPAL INT; Pág 45
2) Criar um script para gerar a tabela no formato e com as informações a seguir: UC Projeto de Banco de Dados COR ANO FABRICANTE MOD_ VALORDECUSTO Prata 1998 Porsche Boxter 17992.540 NULL 2000 Jaguar XJ 15995 Vermelho 2002 Cadillac Escalade 40215.9 3) A tabela possui um planejamento pouco eficaz, pois possui várias falhas. Utilizando o comando ALTER TABLE gere o script para a modificação da tabela acima para que no formato da tabela a seguir: CARRO_ID CHASSI FABRICANTE MODELO COR ANO VALOR 1 RNKLK66N33G213481 Porsche Boxter Prata 1998 17992.54 2 SAEDA44B175B04113 Jaguar XJ NULL 2000 15995.00 3 3GYEK63NT2G280668 Cadillac Escalade Vermelho 2002 40215.90 COMANDOS SUGERIDOS PARA SEREM UTILIZADOS: ALTER TABLE RENAME TO ADD COLUMN ADD PRIMARY KEY CHANGE COLUMN MODIFY COLUMN UPDATE; RESULTADO FINAL: 4) Alterar a coluna FABRICANTE para que tenha o tipo varchar(50) e fique em último lugar na tabela; 5) Criar uma tabela DONO, que representará os donos dos veículos. Nesta tabela inclua os campos cpf, nome, telefone, cidade. 6) Insira 3 donos de veículos preenchendo todas as informações da tabela dono; 7) Adicione outra coluna na tabela dono com o nome ID_DONO para que fique na esquerda da tabela, antes de todas as colunas, e fique com a propriedade auto_increment e primary key definidas. 8) Altere o nome da tabela DONO para PESSOA; 9) Zere todos os registros da tabela dono; 10) Insira novamente os registros que foram excluídos na tabela dono, copiando novamente o seu script na console; 11) Adicione uma nova coluna na tabela DONO com o nome ID_VEICULO, e insira 3 novos registros completos de donos com ID S de VEICULOS; Pág 46
Referências Elmasri, Navathe Sistemas de banco de dados 6ª Edição; UC Projeto de Banco de Dados Introdução a Banco de dados, Osvaldo Kataro Tokai, disponível em http://pt.scribd.com/doc/50780287/bd; Apache Friends Home page - http://www.apachefriends.org/pt_br/xampp-windows.html#2287 Notepad++ Home page - http://notepad-plus-plus.org/ Pág 47