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="50c8f37dc0a82">DROP TABLE angestellte IF EXISTS;
CREATE TABLE angestellte (
  kennnummer integer NOT NULL,
  persnr integer DEFAULT NULL,
  anrede varchar(255) DEFAULT NULL,
  vorname varchar(255) DEFAULT NULL,
  nachname varchar(255) DEFAULT NULL,
  akad_grad varchar(255) DEFAULT NULL,
  strnr varchar(255) DEFAULT NULL,
  plz varchar(5) DEFAULT NULL,
  ort varchar(255) DEFAULT NULL,
  gebdat date DEFAULT NULL,
  einstdat date DEFAULT NULL,
  firmaID varchar(255) DEFAULT NULL,
  bemerkungen varchar(255),
  ptelefon varchar(255) DEFAULT NULL,
  PRIMARY KEY (kennnummer)
);</code>



<code id="50c8f37dc0af1" hidden>INSERT INTO angestellte (kennnummer, persnr, anrede, vorname, nachname, akad_grad, strnr, plz, ort, gebdat, einstdat, firmaID, bemerkungen, ptelefon) 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]

<run id="50c8f37dc0b6c"></run>

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

2. Erstelle jetzt die Tabelle Mitarbeiter mit allen Spalten. Lege den Primärschlüssel im CREATE-Befehl fest.

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

4. Erstelle die Tabelle Projekt mit allen Spalten.

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


<run id="50c8f37dc0bcf">SELECT * FROM angestellte</run>