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 est rangeiras. Create datab ase IMIH Use IMIH cr eate tabl e Depto (coddepto char(5), nomedepto var char(20 ), pri mary key (coddep to )); insert into Depto val ues ('INF01', 'Informáti ca');
insert into Depto val ues ('MA T01', 'Matemáti ca'); insert into Depto val ues ('ELE 01', 'El etrôni ca') ; cr eate tabl e Di sci plina (coddepto char(5), numdi sc ch ar(5), nomedi sc var ch ar(20), cr edi tosdi sc i nteger, pri mary key (coddep to, nu mdi sc), forei gn key (coddepto ) ref er en ces Depto ); insert into Di sci plina val ues ('INF01', 'DIS01', 'Li ng Formai s', 4 ); insert into Di sci plina val ues ('INF01', 'DIS02', 'Teori a da Co mp', 4); insert into Di sci plina val ues ('INF01', 'DIS03', 'Programacao I', 8); insert into Di sci plina val ues ('MA T01', 'DIS0 4', 'Cál cu lo 1', 4); insert into Di sci plina val ues ('MA T01', 'DIS0 1', 'Cál cu lo 2', 6); cr eate tabl e PreReq (coddepto char(5), numdi sc ch ar(5), coddeptoprereq ch ar(5), numdi scprereq ch ar(5), pri mary key (coddep to, nu mdi sc, coddepto PreReq, numdi scp rereq), forei gn key (coddepto, nu mdi sc) r ef er ences di sci plina, forei gn key (coddepto PreReq, numdiscp rereq) references di sci plina);
insert into PreReq val ues ('INF01', 'DIS02', 'INF01', 'DIS01'); insert into PreReq val ues ('MA T01', 'DIS0 4', 'MAT01', 'DIS01'); insert into PreReq val ues ('INF01', 'DIS03', 'INF01', 'DIS02'); cr eate tabl e Turma (anosem i nteger, coddepto char(5), numdi sc ch ar(5), si gl atur char(5), capactur in teger, pri mary key (anosem, coddep to, nu mdisc, si gl atur), forei gn key (coddepto, nu mdi sc) r ef er ences Di sci pli na); val ues (20021, 'INF01 ', 'DIS01', 'TUR01', 30); val ues (20022, 'INF01 ', 'DIS01', 'TUR01', 30); val ues (20021, 'INF01 ', 'DIS02', 'TUR02', 30); val ues (20022, 'INF01 ', 'DIS03', 'TUR01', 200); val ues (20031, 'INF01 ', 'DIS03', 'TUR02', 30); val ues (20021, 'MAT01', 'DIS01', 'TUR01', 15);
val ues (20022, 'INF01 ', 'DIS03', 'TUR02', 25); cr eate tabl e Predi o (codp red i nteger, nomepred varchar(3 0), pri mary key (codp red)); insert into predi o val ues (43423, 'Informáti ca-aul as'); insert into predi o val ues (43421, 'Admini stração'); insert into predi o val ues (43424, 'Labor atóri os'); cr eate tabl e Sal a (codp red i nteger, numsal a integer, capacs al a i nteger, pri mary key (codp red, n umsal a), forei gn key( codp red)r ef eren ces Predi o); insert into sal a val ues (43423, 101, 3 0); insert into sal a val ues (43421, 102, 5 0); insert into sal a val ues (43424, 215, 4 0); cr eate tabl e Hor ario (anosem i nteger, coddepto char(5), numdi sc ch ar(5), si gl atur char(5), di asem i nteger,
horaini ci o char(5), numho ras i nteger, codpredi o integer, numsal a integer, pri mary key (anosem, coddep to, nu mdisc, si gl atur, di asem, horaini ci o), forei gn key (anosem, coddep to, nu mdi sc, si gl atur) refer en ces turma, forei gn key (codp redi o, numsal a) ref eren ces sal a); insert into horario val ues (20021, 'INF01 ', 'DIS01', 'TUR01', 2, '10:30', 60, 43423, 101); insert into horario val ues (20021, 'INF01 ', 'DIS02', 'TUR02', 3, '10:30', 60, 43423, 101); insert into horario val ues (20022, 'INF01 ', 'DIS03', 'TUR02', 4, '08:30', 45, 43424, 215); insert into horario val ues (20021, 'INF01 ', 'DIS01', 'TUR01', 4, '13:30', 60, 43423, 101); cr eate tabl e Ti tul acao (codtit integer, nometi t var ch ar(20), pri mary key (codtit)); insert into Ti tul acao val ues (1, 'Doutor'); insert into Ti tul acao val ues (2, 'Mestre'); insert into Ti tul acao val ues (3, 'Especi ali sta') ; insert into Ti tul acao val ues (4, 'Graduado');
cr eate tabl e Professor (codp rof char(5 ), nomeprof var char(50), codti t integer, coddepto char(5), pri mary key (codp rof), forei gn key (codtit) refer ences Ti tul acao, forei gn key (coddepto ) ref er en ces Depto ); insert into Professo r val ues ('Pro01', 'Antunes', 1, 'INF01'); insert into Professo r val ues ('Pro02', 'Mari a dos Santo s', 2, 'INF01'); insert into Professo r val ues ('Pro03', 'Paulo', 3, 'MAT01'); insert into Professo r val ues ('Pro04', 'Gabri el ', 2, 'MAT01'); cr eate tabl e ProfTurma (anosem i nteger, coddepto char(5), numdi sc ch ar(5), si gl atur char(5), codprof char(5), pri mary key (anosem, coddep to, nu mdisc, si gl atur, codprof), forei gn key (anosem, coddep to, nu mdi sc, si gl atur) refer en ces Tu rma, forei gn key (codp rof) referen ces Professor); insert into ProfTurma val ues (20021, 'INF01 ', 'DIS01', 'TUR01', 'Pro 01'); insert into ProfTurma val ues (20022, 'INF01 ', 'DIS01', 'TUR01', 'Pro 01'); insert into ProfTurma
val ues (20021, 'INF01 ', 'DIS02', 'TUR02', 'Pro 02'); insert into ProfTurma val ues (20021, 'MAT01', 'DIS01', 'TUR01', 'Pro 03'); insert into ProfTurma val ues (20021, 'MAT01', 'DIS01', 'TUR01', 'Pro 02');
Lista 01 1. Obter todos os dado s dos professores. 2. Obter o có di go e o nome dos professores. 3. Obter a capaci dade d as turmas. 4. Obter os di ferentes val ores de cap aci dades de turmas. 5. Obter o nome d as di sci plinas do depto INF01, desde qu e tenham mai s de 5 cr édi tos. 6. Obter o có di go do prédi o ch amado Laborató rio s. 7. Obter o código da sal a e o có di go do prédi o, desde qu e a sal a tenh a capaci dade superi or a 35 lugares. 8. Obter o nome dos professo res qu e têm ti tul ação 1 e qu e tr abal ham no depto INF01. 9. Obter o nome do s pro fessores qu e têm ti tul ação 2 ou que tr abal h am no depto INF01. 10. Retorne o códi go e o nome do s professores que po ssuem o sobreno me S antos. 11. Sabendo que cad a cr édi to de di sci plina co rr esponde a 15hsaul a, retorn e o nome da di sci pli n a e o seu número de horas-au l a.
Lista 02 1. Obtenh a os nomes das di sci plinas segui das do no me de seu departamento. 2. Obtenh a os nomes dos prof essor es que possu em ti tul ação de Dr. 3. Obtenh a os nomes dos prof essor es que mi ni straram aul as em 1999/2. 4. Obtenh a os número s das sal as do prédio de nome Labor atórios cuja capaci dade seja mai or que 30. 5. Obtenh a os nomes das di sci plinas que fo ram ofer eci das em 2000/1. 6. Obtenh a os número s das sal as do prédio "Labor atóri os". 7. Obtenh a os nomes dos prof essor es segui dos do nome de seu departamento. 8. Obtenh a os códi gos dos professor es que não possuem turma em 1999/2. 9. Nomes dos d epartamentos qu e possu em di sci plinas qu e não apr esentam pr é-r equi si to. 10. Obtenha o s có di gos dos professo res que mi ni strar am aul as em 1999/2 e 200 0/1. 11. Obtenha o s nomes do s dep artamentos em que h á pel o menos uma di sci plina com mai s qu e três cr édi to s.
Lista 03 1. Obter o s códi gos dos diferentes depar tamen tos que tem turmas no ano-semestre 2 002/1 2. Obter o s códi gos dos professo res qu e são do departamento de códi go 'INF01' e qu e mi ni straram ao menos u ma tur ma em 2002/1. 3. Obter o s horários de aul a (di a da seman a,ho ra i ni ci al e n úmero de horas mi ni str adas) do professor "An tu nes" em 2002/1. 4. Obter o s nomes do s departamentos que têm turmas qu e, em 2002/1, têm au l as na s al a 1 01 do prédi o denomi nado ' Informáti ca- Aul as'. 5. Obter o s códi gos dos professo res co m tí tul o denomi nado 'Do utor' que não mi ni straram aul as em 2002/1. 6. Obter o s i denti fi cadores das sal as (códi go do prédi o e número da sal a) que, em 200 2/1: a. nas segu ndas-f ei ras (di a da seman a = 2), ti ver am ao menos uma turma do depar tamen to 'Informáti ca', e b. n as quar tas-f ei ras (di a d a seman a = 4), ti veram ao menos u ma turma mi ni strada pel o pro fessor denominado 'Antunes'. 7. Obter o di a da seman a, a hora de i ní cio e o nú mero de ho ras d e cada horári o de cada turma mi ni strada por u m professor de nome `Antunes', em 20 02/1, na sal a número 101 do prédio de códi go 43423. 8. Para cada di sci plin a que possui pré-requi si to, obter o no me da di sci plina segui do do no me da di sci plina que é seu pré-requi si to. 9. Obter o s nomes das di sci pli nas que não são pr é-requi si to. 10. Obter o s nomes do cen tes cu ja ti tul ação tem códi go diferente de 3. 11. Obter o s nomes do s dep ar tamento s que têm turmas qu e, em 2002/1, têm au l as na s al a 1 01 do prédi o denomi nado ' Info rmáti ca- Aul as'. 12. Obter o n ome d e cad a departamen to segui do do nome de cada uma d e su as di sci plin as qu e possui mai s que tr ês cr édi tos (caso o departamento não tenha di sci plin as o u caso o dep artamento não tenha disci pli nas com mai s que três cr édi tos, seu n ome deve ap ar ecer segui do de vazi o). 13. Obter o o s nomes dos professores que são do depar tamento deno mi nado 'Informáti ca', sejam doutores, e qu e, em 2002/2, mi ni straram al guma turma de di sci plina do departamento 'Informáti ca' qu e tenha mai s que três créd i to s.
14. Obter o n úmero de di sci plinas do depar tamento denomi nado Informáti ca'. 15. Obter o s nomes das di sci pli nas do departamento deno mi nado Informáti ca qu e têm o mai or número de cr édi tos dentr e as di sci plinas deste dep artamento. 16. Para cada depar tamento, obter seu nome e o número de di sci plinas do departamento. Obter o resul tado em ordem d escendente de número de di sci pl inas