A maior rede de estudos do Brasil

Grátis
80 pág.
ESCM_Banco de Dados II

Pré-visualização | Página 5 de 14

antes. 
 
Ao apagar uma tabela, saiba que os relacionamentos por ventura com ela existente 
impedirão sua deleção. Por isso, você deverá começar a apagar as tabelas desde as 
“filhas”. 
 
DROP TABLE clientes 
Msg 3726, Level 16, State 1 
Could not drop object 'clientes'. 
It is being referenced by a foreign key constraint. 
 
Assim, para apagar a tabela clientes, antes será necessário apagarmos a tabela pedidos. 
 
DROP TABLE pedidos 
DROP TABLE clientes 
 
Comando Drop 
 
Este comando elimina a definição da tabela, seus dados e referências. 
 
Sintaxe: 
 
DROP TABLE < nome_tabela > ; 
 
Vamos apagar a tabela clientes 
Drop table clientes 
Conseguiu ? Porque ? 
 
sp_helpconstraint clientes 
 
alter table pedidos drop FK__pedidos__clientes__.... 
 
ALTER TABLE pedidos ADD CONSTRAINT FK__pedidos__cliente__1B9317B3 
FOREIGN KEY (cliente) 
REFERENCES clientes(cliente); 
 
sp_helpconstraint pedidos; 
alter table pedidos drop PK__pedidos__....; 
 
 
 
Rua da Assembléia, nº. 10 -3ºandar - sala 319 CEP 20011-901 • Rio de Janeiro • RJ 
 Tels.: (21) 3543-6442 e 3543-6413 
 escm@candidomendes.edu.br • www.candidomendes.edu.br/escm 
15 
ESCOLA SUPERIOR CANDIDO MENDES 
ALTER TABLE pedidos ADD CONSTRAINT PK__pedidos__1A9EF37A 
PRIMARY KEY (cliente,numero); 
 
Exercícios de fixação 
 
 
1) Crie duas tabelas chamadas Alunos e Cadeiras. As características de cada tabela são: 
 
1. A tabela de Alunos terá 3 colunas com preenchimento obrigatório: 
a. Matrícula (com números inteiros) 
b. Nome dos Alunos com até 60 caracteres 
c. Idade do aluno 
2. A tabela Cadeiras terá 4 colunas com preenchimento obrigatório 
a. Cadeira_nome com 25 caracteres fixos 
b. Professor _nome com até 60 caracteres 
c. Matricula do aluno (com números inteiros) 
d. Data de matrícula do aluno na cadeira 
3. Dados Complementares: 
a. A tabela Alunos não poderá ter duas matrículas iguais; 
b. A tabela Cadeiras não poderá ter duas matrículas na mesma cadeira com a mesma data de 
matrícula; 
c. A tabela Cadeiras só deve aceitar matrículas previamente cadastradas na tabela Alunos; 
 
2) Inclua uma coluna chamada telefone na tabela dos alunos que aceite no máximo 20 letras e números, esta 
informação não é obrigatória. 
3) Exclua a tabela de Alunos; Quais as opções para conseguir tal exclusão? 
4) Crie novamente a tabela Alunos incluindo o campo telefone sendo que desta vez, a informação do telefone é 
obrigatória; Se necessário, crie novamente a tabela de Cadeiras ou crie apenas a FK de Cadeiras; 
 
 
 
 
Rua da Assembléia, nº. 10 -3ºandar - sala 319 CEP 20011-901 • Rio de Janeiro • RJ 
 Tels.: (21) 3543-6442 e 3543-6413 
 escm@candidomendes.edu.br • www.candidomendes.edu.br/escm 
16 
ESCOLA SUPERIOR CANDIDO MENDES 
Respostas: 
 
1.1 - Create de Alunos: 
CREATE TABLE Alunos 
 ( 
 Matricula int not null PRIMARY KEY, 
nome varchar(60) not null, 
 Idade int not null 
 ) 
 
1.2 - Create de Cadeiras: 
CREATE TABLE Cadeiras 
 ( 
 Cadeira_nome char(25) not null, 
 Professor_nome varchar(60) not null, 
Matricula int not null, 
Data_mat datetime not null 
 PRIMARY KEY 
 ( 
 Matricula, 
 Cadeira_nome, 
 Data_mat 
 ), 
 FOREIGN KEY 
 ( 
 Matricula 
 ) 
 REFERENCES Alunos 
 ( 
 Matricula 
 ) 
 ) 
 
2 – Inclusão da coluna telefone: 
ALTER TABLE Alunos ADD telefone varchar(20); 
 
3 - Exclusão da tabela Alunos: 
 
• sp_helpconstraint Alunos; 
• alter table Cadeiras drop FK__.... 
• Drop table Alunos; 
 
 Ou 
 
• Drop table Cadeiras; 
 
 
 
Rua da Assembléia, nº. 10 -3ºandar - sala 319 CEP 20011-901 • Rio de Janeiro • RJ 
 Tels.: (21) 3543-6442 e 3543-6413 
 escm@candidomendes.edu.br • www.candidomendes.edu.br/escm 
17 
ESCOLA SUPERIOR CANDIDO MENDES 
• Drop table Alunos; 
 
 
4 – Recriando a tabela Alunos com a coluna telefone: 
CREATE TABLE Alunos 
 ( 
 Matricula int not null PRIMARY KEY, 
nome varchar(60) not null, 
 Idade int not null, 
Telefone varchar(20) not null 
 ) 
 
4 – Complemento - Recriando a FK na tabela Cadeiras: 
ALTER TABLE Cadeiras ADD CONSTRAINT FK__Cadeiras_Alunos 
FOREIGN KEY (Matricula) 
REFERENCES Alunos(Matricula); 
 
 
 
 
 
Rua da Assembléia, nº. 10 -3ºandar - sala 319 CEP 20011-901 • Rio de Janeiro • RJ 
 Tels.: (21) 3543-6442 e 3543-6413 
 escm@candidomendes.edu.br • www.candidomendes.edu.br/escm 
18 
ESCOLA SUPERIOR CANDIDO MENDES 
 
 
Aula 3 
 
INSERT 
 
Consulta anexação de um único registro: 
 
Sintaxe: 
1. INSERT INTO destino [(campo1[, campo2[, ...]])] 
VALUES (valor1[, valor2[, ...]) 
 
Para inserirmos dados em uma tabela, devemos informar qual é a tabela, quais os 
campos que estamos inserindo e quais são seus valores. 
2. INSERT clientes (cliente, nome, telefone) 
 values (1001,'João','445-0988'); 
3. INSERT clientes (cliente, nome, telefone) 
 values (1002,'Alberto','465-9887'); 
4. INSERT clientes (cliente, nome, telefone) 
 values (1003,'Maria','789-9877'); 
 
O Telefone não é obrigatório, sendo assim ... 
5. INSERT clientes (cliente, nome, telefone) 
 values (1004,'Sônia',null) 
 
A ordem dos campos pode ser diferente da ordem que estes possuem na tabela: 
6. INSERT clientes (nome, cliente, telefone) 
 values ('Carlos',1005,null) 
 
Se você omitir a lista de campos, a cláusula VALUES deve incluir um valor para cada 
campo na tabela; caso contrário, um erro ocorrerá em INSERT. 
Caso existam valores para todos os campos, podemos omitir seus nomes. 
7. INSERT clientes 
 values (1006,'Viu só?','999-0000') 
Conseguiu ? Porque ? 
 
 
 
 
Rua da Assembléia, nº. 10 -3ºandar - sala 319 CEP 20011-901 • Rio de Janeiro • RJ 
 Tels.: (21) 3543-6442 e 3543-6413 
 escm@candidomendes.edu.br • www.candidomendes.edu.br/escm 
19 
ESCOLA SUPERIOR CANDIDO MENDES 
Vamos inserir dados na tabela Pedidos 
8. INSERT pedidos (numero, cliente, telefone) 
 values (123456,9999,12347789) 
Conseguiu ? Porque ? 
 
9. INSERT pedidos (numero, cliente, telefone) 
 values (123456,1004,null) 
Conseguiu ? Porque ? 
 
Se sua tabela de destino contém uma chave primária, você deve acrescentar valores 
únicos, não Null ao campo ou campos da chave primária. Caso contrário, o programa 
principal de banco de dados não anexará os registros. 
10. INSERT pedidos (numero, cliente, telefone) 
 values (null,1004,222222) 
 
11. INSERT pedidos (numero, cliente, telefone) 
 values (123456,1004,33964567) 
Conseguiu ? Porque ? 
 
12. INSERT pedidos (numero, cliente, telefone) 
 values (123456,1004,222222) 
Conseguiu ? Porque ? 
 
13. INSERT pedidos (numero, cliente, telefone) 
 values (654321,1004,222222) 
 
14. delete from clientes where cliente = 1001 
 
15. delete from clientes where cliente = 1004 
Conseguiu ? Porque ? 
 
 
 
 
 
 
Rua da Assembléia, nº. 10 -3ºandar - sala 319 CEP 20011-901 • Rio de Janeiro • RJ 
 Tels.: (21) 3543-6442 e 3543-6413 
 escm@candidomendes.edu.br • www.candidomendes.edu.br/escm 
20 
ESCOLA SUPERIOR CANDIDO MENDES 
INSERT INTO 
 
Adiciona um ou vários registros a uma tabela. Isto é referido como consulta anexação. 
 
Consulta anexação de vários registros: 
INSERT INTO destino [(campo1[, campo2[, ...]])] 
SELECT [origem.]campo1[, campo2[, ...] 
FROM tabela 
 
A instrução INSERT INTO tem as partes abaixo: 
Parte Descrição 
destino O nome da tabela ou consulta em que os registros devem ser anexados. 
origem O nome da tabela ou consulta de onde os dados devem ser copiados. 
campo1, 
campo2 
Os nomes dos campos aos quais os dados devem ser anexados, se 
estiverem após um argumento