Baixe o app para aproveitar ainda mais
Prévia do material em texto
Banco de Dados II Profª Priscilla Braz (pbraz@unicarioca.edu.br) ROTEIRO DE AULA • Comandos de Definição de Dados (DDL) • Create table (revisão) • Insert table • Drop table • Alter table OBJETIVO DA AULA Compreender os comandos para a criação, inserção, remoção e alteração de tabelas. Criando a base de dados CREATE Schema Criando a base de dados CREATE Schema Criando a base de dados CREATE Schema Criando tabelas CREATE TABLE Esse comando SQL especifica uma nova relação da base de dados através da definição do seu nome e da especificação de cada um dos seus atributos com seus respectivos tipos de dados. Sintaxe: CREATE TABLE NOME_TABELA( campo1 TIPO_DE_DADO, OPÇÕES campo2 TIPO_DE_DADO, OPÇÕES campo3 TIPO_DE_DADO, OPÇÕES ...); Criando tabelas As opções são algumas palavras chaves que determinam algumas características do campo: NOT NULL - campo não pode ser nulo, ou seja, não pode estar em branco; AUTO_INCREMENT - se deixarmos o campo em branco, o MySQL automaticamente o preencherá com um inteiro uma unidade maior que o valor máximo já existente. Deve ser usado com o tipo de dado inteiro e só pode haver um campo destes em cada tabela. Campos marcados com esta opção devem ser indexados; PRIMARY KEY - define o campo como chave primária. Os dados inseridos neste campo devem ser únicos e eles são automaticamente indexados; UNSIGNED - significa que o valor só pode ter valor positivo ou zero. Usado com dados do tipo inteiro. Modelo Conceitual l Criando tabelas CREATE TABLE CLIENTE( codigo_cliente smallint not null PRIMARY KEY, nome_cliente varchar(20), endereco varchar(30), cidade varchar(15), CEP varchar(8), UF varchar(2), cpf varchar(20), id varchar(20)); Criando tabelas CREATE TABLE VENDEDOR( codigo_vendedor smallint not null, nome_vendedor varchar(20), salario_fixo decimal(12,2), faixa_comissao char, PRIMARY KEY (codigo_vendedor) ); Criando tabelas CREATE TABLE PEDIDO ( num_pedido int not null PRIMARY KEY, prazo_entrega smallint not null, codigo_cliente smallint not null, codigo_vendedor smallint not null, FOREIGN KEY (codigo_cliente) REFERENCES CLIENTE(codigo_cliente), FOREIGN KEY (codigo_vendedor) REFERENCES VENDEDOR(codigo_vendedor) ); Criando tabelas CREATE TABLE PRODUTO ( codigo_produto smallint not null PRIMARY KEY, unidade varchar(3), descricao varchar(30), val_unit decimal(12,2) ); Criando tabelas CREATE TABLE ITEM_DO_PEDIDO ( num_pedido int not null , codigo_produto smallint not null , quantidade decimal, FOREIGN KEY (num_pedido) REFERENCES PEDIDO(num_pedido), FOREIGN KEY (codigo_produto) REFERENCES PRODUTO(codigo_produto), PRIMARY KEY (num_pedido , codigo_produto) ); Criando tabelas Alternativa para a criação de tabelas Inserindo dados nas tabelas Para inserir dados numa tabela use o comando: INSERT into TABELA (CAMPO1, CAMPO2, ... , CAMPOn) VALUES (VALOR1, VALOR2, ... , VALORn); INSERT into TABELA VALUES (VALOR1, VALOR2, ... ,VALORn); Inserindo dados nas tabelas Tabela Cliente INSERT INTO CLIENTE VALUES (1, "Carlos Alberto", "Rua da Paz, 12", "Rio", "20000", "RJ", "0101010", "02020"); INSERT INTO CLIENTE VALUES (2,"Luis Eduardo", "Rua do Sol, 102", "Rio", "20000", "RJ", "454545", "02021"); INSERT INTO CLIENTE VALUES (3, "Alan Silva", "Rua da Alegria, 12", "São Paulo", "11000", "SP", "686879", "02020"); INSERT INTO CLIENTE VALUES (4, "Carlos Neves", "Rua do Sol, 212", "São Paulo", "11000", "SP", "686878",null); Inserindo dados nas tabelas Tabela Vendedor INSERT INTO VENDEDOR VALUES (10, "João Carlos", 200.00, "A"); INSERT INTO VENDEDOR VALUES (20,"Luis Pedro", 300.00, "B"); INSERT INTO VENDEDOR VALUES (30,"Luis Lemos", 350.00, "A"); Inserindo dados nas tabelas Tabela Produto INSERT INTO PRODUTO VALUES (100,"un", "Leite em pó", 3.00); INSERT INTO PRODUTO VALUES (200, "kg", "Queijo", 12.00); INSERT INTO PRODUTO VALUES (300,"un", "Macarrão", 4.00); INSERT INTO PRODUTO VALUES (400,"lt", "Suco laranja", 2.00); INSERT INTO PRODUTO VALUES (500,"un", "Chocolate", 5.00); Inserindo dados nas tabelas Tabela Pedido INSERT INTO PEDIDO VALUES (1000, 10, 1, 10); INSERT INTO PEDIDO VALUES (2000, 20, 1, 20); INSERT INTO PEDIDO VALUES (3000, 15, 2, 10); Inserindo dados nas tabelas Tabela Item_do_Pedido INSERT INTO ITEM_DO_PEDIDO VALUES (1000, 100, 10); INSERT INTO ITEM_DO_PEDIDO VALUES (1000, 200, 20); INSERT INTO ITEM_DO_PEDIDO VALUES (1000, 300, 15); INSERT INTO ITEM_DO_PEDIDO VALUES (2000, 300, 40); INSERT INTO ITEM_DO_PEDIDO VALUES (2000, 400, 10); INSERT INTO ITEM_DO_PEDIDO VALUES (2000, 500, 5); INSERT INTO ITEM_DO_PEDIDO VALUES (3000, 500, 5); Conferindo... Faça consultas para cada tabela para conferir a inserção dos dados. Removendo uma tabela Drop table Faz a remoção de uma relação(tabela) com a sua definição. Após a remoção, a relação não poderá mais ser usada em consultas, modificações, ou qualquer outro comando, já que sua descrição não existe mais. Removendo uma tabela Drop table Sintaxe: Drop table NOME_TABELA; Drop table departamento; Modificando uma tabela Alter table Permite alterar informações da tabela, bem como adicionar campos. Modificando uma tabela Alter table ALTER TABLE tableName {ADD [COLUMN] columnName columnDefinition} {CHANGE|MODIFY [COLUMN] columnName columnDefinition {SET DEFAULT columnDefaultValue} | {DROP DEFAULT}} {DROP [COLUMN] columnName [RESTRICT|CASCADE]} {ADD tableConstraint} {DROP tableConstraint [RESTRICT|CASCADE]} Modificando uma tabela Alter table Adição de campos: alter table cliente add column dt_Nasc Date; Remoção de campos: alter table cliente drop dt_Nasc; Modificando uma tabela Alter table Alteração de nome coluna: alter table cliente change id rg varchar(15); Alteração de tipo de dado da coluna: alter table item_do_pedido modify quantidade INT; Modificando uma tabela Alter table Renomear uma tabela RENAME table cliente TO clientes Adicionar uma Chave Primária (PK) ALTER TABLE <tabela> ADD PRIMARY(coluna) Modificando uma tabela Alter table Adicionando uma foreign key ALTER TABLE pedido ADD constraint fk_pedido_cliente foreign key (codigo_cliente) references cliente (codigo_cliente) on delete cascade; Remover uma foreign key ALTER TABLE pedido DROP foreign key fk_pedido_cliente; Exercícios Construa uma base de dados com suas tabelas, considerando o esquema a seguir. • Paciente(CodPac,NomePac,DataNascPac) • Internação(CodPac,NumeroIntern,DataHoraBaixa,DataHoraAlta) CodPac referencia Paciente • Leito (NoLeito,CodigoQuarto,TipoLeito) • OcupaLeito(CodPac,NumeroIntern,NoLeito,DataHoraInic, DataHoraFim) (CodPac,NumeroIntern) referencia Internação NoLeito referencia Leito • Parto(CodPacBebe,NumeroInternBebe,HoraNasc,TipoParto,CodPacMae,N umeroInternMae) (CodPacBebe,NumeroInternBebe) referencia Internação (CodPacMae,NumeroIntern) referencia Internação /* tabela de partos - CodPacBebe é o código de paciente recém nascido (bebê) - CodPacMae é o código de paciente da mãe. Para cada um deles há uma internação. */ Exercícios Após a construção da base de dados anterior, você deve popular as tabelas do banco de dados. Usando corretamente o comando de inserção, inclua pelo menos 5 elementos em cada tabela. Após isso, faça as consultas correspondentes para verificar as inserções. Restrições de integridade As restrições de integridade resguardam o Banco de Dados contra danos acidentais, assegurando que mudanças feitas por usuários autorizados não resultem na perda de consistência de dados. Restrições de integridade Integridade Referencial Assegura que um valor que aparece em uma relação (tabela) para um determinado conjunto de atributos apareça em outro conjunto de atributos em outra relação (tabela). Restrições de integridade Integridade Referencial Para trabalharmos com integridade referencial, isto é, para adicionarmos restrições de integridade (constraints) às chaves estrangeiras, é necessário criar as tabelas como InnoDB. Restrições de integridade Integridade ReferencialO InnoDB implementa as restrições de integridade CASCADE, RESTRICT, SET NULL e SET DEFAULT. • CASCADE: ao se remover um registro da tabela referenciada pela chave estrangeira, os registros relacionados àquele removido serão eliminados em todas as tabelas relacionadas. • RESTRICT: não permite a remoção de registros que possuam relacionamentos em outras tabelas. Restrições de integridade Integridade Referencial • Os dois últimos atribuem os valores DEFAULT ou NULL para as chaves estrangeiras cujos registros relacionados foram excluídos. Restrições de integridade Integridade Referencial • Exemplo: CREATE TABLE aluno ( id INT NOT NULL PRIMARY KEY, nome CHAR(30) NOT NULL ) TYPE=InnoDB; CREATE TABLE cursos ( id INT NOT NULL PRIMARY KEY, nome CHAR(30) NOT NULL ) TYPE=InnoDB; Restrições de integridade Integridade Referencial • Exemplo: CREATE TABLE notas ( aluno_id INT NOT NULL, cursos_id INT NOT NULL, date DATE NOT NULL, nota DOUBLE NOT NULL, PRIMARY KEY(aluno_id, cursos_id, date), INDEX i2 (cursos_id), FOREIGN KEY (aluno_id) REFERENCES aluno(id) ON DELETE CASCADE, FOREIGN KEY (cursos_id) REFERENCES cursos(id) ON DELETE RESTRICT ) TYPE=InnoDB; DÚVIDAS?
Compartilhar