Lösungen zu ausgewählten Aufgaben

Inhaltsübersicht

Lösungen zu ausgewählten Aufgaben. 2

A.6.3. 2

A.7.1. 2

A.7.2. 3

A.7.3. 3

A.7.4. 3

A.7.5. 3

A.7.6. 4

A.7.7. 4

A.7.8. 4

A.7.9. 4

A.7.10. 5

A.7.11. 5

A.7.12. 5

A.7.13. 5

A.7.14. 6

A.8.1. 6

A.8.2. 6

A.8.3. 7

A.8.4. 7

A.8.5. 7

A.8.6. 7

A.8.7. 8

A.8.8. 8

A.9.1. 8

A.9.2. 9

A.9.3. 9

A.9.4. 9

A.9.5. 10

A.9.6. 10

A.9.7. 10

A.11.1. 10

A.11.2. 11

A.11.3. 11

A.11.5. 11

A.11.6. 11

A.11.7. 12

A.12.1. 12

          

Anhang B

 

 

Lösungen zu ausgewählten Aufgaben

 

 

 

 

A.6.3               

CREATE TABLE systeme

                              (sys_name CHAR(15) NOT NULL,

                               version INTEGER NOT NULL,

                               hersteller CHAR(20),

                               ort  CHAR(20));

 

Zurück zum Inhaltsverzeichnis

 

 

A.7.1

                SELECT *

                                 FROM arbeiten;

 

                              SELECT *

                                 FROM mitarbeiter;

 

Zurück zum Inhaltsverzeichnis

 

 

A.7.2

                SELECT m_nr

                                 FROM arbeiten

                                 WHERE aufgabe = 'Sachbearbeiter';

 

Zurück zum Inhaltsverzeichnis

 

 

A.7.3

                SELECT m_nr

                                 FROM arbeiten

                                 WHERE pr_nr = 'p2' AND m_nr < 10000;

 

Zurück zum Inhaltsverzeichnis

 

 

A.7.4

                SELECT m_nr

                                 FROM arbeiten

                                 WHERE einst_dat NOT BETWEEN

                                 '01-jan-1988' AND '31-dec-1988';

 

Zurück zum Inhaltsverzeichnis

 

 

A.7.5

                SELECT m_nr

                                 FROM arbeiten

                                 WHERE pr_nr = 'p1'

                                 AND (aufgabe='Projektleiter'

                                 OR   aufgabe='Gruppenleiter');

 

Zurück zum Inhaltsverzeichnis

 

 

A.7.6

                SELECT einst_dat

                                 FROM arbeiten

                                 WHERE pr_nr='p2'

                                 AND aufgabe IS NULL;

 

Zurück zum Inhaltsverzeichnis

 

 

A.7.7

                SELECT m_nr, m_name, m_vorname

                                 FROM mitarbeiter

                                 WHERE (m_name LIKE 'M%'

                                 OR  m_name LIKE 'H%')

                                 AND m_name LIKE '%er';

 

Zurück zum Inhaltsverzeichnis

 

 

A.7.8

                SELECT m_nr

                                 FROM mitarbeiter

                                 WHERE abt_nr =

                                 (SELECT *

                                     FROM abteilung

                                     WHERE stadt = 'Stuttgart');

 

Zurück zum Inhaltsverzeichnis

 

 

A.7.9

                SELECT m_name, m_vorname

                                 FROM mitarbeiter

                                 WHERE m_nr =

                                 (SELECT m_nr

                                     FROM arbeiten

                                     WHERE einst_dat ='01-apr-1989');

 

Zurück zum Inhaltsverzeichnis

 

 

A.7.10

               SELECT stadt

                                  FROM abteilung

                                  GROUP BY stadt;

 

Zurück zum Inhaltsverzeichnis

 

 

A.7.11

               SELECT max(m_nr)

                                 FROM mitarbeiter;

 

Zurück zum Inhaltsverzeichnis

 

 

A.7.12

               SELECT aufgabe

                                 FROM arbeiten

                                 GROUP  BY aufgabe

                                 HAVING COUNT(*) > 2;

Zurück zum Inhaltsverzeichnis

 

A.7.13

               SELECT DISTINCT m_nr

                                 FROM arbeiten

                                 WHERE aufgabe = 'Sachbearbeiter'

                                 OR m_nr IN

                                 (SELECT m_nr

                                    FROM mitarbeiter

                                    WHERE abt_nr IN

                                    (SELECT abt_nr

                                        FROM abteilung

                                        WHERE abt_nr = 'a3'));

 

Zurück zum Inhaltsverzeichnis

 

 

A.7.14

   Die  innere SELECT-Anweisung darf eine einzige Reihe

                  als Ergebnis liefern, falls sie im Zusammenhang  mit

                  einem  Vergleichsoperator  erscheint (in diesem Fall

                  "="). Das Gleichheitszeichen muß durch den

                  IN-Operator

                      ersetzt werden.

 

Zurück zum Inhaltsverzeichnis

 

 

A.8.1

           SELECT *

                            FROM projekt, arbeiten

                            WHERE projekt.pr_nr=arbeiten.pr_nr;

 

                         SELECT projekt.*,m_nr,aufgabe, einst_dat

                             FROM projekt, arbeiten

                             WHERE projekt.pr_nr=arbeiten.pr_nr;

 

                         SELECT *

                            FROM projekt,arbeiten;

 

Zurück zum Inhaltsverzeichnis

 

 

A.8.2

           SELECT m_nr, aufgabe

                            FROM arbeiten, projekt

                            WHERE arbeiten.pr_nr = projekt.pr_nr

                            AND pr_name='Gemini';

 

Zurück zum Inhaltsverzeichnis

 

 

A.8.3

         SELECT m_name,m_vorname

                           FROM mitarbeiter, abteilung

                           WHERE mitarbeiter.abt_nr=abteilung.abt_nr

                     AND (abt_name='Beratung' OR abt_name='Diagnose');

 

Zurück zum Inhaltsverzeichnis

 

 

A.8.4

           SELECT einst_dat

                            FROM arbeiten, mitarbeiter

                            WHERE arbeiten.m_nr=mitarbeiter.m_nr

                            AND aufgabe = 'Sachbearbeiter'

                            AND abt_nr = 'a2';

 

Zurück zum Inhaltsverzeichnis

 

 

A.8.5

           SELECT pr_name

                            FROM projekt

                            WHERE pr_nr =

                            (SELECT pr_nr

                                FROM arbeiten

                                WHERE aufgabe='Sachbearbeiter'

                                GROUP BY pr_nr

                                HAVING COUNT(*) > 1);

 

Zurück zum Inhaltsverzeichnis

 

 

A.8.6

           SELECT m_name, m_vorname

                            FROM mitarbeiter,arbeiten,projekt

                            WHERE mitarbeiter.m_nr=arbeiten.m_nr

                            AND arbeiten.pr_nr=projekt.pr_nr

                            AND pr_name = 'Merkur'

                            AND aufgabe = 'Gruppenleiter';

 

Zurück zum Inhaltsverzeichnis

 

A.8.7

           SELECT a.m_nr

                            FROM mitarbeiter a, mitarbeiter b

                            WHERE a.wohnort = b.wohnort

                            AND a.abt_nr = b.abt_nr

                            AND a.m_nr <> b.m_nr;

 

Zurück zum Inhaltsverzeichnis

 

 

A.8.8

           SELECT m_nr

                            FROM mitarbeiter,abteilung

                            WHERE mitarbeiter.abt_nr=abteilung.abt_nr

                            AND abt_name = 'Freigabe';

 

                         SELECT m_nr

                            FROM mitarbeiter

                            WHERE abt_nr =

                            (SELECT abt_nr

                                FROM abteilung

                                WHERE abt_name = 'Freigabe');

 

Zurück zum Inhaltsverzeichnis

 

 

A.9.1

           CREATE TABLE mit_a1_a2

                          (m_nr INTEGER NOT NULL,

                           m_name CHAR(20) NOT NULL,

                           m_vorname CHAR(20) NOT NULL);

 

                          INSERT INTO mit_a1_a2(m_nr,m_name,m_vorname)

                             SELECT m_nr,m_name,m_vorname

                                FROM mitarbeiter

                                WHERE abt_nr IN ('a1','a2');

 

Zurück zum Inhaltsverzeichnis

 

 

A.9.2

            CREATE TABLE mit_1989

                            (m_nr INTEGER NOT NULL,

                             m_name CHAR(20) NOT NULL,

                             m_vorname CHAR(20) NOT NULL);

 

                          INSERT INTO mit_1989(m_nr,m_name,m_vorname)

                             SELECT mitarbeiter.m_nr,m_name,m_vorname

                             FROM mitarbeiter, arbeiten

                             WHERE mitarbeiter.m_nr=arbeiten.m_nr

                             AND einst_dat BETWEEN '01-jan-1989'

                                               AND '31-dec-1989';

 

Zurück zum Inhaltsverzeichnis

 

 

A.9.3

             UPDATE arbeiten

                             SET aufgabe = 'Sachbearbeiter'

                             WHERE aufgabe = 'Gruppenleiter'

                             AND pr_nr = 'p1';

 

Zurück zum Inhaltsverzeichnis

 

 

A.9.4

             UPDATE projekt

                             SET mittel = NULL;

 

Zurück zum Inhaltsverzeichnis

 

 

A.9.5

             UPDATE arbeiten

                             SET aufgabe = 'Gruppenleiter'

                             WHERE m_nr = 28559;

 

Zurück zum Inhaltsverzeichnis

 

 

A.9.6

             DELETE FROM abteilung

                             WHERE stadt = 'Muenchen';

 

Zurück zum Inhaltsverzeichnis

 

 

A.9.7

             DELETE FROM mitarbeiter

                             WHERE m_nr IN

                             (SELECT m_nr

                                 FROM arbeiten

                                 WHERE pr_nr = 'p3');

 

                          DELETE FROM projekt

                             WHERE pr_nr = 'p3';

 

Zurück zum Inhaltsverzeichnis

 

 

A.11.1

    CREATE VIEW v_mit_1988(nummer,name,vorname,abt)

                    AS SELECT mitarbeiter.m_nr,m_name,m_vorname,abt_nr

                          FROM mitarbeiter, arbeiten

                          WHERE mitarbeiter.m_nr=arbeiten.m_nr

                          AND einst_dat BETWEEN '01-jan-1988'

                                            AND '31-dec-1988';

 

Zurück zum Inhaltsverzeichnis

 

 

A.11.2

           CREATE VIEW v_mit_a3

                            AS SELECT m_nr, m_name, m_vorname

                                  FROM mitarbeiter

                                  WHERE abt_nr = 'a3';

 

Zurück zum Inhaltsverzeichnis

 

 

A.11.3

           CREATE VIEW v_mit_p3

                            AS SELECT m_name,m_vorname

                                  FROM  mitarbeiter

                                  WHERE m_nr IN

                                  (SELECT m_nr

                                      FROM arbeiten

                                      WHERE pr_nr='p3');

 

Zurück zum Inhaltsverzeichnis

 

 

A.11.5

          CREATE VIEW v_arb_pr

                             AS SELECT m_nr, aufgabe

                                  FROM arbeiten, projekt

                                  WHERE arbeiten.pr_nr=projekt.pr_nr

                                  AND pr_name = 'Merkur';

 

Zurück zum Inhaltsverzeichnis

 

 

A.11.6

           CREATE VIEW v_mit_nr

                           AS SELECT m_nr,  m_name, m_vorname

                                FROM mitarbeiter

                                WHERE m_nr < 10000

                                WITH CHECK OPTION;

 

Zurück zum Inhaltsverzeichnis

 

 

A.11.7

           INSERT INTO v_mit_nr

                             VALUES (8888, 'Holl', 'Martina');

 

                         DELETE FROM v_mit_nr

                            WHERE m_nr = 28559;

 

Zurück zum Inhaltsverzeichnis

 

 

A.12.1

     a)    CREATE INDEX i_mit_mname

                           ON mitarbeiter(m_name);

 

                   b)    CREATE INDEX i_mit_nam_vor

                            ON mitarbeiter(m_name, m_vorname);

 

                   c)    CREATE INDEX i_mit_mnr

                            ON mitarbeiter(m_nr);

 

                         CREATE INDEX i_arb_mnr

                             ON arbeiten(m_nr);

 

                   d)    CREATE INDEX i_mit_abtnr

                             ON mitarbeiter(abt_nr);

 

                         CREATE INDEX i_abt_abtnr

                             ON abteilung(abt_nr);

 

                         CREATE INDEX i_abt_name

                             ON abteilung(abt_name);

 

Zurück zum Inhaltsverzeichnis