Exercícios de Banco de Dados

download Exercícios de Banco de Dados

of 6

Transcript of Exercícios de Banco de Dados

  • 5/22/2018 Exerccios de Banco de Dados

    1/6

    Lista de exerccios de SQL SERVER

  • 5/22/2018 Exerccios de Banco de Dados

    2/6

    Lista de exerccios de SQL SERVER

    Usar o script abaixo para inserir dados no banco de Dados

    IFDB_ID('IMIH')ISNOTNULLBEGIN

    USEMasterDROPDATABASEIMIH

    END--------------------------------------------------------------------------------------------CREATEDATABASEIMIHGO--------------------------------------------------------------------------------------------USEIMIH

    --------------------------------------------------------------------------------------------CREATETABLEDepto(codDepto CHAR(5),

    nomeDeptoVARCHAR(20)PRIMARYKEY (codDepto));

    INSERTINTODeptoVALUES ('INF01','Informtica');INSERTINTODeptoVALUES ('MAT01','Matemtica');INSERTINTODeptoVALUES ('ELE01','Eletrnica');--------------------------------------------------------------------------------------------

    CREATETABLEDisciplina(codDepto CHAR(5),numDisc CHAR(5),nomeDisc VARCHAR(20),creditosDiscINTEGER,PRIMARYKEY (codDepto,numDisc),FOREIGNKEY (codDepto)REFERENCESDepto);

    INSERTINTODisciplinaVALUES ('INF01','DIS01','Ling Formais',4);INSERTINTODisciplinaVALUES ('INF01','DIS02','Teoria da Comp',4);INSERTINTODisciplinaVALUES ('INF01','DIS03','Programacao I',8);INSERTINTODisciplinaVALUES ('MAT01','DIS04','Clculo 1',4);INSERTINTODisciplinaVALUES ('MAT01','DIS01','Clculo 2',6);--------------------------------------------------------------------------------------------CREATETABLEPreReq(codDepto CHAR(5),

    numDisc CHAR(5),codDeptoPreReqCHAR(5),

    numDiscPreReq CHAR(5),PRIMARYKEY (codDepto,numDisc,codDeptoPreReq,numDiscPreReq),FOREIGNKEY (codDepto,numDisc) REFERENCESdisciplina,FOREIGNKEY (codDeptoPreReq,numDiscPreReq)REFERENCESdisciplina);

    INSERTINTOPreReqVALUES ('INF01','DIS02','INF01','DIS01');INSERTINTOPreReqVALUES ('MAT01','DIS04','MAT01','DIS01');INSERTINTOPreReqVALUES ('INF01','DIS03','INF01','DIS02');--------------------------------------------------------------------------------------------

    CREATETABLETurma(anoSem INTEGER,codDeptoCHAR(5),numDisc CHAR(5),siglaTurCHAR(5),capacTurINTEGER,PRIMARYKEY (anoSem,codDepto,numDisc,siglaTur),FOREIGNKEY (codDepto,numDisc)REFERENCESDisciplina);

    INSERTINTOturmaVALUES (20021,'INF01','DIS01','TUR01',30);INSERTINTOturmaVALUES (20022,'INF01','DIS01','TUR01',30);INSERTINTOturmaVALUES (20021,'INF01','DIS02','TUR02',30);INSERTINTOturmaVALUES (20022,'INF01','DIS03','TUR01',200);INSERTINTOturmaVALUES (20031,'INF01','DIS03','TUR02',30);INSERTINTOturmaVALUES (20021,'MAT01','DIS01','TUR01',15);INSERTINTOturmaVALUES (20022,'INF01','DIS03','TUR02',25);--------------------------------------------------------------------------------------------

    CREATETABLEPredio(codPred INTEGER,nomePredVARCHAR(30),PRIMARYKEY (codPred));

    INSERTINTOpredioVALUES (43423,'Informtica-Aulas');INSERTINTOpredioVALUES (43421,'Administrao');INSERTINTOpredioVALUES (43424,'Laboratrios');

    --------------------------------------------------------------------------------------------

  • 5/22/2018 Exerccios de Banco de Dados

    3/6

    Lista de exerccios de SQL SERVER

    CREATETABLESala(codPred INTEGER,numSala INTEGER,capacSalaINTEGER,PRIMARYKEY (codPred,numSala),FOREIGNKEY (codPred)REFERENCESPredio);

    INSERTINTOsalaVALUES (43423,101,30);INSERTINTOsalaVALUES (43421,102,50);

    INSERTINTOsalaVALUES (43424,215,40);--------------------------------------------------------------------------------------------CREATETABLEHorario(anoSem INTEGER,

    codDepto CHAR(5),

    numDisc CHAR(5),siglaTur CHAR(5),diaSem INTEGER,horaInicioCHAR(5),numHoras INTEGER,codPredio INTEGER,numSala INTEGER,PRIMARYKEY (anoSem,codDepto,numDisc,siglaTur,diaSem,horaInicio),FOREIGNKEY (anoSem,codDepto,numDisc,siglaTur)REFERENCESturma,FOREIGNKEY (codPredio,numSala) REFERENCESsala);

    INSERTINTOhorarioVALUES (20021,'INF01','DIS01','TUR01',2,'10:30',60,43423,101);INSERTINTOhorarioVALUES (20021,'INF01','DIS02','TUR02',3,'10:30',60,43423,101);INSERTINTOhorarioVALUES (20022,'INF01','DIS03','TUR02',4,'08:30',45,43424,215);INSERTINTOhorarioVALUES (20021,'INF01','DIS01','TUR01',4,'13:30',60,43423,101);--------------------------------------------------------------------------------------------

    CREATETABLETitulacao(codTit INTEGER,nomeTitVARCHAR(20),PRIMARYKEY (codTit));

    INSERTINTOTitulacaoVALUES (1,'Doutor');INSERTINTOTitulacaoVALUES (2,'Mestre');INSERTINTOTitulacaoVALUES (3,'Especialista');INSERTINTOTitulacaoVALUES (4,'Graduado');--------------------------------------------------------------------------------------------CREATETABLEProfessor(codProf CHAR(5),

    nomeProfVARCHAR(50),

    codTit INTEGER,codDeptoCHAR(5),PRIMARYKEY (codProf),FOREIGNKEY (codTit)REFERENCESTitulacao,FOREIGNKEY (codDepto)REFERENCESDepto);

    INSERTINTOProfessorVALUES ('Pro01','Antunes',1,'INF01');INSERTINTOProfessorVALUES ('Pro02','Maria dos Santos',2,'INF01');INSERTINTOProfessorVALUES ('Pro03','Paulo',3,'MAT01');INSERTINTOProfessorVALUES ('Pro04','Gabriel',2,'MAT01');--------------------------------------------------------------------------------------------CREATETABLEProfTurma(anoSem INTEGER,

    codDeptoCHAR(5),numDisc CHAR(5),siglaTurCHAR(5),codProf CHAR(5),

    PRIMARYKEY (anoSem,codDepto,numDisc,siglaTur,codProf),FOREIGNKEY (anoSem,codDepto,numDisc,siglaTur)REFERENCESTurma,FOREIGNKEY (codProf)REFERENCESProfessor);

    INSERTINTOProfTurmaVALUES (20021,'INF01','DIS01','TUR01','Pro01');INSERTINTOProfTurmaVALUES (20022,'INF01','DIS01','TUR01','Pro01');INSERTINTOProfTurmaVALUES (20021,'INF01','DIS02','TUR02','Pro02');

    INSERTINTOProfTurmaVALUES (20021,'MAT01','DIS01','TUR01','Pro03');INSERTINTOProfTurmaVALUES (20021,'MAT01','DIS01','TUR01','Pro02');

  • 5/22/2018 Exerccios de Banco de Dados

    4/6

    Lista de exerccios de SQL SERVER

    1) Obter todos os dados dos professores.2) Obter o cdigo e o nome dos professores.3) Obter a capacidade das turmas.4) Obter os diferentes valores de capacidades de turmas.5) Obter o nome das disciplinas do depto INF01, desde que tenham mais de 5 crditos.6) Obter o cdigo do prdio chamado Laboratrios.7) Obter o nmero da sala e o cdigo do prdio, desde que a sala tenha capacidade superior

    a 35 lugares.

    8) Obter o nome dos professores que tm titulao 1 e que trabalham no depto INF01.9) Obter o nome dos professores que tm titulao 2 ou que trabalham no depto INF01.10) Retorne o cdigo e o nome dos professores que possuem Santos no final.11) Sabendo que cada crdito de disciplina corresponde s 15h aula, retorne o nome da

    disciplina e o seu nmero de horas-aula.

    12) Obtenha os nomes das disciplinas seguidas do nome de seu departamento.13) Obtenha os nomes dos professores que possuem titulao de Doutor.14) Obtenha os nomes dos professores que ministraram aulas em 2002/2.15) Obtenha os nmeros das salas do prdio de nome Laboratrios cuja capacidade seja

    maior que 30.

    16) Obtenha os nomes das disciplinas que foram oferecidas em 2002/1.17) Obtenha os nmeros das salas do prdio "Laboratrios".18) Obtenha os nomes dos professores seguidos do nome de seu departamento.19) Obtenha os cdigos dos professores que no possuem turma em 1999/2.

  • 5/22/2018 Exerccios de Banco de Dados

    5/6

    Lista de exerccios de SQL SERVER

    20) Nomes dos departamentos que possuem disciplinas que no apresentam pr-requisito.21) Obtenha os cdigos dos professores que ministraram aulas em 1999/2 e 2002/2.22) Obtenha os nomes dos departamentos em que h pelo menos uma disciplina com mais de

    cinco crditos.

    23) Obter os cdigos dos diferentes departamentos que tem turmas no ano-semestre 2002/124) Obter os cdigos dos professores que so do departamento de cdigo 'INF01' e que

    ministraram ao menos uma turma em 20021.

    25) Obter os horrios de aula (dia da semana, horainicial e nmero de horas ministradas) doprofessor "Antunes" em 2002/1.

    26) Obter os nomes dos departamentos que tm turmas que, em 2002/1, tm aulas na sala101 do prdio denominado 'Informtica-Aulas'.

    27) Obter os cdigos dos professores com ttulo denominado 'Doutor' que no ministraramaulas em 2001/1.

    28) Obter os identificadores das salas (cdigo do prdio e nmero da sala) que, em 2002/1:nas segundas-feiras (dia da semana = 2), tiveram ao menos uma turma do departamento

    'Informtica'

    29) Nas quartas-feiras (dia da semana = 4), tiveram ao menos uma turma ministrada peloprofessor denominado 'Antunes' .

    30) Obter o dia da semana, a hora de incio e o nmero de horas de cada horrio de cadaturma ministrada por um professor de nome 'Antunes', em 2002/1, na sala nmero 101

    do prdio de cdigo 43423.

    31) Para cada disciplina que possui pr-requisito, obter o nome da disciplina seguido do nomeda disciplina que seu pr-requisito.

    32) Obter os nomes das disciplinas que no so pr-requisito.33) Obter os nomes docentes cuja titulao tem cdigo diferente de 3.34) Obter os nomes dos depar tamentos que tm turmas que, em 2002/1, tm aulas na sala

    101 do prdio denominado ' Informtica-Aulas'.

    35) Obter o nome de cada departamento seguido do nome de cada uma de suas disciplinasque possui mais que trs crditos (caso o departamento no tenha disciplinas ou caso o

    departamento no tenha disciplinas com mais que trs crditos, seu nome deve aparecer

    seguido de vazio).

    36) Obter os nomes dos professores que so do departamento denominado 'Informtica',sejam doutores, e que, em 2002/2, ministraram alguma turma de disciplina do

    departamento 'Informtica' que tenha mais que trs crditos.

    37) Obter o nmero de disciplinas do departamento denominado Informtica.

  • 5/22/2018 Exerccios de Banco de Dados

    6/6

    Lista de exerccios de SQL SERVER

    38) Obter os nomes das disciplinas do departamento denominado Informtica que tm omaior nmero de crditos dentre as disciplinas deste departamento.

    39) Para cada departamento, obter seu nome e o seu nmero de disciplinas. Obter oresultado em ordem descendente de nmero de disciplinas