11
Lista de exercícios de SQL SERVER 2005/2008 Considere o seguinte modelo de Banco de Dados: Usar o script abaixo para inserir dados no banco de Dados IMIH, sabendo que os campos sublinhados são chaves. Não esquecer de declarar as chaves estrangeiras. Create database IMIH Use IMIH create table Depto ( codDepto char ( 5 ), nomeDepto varchar ( 20 ), primary key ( codDepto )); insert into Depto values ( 'INF01' , 'Informática' );

Lista+de+Exercicios+SQL+Server

Embed Size (px)

Citation preview

Page 1: Lista+de+Exercicios+SQL+Server

Lista de exercícios de SQL SERVER 2005/2008

Considere o seguinte modelo de Banco de Dados:

Usar o script abaixo para inserir dados no banco de Dados

IMIH, sabendo que os campos sublinhados são chaves.

Não esquecer de declarar as chaves estrangeiras.

Create database IMIH

Use IMIH

create table Depto

(codDepto char(5),

nomeDepto varchar(20),

primary key (codDepto));

insert into Depto

values ('INF01', 'Informática');

Page 2: Lista+de+Exercicios+SQL+Server

insert into Depto

values ('MAT01', 'Matemática');

insert into Depto

values ('ELE01', 'Eletrônica');

create table Discipl ina

(codDepto char(5),

numDisc char(5),

nomeDisc varchar(20),

credi tosDisc integer,

primary key (codDepto, numDisc),

foreign key (codDepto) references Depto );

insert into Discipl ina

values ('INF01', 'DIS01', 'Ling Formais', 4);

insert into Discipl ina

values ('INF01', 'DIS02', 'Teoria da Comp', 4);

insert into Discipl ina

values ('INF01', 'DIS03', 'Programacao I ', 8);

insert into Discipl ina

values ('MAT01', 'DIS04', 'Cálcu lo 1', 4);

insert into Discipl ina

values ('MAT01', 'DIS01', 'Cálcu lo 2', 6);

create table PreReq

(codDepto char(5),

numDisc char(5),

codDeptoPreReq char(5),

numDiscPreReq char(5),

primary key (codDepto, numDisc, codDeptoPreReq, numDiscPreReq),

foreign key (codDepto, numDisc) references discipl ina,

foreign key (codDeptoPreReq, numDiscPreReq) references discipl ina);

Page 3: Lista+de+Exercicios+SQL+Server

insert into PreReq

values ('INF01', 'DIS02', 'INF01', 'DIS01');

insert into PreReq

values ('MAT01', 'DIS04', 'MAT01', 'DIS01');

insert into PreReq

values ('INF01', 'DIS03', 'INF01', 'DIS02');

create table Turma

(anoSem integer,

codDepto char(5),

numDisc char(5),

siglaTur char(5),

capacTur integer,

primary key (anoSem, codDepto, numDisc, siglaTur),

foreign key (codDepto, numDisc) references Discipl ina);

insert into turma

values (20021, 'INF01', 'DIS01', 'TUR01', 30);

insert into turma

values (20022, 'INF01', 'DIS01', 'TUR01', 30);

insert into turma

values (20021, 'INF01', 'DIS02', 'TUR02', 30);

insert into turma

values (20022, 'INF01', 'DIS03', 'TUR01', 200);

insert into turma

values (20031, 'INF01', 'DIS03', 'TUR02', 30);

insert into turma

values (20021, 'MAT01', 'DIS01', 'TUR01', 15);

insert into turma

Page 4: Lista+de+Exercicios+SQL+Server

values (20022, 'INF01', 'DIS03', 'TUR02', 25);

create table Predio

(codPred integer ,

nomePred varchar(30),

primary key (codPred));

insert into predio

values (43423, 'Informática-Aulas');

insert into predio

values (43421, 'Administração');

insert into predio

values (43424, 'Laboratórios');

create table Sala

(codPred integer ,

numSala integer,

capacSala integer,

primary key (codPred, numSala),

foreign key(codPred)references Predio);

insert into sala

values (43423, 101, 30);

insert into sala

values (43421, 102, 50);

insert into sala

values (43424, 215, 40);

create table Horario

(anoSem integer,

codDepto char(5),

numDisc char(5),

siglaTur char(5),

diaSem integer,

Page 5: Lista+de+Exercicios+SQL+Server

horaInicio char(5),

numHoras integer,

codPredio integer ,

numSala integer,

primary key (anoSem, codDepto, numDisc, siglaTur, diaSem,

horaInicio),

foreign key (anoSem, codDepto, numDisc, siglaTur) references turma,

foreign key (codPredio, numSala) references sala);

insert into horario

values (20021, 'INF01', 'DIS01', 'TUR01', 2, '10:30', 60, 43423, 101);

insert into horario

values (20021, 'INF01', 'DIS02', 'TUR02', 3, '10:30', 60, 43423, 101);

insert into horario

values (20022, 'INF01', 'DIS03', 'TUR02', 4, '08:30', 45, 43424, 215);

insert into horario

values (20021, 'INF01', 'DIS01', 'TUR01', 4, '13:30', 60, 43423, 101);

create table Ti tulacao

(codTit integer,

nomeTi t varchar(20),

primary key (codTit));

insert into Ti tulacao

values (1, 'Doutor');

insert into Ti tulacao

values (2, 'Mestre');

insert into Ti tulacao

values (3, 'Especial i sta');

insert into Ti tulacao

values (4, 'Graduado');

Page 6: Lista+de+Exercicios+SQL+Server

create table Professor

(codProf char(5),

nomeProf varchar(50),

codTi t integer,

codDepto char(5),

primary key (codProf),

foreign key (codTit) references Ti tulacao,

foreign key (codDepto) references Depto );

insert into Professor

values ('Pro01', 'Antunes', 1, 'INF01');

insert into Professor

values ('Pro02', 'Maria dos Santos', 2, 'INF01');

insert into Professor

values ('Pro03', 'Paulo', 3, 'MAT01');

insert into Professor

values ('Pro04', 'Gabriel ' , 2, 'MAT01');

create table ProfTurma

(anoSem integer,

codDepto char(5),

numDisc char(5),

siglaTur char(5),

codProf char(5),

primary key (anoSem, codDepto, numDisc, siglaTur, codProf),

foreign key (anoSem, codDepto, numDisc, siglaTur) references Turma,

foreign key (codProf) references Professor);

insert into ProfTurma

values (20021, 'INF01', 'DIS01', 'TUR01', 'Pro01');

insert into ProfTurma

values (20022, 'INF01', 'DIS01', 'TUR01', 'Pro01');

insert into ProfTurma

Page 7: Lista+de+Exercicios+SQL+Server

values (20021, 'INF01', 'DIS02', 'TUR02', 'Pro02');

insert into ProfTurma

values (20021, 'MAT01', 'DIS01', 'TUR01', 'Pro03');

insert into ProfTurma

values (20021, 'MAT01', 'DIS01', 'TUR01', 'Pro02');

Page 8: Lista+de+Exercicios+SQL+Server

Lista 01

1. Obter todos os dados dos professores.

2. Obter o código e o nome dos professores.

3. Obter a capacidade das turmas.

4. Obter os di ferentes valores de capacidades de turmas.

5. Obter o nome das discipl inas do depto INF01, desde que tenham

mais de 5 crédi tos.

6. Obter o código do prédio chamado Laboratórios.

7. Obter o código da sala e o código do prédio, desde que a sal a

tenha capacidade superior a 35 lugares.

8. Obter o nome dos professores que têm t i tulação 1 e que trabalham

no depto INF01.

9. Obter o nome dos professores que têm ti tulação 2 ou que

trabalham no depto INF01.

10. Retorne o código e o nome dos professores que possuem o

sobrenome Santos.

11. Sabendo que cada crédi to de discipl ina corresponde a 15hs-

aula, retorne o nome da discipl ina e o seu número de horas-aula.

Page 9: Lista+de+Exercicios+SQL+Server

Lista 02

1. Obtenha os nomes das di scipl inas seguidas do nome de seu

departamento.

2. Obtenha os nomes dos professores que possuem ti tulação de ‘Dr‘.

3. Obtenha os nomes dos professores que ministraram aulas em

1999/2.

4. Obtenha os números das salas do prédio de nome ’Laboratórios’

cuja capacidade seja maior que 30.

5. Obtenha os nomes das discipl inas que foram oferecidas em 2000/1.

6. Obtenha os números das salas do prédio "Laboratórios".

7. Obtenha os nomes dos professores seguidos do nome de seu

departamento.

8. Obtenha os códigos dos professores que não possuem turma em

1999/2.

9. Nomes dos departamentos que possuem discipl inas que não

apresentam pré-requisi to.

10. Obtenha os códigos dos professores que ministraram aulas em

1999/2 e 2000/1.

11. Obtenha os nomes dos departamentos em que há pelo menos uma

discipl ina com mais que três crédi tos.

Page 10: Lista+de+Exercicios+SQL+Server

Lista 03

1. Obter os códigos dos diferentes departamentos que tem turmas no

ano-semestre 2002/1

2. Obter os códigos dos professores que são do departamento de

código 'INF01' e que ministraram ao menos uma turma em 2002/1.

3. Obter os horários de aula (dia da semana,hora inicial e número de

horas ministradas) do professor "Antunes" em 2002/1.

4. Obter os nomes dos departamentos que têm turmas que, em

2002/1, têm aulas na sala 101 do prédio denominado 'Informática-

Aulas'.

5. Obter os códigos dos professores com tí tulo denominado 'Doutor'

que não ministraram aulas em 2002/1.

6. Obter os identi fi cadores das salas (código do prédio e número da

sala) que, em 2002/1:

a. nas segundas-fei ras (dia da semana = 2), tiveram ao menos uma

turma do departamento 'Informática',

e b. nas quartas-fei ras (dia da semana = 4), tiveram ao menos uma

turma ministrada pelo professor denominado 'Antunes'.

7. Obter o dia da semana, a hora de início e o número de horas de

cada horário de cada turma ministrada por um professor de nome

`Antunes', em 2002/1, na sala número 101 do prédio de código

43423.

8. Para cada discipl ina que possui pré-requisi to, obter o nome da

discipl ina seguido do nome da discipl ina que é seu pré-requisi to.

9. Obter os nomes das discipl inas que não são pré-requisi to.

10. Obter os nomes docentes cuja ti tulação tem código diferente de 3.

11. Obter os nomes dos departamentos que têm turmas que, em

2002/1, têm aulas na sala 101 do prédio denominado 'Informática-

Aulas'.

12. Obter o nome de cada departamento seguido do nome de cada

uma de suas discipl inas que possui mais que três crédi tos (caso o

departamento não tenha discipl inas ou caso o departamento não

tenha discipl inas com mais que três crédi tos, seu nome deve aparecer

seguido de vazio).

13. Obter o os nomes dos professores que são do departamento

denominado 'Informática', sejam doutores, e que, em 2002/2,

ministraram alguma turma de discipl ina do departamento

'Informática' que tenha mais que três créd i tos.

Page 11: Lista+de+Exercicios+SQL+Server

14. Obter o número de discipl inas do departamento denominado

‘Informática'.

15. Obter os nomes das discipl inas do departamento denominado

‘Informática’ que têm o maior número de crédi tos dentre as

discipl inas deste departamento.

16. Para cada departamento, obter seu nome e o número de

discipl inas do departamento.

Obter o resul tado em ordem descendente de número de discipl inas