home *** CD-ROM | disk | FTP | other *** search
/ ftp.disi.unige.it / 2015-02-11.ftp.disi.unige.it.tar / ftp.disi.unige.it / pub / .person / MesitiM / teach / sol5.txt < prev    next >
Text File  |  2003-04-14  |  4KB  |  123 lines

  1. INSERT INTO PROFESSORI VALUES (38, 'PRINI', 'GIANFRANCO', 50000)
  2.  
  3. INSERT INTO PROFESSORI VALUES (39, 'BANDINI', 'STEFANIA', DEFAULT)
  4. /* stipendio ammatte anche valori nulli
  5. INSERT INTO PROFESSORI VALUES (39, 'BANDINI', 'STEFANIA', NULL)
  6. */
  7. INSERT INTO PROFESSORI VALUES (40, 'ROSTI', NULL, DEFAULT)
  8. /** non va a buon fine perchΘ il nome non pu≤ essere null **/
  9. --2
  10. INSERT INTO LAUREATI
  11. SELECT MATRICOLA, LAUREA, PROFESSORI.COGNOME, CORSIDILAUREA.DENOMINAZIONE 
  12. FROM STUDENTI JOIN PROFESSORI ON RELATORE=PROFESSORI.ID JOIN CORSIDILAUREA ON 
  13. CORSIDILAUREA.ID=CORSODILAUREA WHERE LAUREA IS NOT NULL
  14. --3
  15. DELETE FROM PIANIDISTUDIO
  16. WHERE STUDENTE IN (SELECT MATRICOLAS FROM LAUREATI)
  17. --4
  18. UPDATE CORSI 
  19. SET DENOMINAZIONE='Basi di Dati 1 - Nuova Laurea'
  20. WHERE DENOMINAZIONE = 'Basi di Dati 1' AND CORSODILAUREA= (SELECT ID FROM CORSIDILAUREA 
  21. WHERE DENOMINAZIONE = 'INFORMATICA')
  22. --5
  23. UPDATE PROFESSORI 
  24. SET STIPENDIO = STIPENDIO + 5000
  25. WHERE STIPENDIO < 15000
  26.  
  27.  
  28. /** VIEW **/
  29.  
  30. --1
  31. CREATE VIEW STUDENTINONINTESI AS
  32. SELECT MATRICOLA,COGNOME,NOME,RESIDENZA,DATANASCITA,LUOGONASCITA,CORSODILAUREA,ISCRIZIONE
  33. FROM STUDENTI WHERE RELATORE IS NULL
  34. --2
  35. INSERT INTO STUDENTINONINTESI
  36. VALUES ('EC503905', 'CAMOSSI', 'ELENA', 'GENOVA', '04/29/1975', 'BRENO', '9', '1994/1995')
  37. --3
  38. INSERT INTO STUDENTINONINTESI
  39. SELECT 'FA2002165B', COGNOME, NOME, RESIDENZA, DATANASCITA, LUOGONASCITA,'9','2001/2002'
  40. FROM STUDENTI JOIN CORSIDILAUREA ON CORSODILAUREA = ID
  41.  WHERE COGNOME = 'FANIZZI' AND NOME = 'ANGELA' AND DENOMINAZIONE = 'MATEMATICA'
  42.  
  43. --4
  44. CREATE VIEW STUDENTIMATE as
  45. SELECT * FROM STUDENTI JOIN CORSIDILAUREA ON CORSODILAUREA=CORSIDILAUREA.ID
  46. WHERE  DENOMINAZIONE = 'MATEMATICA' AND ISCRIZIONE > '1999/2000'
  47.  
  48. --5 
  49. CREATE VIEW PROFRICCHI AS
  50. SELECT * FROM PROFESSORI
  51. WHERE STIPENDIO > 35000
  52.  
  53. insert into ProfRicchi values (80, 'Ancona', 'Massimo', 40000)
  54.  
  55. insert into ProfRicchi values (81, 'Catania', 'Barbara', 20000)
  56.  
  57. -- Vengono permessi entrambi gli inserimenti. Per impedire il secondo occorre utilizzare la CHECK OPTION
  58.  
  59. CREATE VIEW PROFRICCHI2 AS
  60. SELECT * FROM PROFESSORI
  61. WHERE STIPENDIO > 35000
  62. WITH CHECK OPTION
  63.  
  64.  
  65. --6
  66. UPDATE STUDENTINONINTESI
  67. SET CORSODILAUREA = 9, ISCRIZIONE = '2001/2002'
  68. WHERE COGNOME = 'GELLINI' AND NOME = 'MARCO' 
  69. AND ISCRIZIONE = '1999/2000'
  70.  
  71. /*-- alternativa: select nella set
  72. UPDATE STUDENTINONINTESI
  73. SET CORSODILAUREA = = (SELECT ID FROM CORSIDILAUREA 
  74.             WHERE DENOMINAZIONE='INFORMATICA'), ISCRIZIONE = '2001/2002'
  75. WHERE COGNOME = 'GELLINI' AND NOME = 'MARCO' AND ISCRIZIONE = '1999/2000'
  76. */
  77. --7
  78. UPDATE STUDENTINONINTESI
  79. SET CORSODILAUREA = (SELECT ID FROM CORSIDILAUREA 
  80.             WHERE DENOMINAZIONE = 'FISICA'), 
  81. ISCRIZIONE = '2001/2002'
  82. WHERE CORSODILAUREA=(SELECT ID FROM CORSIDILAUREA 
  83. WHERE DENOMINAZIONE = 'MATEMATICA' AND ISCRIZIONE = '2000/2001')
  84. --8
  85. DELETE FROM STUDENTINONINTESI
  86. WHERE ISCRIZIONE < '1990/1991'
  87.  
  88.  
  89. /* Operazioni insiemistiche */
  90.  
  91. -- In SQL-server e' presente solo l'operatore UNION. Gli altri operatori
  92. -- non sono supportati e le interrogazioni vanno risolte utilizzando 
  93. -- sotto interrogazioni 
  94.  
  95. -- 1
  96. SELECT cognome, nome
  97. FROM professori
  98. UNION
  99. SELECT cognome, nome
  100. FROM studenti
  101.  
  102.  
  103. -- 2
  104. SELECT cognome, nome, 'professore'
  105. FROM professori
  106. UNION
  107. SELECT cognome, nome, 'studente'
  108. FROM studenti
  109.  
  110. -- La cardinalita' degli insiemi restituiti non e' uguale perche' nel primo 
  111. -- caso vengono eliminati i duplicati. Per impedirlo usare la clausola UNION ALL
  112.  
  113. -- 3
  114. SELECT X.cognome, X.nome
  115. FROM professori X
  116. where EXISTS (SELECT * FROM studenti where cognome = X.cognome and nome = X.nome)
  117.  
  118.  
  119. -- 4
  120. SELECT X.cognome, X.nome
  121. FROM professori X
  122. where NOT EXISTS (SELECT * FROM studenti where cognome = X.cognome and nome = X.nome)
  123.