LKG/Inf 11 2011/SQL-Befehle

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
== Datenbank erstellen (DDL) ==
Befehle zur Definition von Datenbanken und Tabellen.

=== DATABASE/TABLE erstellen ===
Zunächst muss man eine Datenbank mit Namen erstellen, in welche später die einzelnen Entitäten gespeichert werden:
  CREATE DATABASE [IF NOT EXISTS] db_name;
(im Programmingwiki ist dies nicht nötig)

Erzeugen einer neuen Entität in einer vorhandenen Datenbank:
  CREATE TABLE [IF NOT EXISTS] tbl_name (
  spalte_xdatentyp [NOT NULL | AUTO_INCREMENT | ...],
  spalte_y datentyp [NOT NULL | AUTO_INCREMENT | ...],
  ...,
  PRIMARY KEY (spalte_x, spalte_y, ...)
  );

* NULL-Werte sind leere Werte
* NOT NULL (keine NULL-Werte in dieser Spalte)
* DEFAULT (Standardwert, wenn kein Wert angegeben wird)
* AUTO_INCREMENT (automatische Erhöhung der Integerzahl bei neuen Datensätzen)

Beispiel:
  CREATE TABLE schueler (
  SNr INTEGER NOT NULL AUTO_INCREMENT,
  Name VARCHAR(25),
  Vorname VARCHAR(25),
  Geb_Dat DATE,
  PRIMARY KEY (SNr)
  );


=== DATABASE / TABLE löschen ===
Löschen einer Datenbank oder Tabelle.
  DROP DATABASE [IF EXISTS] db_name;

  DROP TABLE [IF EXISTS] tbl_name;

[Quelle: Jens Schuster]

Beispiel:
<code id="50c8f7a1c17a2">DROP TABLE mitarbeiter IF EXISTS;
CREATE TABLE mitarbeiter (
  MNr integer NOT NULL,
  Mpersnr integer DEFAULT NULL,
  Manrede varchar(255) DEFAULT NULL,
  MVorname varchar(255) DEFAULT NULL,
  MName varchar(255) DEFAULT NULL,
  Makad_grad varchar(255) DEFAULT NULL,
  Mstrnr varchar(255) DEFAULT NULL,
  Mplz varchar(5) DEFAULT NULL,
  Mort varchar(255) DEFAULT NULL,
  MGebDat date DEFAULT NULL,
  Meinstdat date DEFAULT NULL,
  MfirmaID varchar(255) DEFAULT NULL,
  Mbemerkungen varchar(255),
  Mptelefon varchar(255) DEFAULT NULL,
  PRIMARY KEY (MNr)
);</code>



<code id="50c8f7a1c1827" hidden>INSERT INTO mitarbeiter (MNr, Mpersnr, Manrede, MVorname, MName, Makad_grad, Mstrnr, Mplz, Mort, MGebDat, Meinstdat, MfirmaID, Mbemerkungen, Mptelefon) VALUES
(67, 112, 'Frau', 'Carmen', 'Schroeder', NULL, NULL, '2708', 'Loebau', '1972-07-03', '1997-12-01', NULL, 'Arbeitsamt Ast. Loebau', '03588-604524'),
(66, 111, 'Frau', 'Christa', 'Schmiegelt', NULL, 'Wilthener Str. 24', '2625', 'Bautzen', '1949-07-13', '1997-11-03', NULL, '', '03591-83645'),
(64, 109, 'Frau', 'Karin', 'Miertschin', NULL, 'Welkaer-Str.8', '2627', 'Purschwitz', '1960-04-07', '1997-10-01', NULL, '', '03591-307014'),
(62, 107, 'Frau', 'Anita', 'Weiland', NULL, 'W.-Ostwald-Str. 29', '2625', 'Kleinwelka', '1938-10-20', NULL, NULL, '', '03591-41274'),
(61, 106, 'Frau', 'Romy', 'Krauss', NULL, 'Vorsteher der ABX NY', '2625', 'Bautzen', '1942-10-03', NULL, NULL, '', '03591-5143'),
(59, 104, 'Frau', 'Margitta', 'Rienecker', NULL, 'Th.-Muentzer-Str. 15c', '2625', 'Kleinwelka', '1952-09-25', NULL, NULL, '', '035894-300004'),
(56, 101, 'Frau', 'Ines', 'Klatte', NULL, 'Steigerstrasse 32', '2923', 'Horka', '1951-03-01', NULL, NULL, '', '035876-41842'),
(52, 95, 'Frau', 'Renate', 'Stipic', NULL, 'Paul-Neck-Str. 32', '2827', 'Goerlitz', '1974-08-16', '1997-07-11', NULL, '', NULL),
(51, 91, 'Frau', 'Christa', 'Garve', NULL, 'Parkweg 20', '2923', 'Horka', '1953-06-18', NULL, NULL, 'Vorsteher der ABX Niesky', '03591-210396'),
(47, 84, 'Frau', 'Christine', 'Badermann', 'Dipl.-Ing.', 'Nr. 5', '2906', 'Niesky', '1949-10-27', '1997-04-21', '1', '', NULL),
(46, 82, 'Frau', 'Barbara', 'Rohloff', NULL, 'Nr. 29', '1917', 'Kamenz', '1964-08-05', '1997-04-10', NULL, 'Handy: 0177 - 2 50 76 67', '03591 609562'),
(43, 75, 'Frau', 'Yvonne', 'Flakowski', NULL, 'Nieskyer Str. 31', '2625', 'Bautzen', '1944-02-12', NULL, NULL, '', '03591-24680'),
(31, 61, 'Frau', 'Jutta', 'Wolfram', NULL, 'K.-Kollwitz-Str. 18', '2923', 'Horka', '1953-10-30', '1997-01-01', NULL, '', '03591-47375'),
(30, 59, 'Frau', 'Heike', 'Bauschke', NULL, 'Jauernicker Str. 37', '2923', 'Zedlig', '1950-04-19', '1996-11-01', NULL, '', '03581-4045729'),
(29, 56, 'Herr', 'Herbert', 'Kluge', NULL, 'J.-Gagarin-Strasse 24', '2627', 'Kotitz', '1971-08-28', '1996-09-01', NULL, '', '035891-72255'),
(27, 51, 'Herr', 'Bernd', 'Kleinau', NULL, 'Goerlitzer Str. 103', '2625', 'Bautzen', '1940-05-09', '1996-09-01', NULL, '', '03591-32222'),
(25, 46, 'Herr', 'Peter', 'Leichsenring', NULL, 'Fr.-Ebert-Str. 28', '2625', 'Bautzen', '1952-09-29', NULL, NULL, '', '03591-3181'),
(23, 31, 'Herr', 'Detlef', 'Loeser', NULL, 'F.-J.-Curie-Str.9', '2625', 'Bautzen', '1954-08-03', '1996-02-06', NULL, '', '03591-362582'),
(21, 29, 'Herr', 'Manfred', 'Kaehlig', NULL, 'Erich-Pfaff-Str. 27', '2929', 'Lodenau', '2000-05-09', '1995-12-07', '1', '', '03591-335491'),
(20, 27, 'Herr', 'Thomas', 'Herzog', NULL, 'Erich-Pfaff-Str. 19', '2923', 'Haehnichen', '1940-09-06', '1995-11-15', NULL, '', '03591-6727064'),
(19, 25, 'Herr', 'Roland', 'Noack', 'Dr.Ing.', 'Erich-Pfaff-Str. 19', '2923', 'Biehain', '1975-01-31', '1995-11-15', '2', 'ABX Niesky', '035893-6459'),
(18, 23, 'Herr', 'Burkhard', 'Mai', NULL, 'E.-Weinert-Str. 3', '2625', 'Bautzen', '1952-10-06', '1994-07-11', '2', '', '03591-698008'),
(17, 21, 'Herr', 'Juergen', 'Grund', NULL, 'Dresdener Str. 15 A', '2625', 'Bautzen', '1964-06-19', '1995-06-14', '2', '', '03591-656743'),
(16, 20, 'Herr', 'Peter', 'Mieth', NULL, 'Dr.-Salv. Allende-Str. 53', '2625', 'Bautzen', '1960-08-15', '1995-04-10', '2', '', '03591-48756'),
(15, 19, 'Herr', 'Ehrhard', 'Kurz', NULL, 'Dorfstrasse 9', '2906', 'Quitzdorf am See  OT Horscha', '1947-02-16', '1994-07-18', '1', '', '035935-26435'),
(14, 18, 'Herr', 'Peter', 'Dazkewitz', NULL, 'Dorfstrasse 6', '2625', 'Bautzen', '1950-09-06', '1994-07-18', '2', '', '03591-334997'),
(13, 17, 'Herr', 'Steffen', 'Wild', NULL, 'ABX Niesky', '2625', 'Bautzen', '1959-11-06', '1994-04-05', '2', '', '03591-556523'),
(12, 16, 'Herr', 'Wolfgang', 'Gimmler', NULL, 'ABX Niesky', '2625', 'Bautzen', '1952-04-06', '1994-04-27', '2', '', '03591-6085'),
(11, 15, 'Herr', 'Holger', 'Hartmann', NULL, 'ABX Niesky', '2627', 'Kleinwelka', '1956-11-01', '1994-04-01', '1', '', '03591-256908'),
(10, 14, 'Herr', 'Horst', 'Hogau', NULL, 'Briesnitzer Str. 19', '2625', 'Bautzen', '1957-10-23', '1994-06-01', '2', '', '03591-28976'),
(9, 13, 'Herr', 'Joachim', 'Schwaer', NULL, 'Boehmische Str. 40', '2625', 'Bautzen', '1966-01-12', '1995-05-02', '2', '', '03591-41432'),
(8, 12, 'Herr', 'Matthias', 'Kunte', NULL, 'Bierweg 8a', '2906', 'Petershain (bei Mitschke)', '1974-09-11', '1996-04-01', '1', '', '03591-306887'),
(6, 10, 'Herr', 'Harald', 'Weiland', NULL, 'Bachweg 2', '2625', 'Bautzen', '1940-02-13', '1996-05-01', '2', '', '03591-453482'),
(5, 9, 'Herr', 'Bernd', 'Hering', NULL, 'August-Bebel-Str. 15', '2627', 'Weissenberg', '2000-03-02', '1995-04-01', '1', '', '03592-34899'),
(2, 5, 'Herr', 'Hartmut', 'Jausch', NULL, 'Am Gleisdreieck 4', '2681', 'Wilthen', '1961-04-25', '1996-06-19', '2', 'Unterhaltsreiniger/Glasreiniger/Umweltarbeiter', '03592-306677'),
(68, 113, 'Frau', 'Simone', 'Zetzmann', NULL, NULL, '2923', 'Horka', '1944-02-02', '1998-01-01', NULL, '', '03591 - 605045'),
(69, 114, 'Frau', 'Monika', 'Reimer', NULL, NULL, '2923', 'Horka', '1960-03-24', '1998-01-01', NULL, 'Gemeindeverwaltung Horka', '0371-4904140'),
(70, 115, 'Frau', 'Manuela', 'Kopke', NULL, NULL, '2823', 'Mueckenhain', '1953-12-04', '1998-01-01', NULL, 'GV Horka, GS Mueckenhain', '03588-264104'),
(71, 116, 'Frau', 'Renate', 'Scheer', NULL, NULL, '2708', 'Loebau', '1946-05-26', '1998-01-15', NULL, '', '03588-264109'),
(72, 117, 'Frau', 'Regina', 'Synde', NULL, NULL, '2826', 'Goerlitz', '1948-07-20', NULL, NULL, '', NULL),
(73, 118, 'Frau', 'Christine', 'Wilde', NULL, NULL, '2727', 'Neugersdorf', '1961-10-05', '1998-01-12', NULL, '', '0371-4904100'),
(74, 119, 'Frau', 'Helga', 'Kretschmar', NULL, NULL, '2763', 'Zittau', '1942-01-03', '1998-02-02', NULL, 'AA-Ast. Zittau', '03521-451434'),
(75, 120, 'Frau', 'Ramona', 'Heinrich', NULL, NULL, '2923', 'Horka', '1952-12-25', '1998-02-01', NULL, 'GV Horka', '');</code>
[Quelle: http://www.mirko-hans.de/info/gk_12/sql.htm]

1. Erstelle zuerst die Tabelle Abteilung mit allen Spalten (sinnvolle Datentypen). Lege den Primärschlüssel im gleichen CREATE-Befehl fest.

2. Teste deine Eingaben, indem du den Inhalt (leer) anzeigen lässt mit "SELECT * FROM abteilung". (Achtung: Vorheriges nicht löschen)

3. Begründe, warum die Tabelle Abteilung vor der Tabelle Mitarbeiter erstellt werden sollte.

4. Erstelle die Tabelle "Projekt" mit allen Spalten. (Achtung: Vorheriges nicht löschen)

5. Erstelle die Tabelle arbeitet_an_P mit allen Spalten. Der Primärschlüssel ist die Kombination der beiden Fremdschlüssel.


<run id="50c8f7a1c18b5">(1. Aufgabe)
SELECT * FROM abteilung</run>