Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.99 KB | None | 0 0
  1. DROP TABLE fischer CASCADE CONSTRAINTS;
  2. DROP TABLE fisch CASCADE CONSTRAINTS;
  3. DROP TABLE fang CASCADE CONSTRAINTS;
  4.  
  5.  
  6. CREATE TABLE fischer(
  7. fnr INT ,
  8. fname VARCHAR2(30),
  9. lizenznr INT,
  10. latein VARCHAR2(1),
  11. gebdatum DATE,
  12. boot VARCHAR2(30),
  13. CONSTRAINT pk_fischer PRIMARY KEY (fnr),
  14. CONSTRAINT ck_latein CHECK (latein IN ('j','n'))
  15. );
  16.  
  17. CREATE TABLE fisch(
  18. finr INT,
  19. finame VARCHAR2(30),
  20. CONSTRAINT pk_fisch PRIMARY KEY (finr)
  21. );
  22.  
  23. CREATE TABLE fang(
  24. fangnr INT,
  25. fnr INT,
  26. finr INT,
  27. gewicht INT,
  28. CONSTRAINT pk_fang PRIMARY KEY (fangnr),
  29. CONSTRAINT fk_fanr FOREIGN key (fnr) REFERENCES fischer(fnr),
  30. CONSTRAINT fk_finr FOREIGN key (finr) REFERENCES fisch(finr)
  31. );
  32.  
  33. INSERT INTO fischer VALUES(1,'Fischer Emil',1000,'j',TO_DATE('14.02.1992'),'Opel Admiral');
  34. INSERT INTO fischer VALUES(2,'Fischer Zeus',1001,'n',TO_DATE('11.02.1992'),'Opel Corsa');
  35. INSERT INTO fischer VALUES(3,'Fischer Dorli',1002,'j',TO_DATE('06.02.1991'),'Opel Rekord');
  36. INSERT INTO fischer VALUES(4,'Fischer Vreni',1003,'n',TO_DATE('06.02.1989'),'Opel Corsa');
  37. INSERT INTO fischer VALUES(5,'Fischer Franz',1004,'j',TO_DATE('06.02.1989'),'Isetta');
  38. INSERT INTO fischer VALUES(6,'Fischer Siegi',1005,'j',TO_DATE('06.02.1989'),'Opel Corsa');
  39. INSERT INTO fischer VALUES(7,'Fischer Susi',1006,'j',TO_DATE('06.02.1989'),'NSU Prinz 1200');
  40. INSERT INTO fischer VALUES(8,'Anton',1007,'n',TO_DATE('24.01.2006'),'Opel Corsa');
  41. INSERT INTO fischer VALUES(9,'Susi',1008,'j',TO_DATE('06.02.1989'),'Isetta');
  42. INSERT INTO fischer VALUES(10,'Amir',1009,'j',TO_DATE('06.02.1989'),'NSU Prinz 1200');
  43. INSERT INTO fischer VALUES(11,'Ausi',1066,'j',TO_DATE('06.02.1969'),'Opel Kadett');
  44. INSERT INTO fischer VALUES(12,'Fischer A',1007,'n',TO_DATE('20.09.2005'),'Isetta');
  45. INSERT INTO fischer VALUES(13,'Fischer A',1007,'n',TO_DATE('19.09.2005'),'NSU Prinz 1200');
  46. INSERT INTO fischer VALUES(14,'Fischer C',1007,'n',TO_DATE('21.09.2005'),'Opel Diplomat');
  47. INSERT INTO fischer VALUES(15,'Amir',1019,'n',TO_DATE('06.02.1979'),'NSU Prinz 1200');
  48.  
  49. INSERT INTO fisch VALUES(1,'Aal');
  50. INSERT INTO fisch VALUES(2,'Forelle');
  51. INSERT INTO fisch VALUES(3,'Hai');
  52. INSERT INTO fisch VALUES(4,'Wal');
  53. INSERT INTO fisch VALUES(5,'Seepferd');
  54. INSERT INTO fisch VALUES(6,'Tintenfisch');
  55. INSERT INTO fisch VALUES(7,'Scampi');
  56. INSERT INTO fisch VALUES(8,'Mur‰ne');
  57.  
  58. INSERT INTO fang VALUES(1,1,1,1000);
  59. INSERT INTO fang VALUES(2,1,2,1001);
  60. INSERT INTO fang VALUES(3,1,3,1002);
  61. INSERT INTO fang VALUES(4,1,4,1003);
  62. INSERT INTO fang VALUES(5,2,5,1);
  63. INSERT INTO fang VALUES(6,2,6,2);
  64. INSERT INTO fang VALUES(7,1,7,15);
  65. INSERT INTO fang VALUES(8,1,1,15);
  66. INSERT INTO fang VALUES(9,1,1,9);
  67. INSERT INTO fang VALUES(10,2,1,10);
  68. INSERT INTO fang VALUES(11,2,6,20);
  69. INSERT INTO fang VALUES(13,10,1,11);
  70.  
  71. a) Gib von allen Fischern, die Latein kˆnnen, den Namen aus, sofern dieser
  72. mindestens 5 Buchstaben hat. Hat er weniger Buchstaben, so darf der Fischer
  73. nur dann in Ausgabe, wenn der Name mit 'A' anf‰ngt und mit 'R' aufhˆrt,
  74. Latein ist nach wie vor Voraussetzung.
  75.  
  76. SELECT * FROM fischer
  77. WHERE latein = 'j' AND (LENGTH(fname) >= 5 OR UPPER(fname) LIKE 'A%R');
  78.  
  79. b) Gib jene Fischer aus, die bisher noch nichts gefangen haben und auch keinen Opel fahren.
  80.  
  81. SELECT * FROM fischer LEFT JOIN fang ON fischer.fnr = fang.fnr
  82. WHERE fang.fnr IS NULL AND boot NOT LIKE '%Opel%';
  83.  
  84. oder
  85.  
  86. SELECT * FROM fischer
  87. WHERE fnr NOT IN (SELECT fnr FROM fang) AND boot NOT LIKE '%Opel%';
  88.  
  89. c) Welche Fischer sind an einem Dienstag geboren und haben das 12. Lebensjahr noch nicht vollendet?
  90.  
  91. SELECT fnr, fname, TO_CHAR(gebdatum,'DAY') AS "Wochentag", gebdatum FROM fischer
  92. WHERE TO_CHAR(gebdatum,'DAY') LIKE 'DIE%' AND gebdatum + INTERVAL '12' YEAR > SYSDATE;
  93.  
  94.  
  95. d) Welche Fischer sind ¸berdurchschnittlich alt? Der ƒlteste soll jedoch nicht ausgegeben werden.
  96. SELECT * FROM fischer
  97. WHERE (SYSDATE - gebdatum) > (SELECT AVG(SYSDATE - gebdatum) FROM fischer)
  98. AND gebdatum > (SELECT MIN(gebdatum) FROM fischer);
  99.  
  100. e) Welche Fischer haben zwar zumindest einen Aal aber noch nie einen Esel gefangen?
  101. SELECT * FROM fischer INNER JOIN fang ON fischer.fnr = fang.fnr
  102. INNER JOIN fisch ON fang.finr = fisch.finr
  103. WHERE finame LIKE 'Aal'
  104. AND fischer.fnr NOT IN ( SELECT fang.fnr FROM fang INNER JOIN fisch ON fang.finr = fisch.finr
  105. WHERE finame LIKE 'Esel'
  106. );
  107.  
  108.  
  109.  
  110. --Welche Bootsklassen haben die meisten Fischer und wie viele sind dasfl
  111.  
  112. SELECT COUNT(*), boot
  113. FROM fischer
  114. GROUP BY boot
  115. HAVING COUNT(*) >= ALL (
  116. SELECT COUNT(*)
  117. FROM fischer
  118. GROUP BY boot
  119. );
  120.  
  121. --Welcher Fischer hat die meisten Fische gefangen und wieviele Fische sind das?
  122.  
  123. SELECT fischer COUNT(*) FROM fang
  124. GROUP BY fischer
  125. HAVING COUNT(*) = (
  126. SELECT MAX (COUNT(*)) FROM fang
  127. GROUP BY fischer
  128. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement