SQL-Befehle

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Datenbank erstellen (DDL = Data Definition Language)

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)
 );

Tabellenstruktur verändern

Neue Spalte einfügen:

 ALTER TABLE tbl_name
   ADD spalte_neu datentyp [NOT NULL | AUTO_INCREMENT | ...];

Vorhandene Spalte löschen:

 ALTER TABLE tbl_name
   DROP spalte_xy;

Primärschlüssel anfügen (nicht zum Ändern des alten Schlüssels geeignet):

 ALTER TABLE tbl_name
   ADD PRIMARY KEY (spalte1, spalte2, ...);

Primärschlüssel löschen:

 ALTER TABLE tbl_name
   DROP PRIMARY KEY;

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:

Datenbank verändern (DML = Data Manipulation Language)

INSERT - Einfügen von Datensätzen

 INSERT INTO tbl_name
   (spalte1, spalte2, ...)
 VALUES
   (wert1, wert2, ...);

Wird eine Spalte nicht angegeben, dann erhält diese einen NULL-Wert.

Beispiel:

 INSERT INTO schueler
   (SNr, Name, Geb_Dat)
 VALUES
   (201, 'Müller', '1962-10-25');


UPDATE - Datensätze ändern

 UPDATE tbl_name
 SET
   spalte1 = neuer_wert
 [WHERE
   spalte_x = wert_y];

Der WHERE-Teil ist optional, wenn er aber fehlt, wird jedem Datensatz der Spalte der gleiche Wert zugeordnet.

Beispiel:

 UPDATE schueler
 SET
   Name = 'Mustermann',
   Vorname = 'Manfred'
 WHERE
   SNr = 102;

DELETE - Datensätze löschen

 DELETE FROM tbl_name
 [WHERE
   spalte_x = wert_y];

Der WHERE-Teil ist optional, wenn er aber fehlt, wird der Inhalt der gesamten Tabelle gelöscht.

Beispiel:

 DELETE FROM schueler
 WHERE
   SNr = 102;

Abfragen mit SELECT

 SELECT [DISTINCT | ALL]
   <spaltenliste> | *
 FROM	<tabellenliste>
 [WHERE	<bedingungen>]
 [GROUP BY	<spaltenliste>]
 [HAVING	<bedingungen>]
 [UNION	<select-ausdruck>]
 [ORDER BY	<spaltenliste>];

[Quelle: http://www.mirko-hans.de/info/gk_12/sql.htm]

Mschubert Personaldb.png

1. Erstellen Sie zuerst die Tabelle abteilung mit allen Spalten (sinnvolle Datentypen). Legen Sie den Primärschlüssel im gleichen CREATE-Befehl fest.

2. Testen Sie Ihre Eingaben, indem Sie den Inhalt (leer) anzeigen lassen mit "SELECT * FROM abteilung". (Achtung: Vorheriges nicht löschen)

3. Löschen Sie die Spalte MfirmaID aus der Tabelle mitarbeiter. Testen Sie Ihr Ergebnis mit einer Abfrage (SELECT).

4. Da bei mitarbeiter die Spalten MGehalt und ANr fehlen, müssen Sie diese über einen ALTER-Befehl hinzufügen.

5. Erstellen Sie die Tabelle projekt mit allen Spalten. (Achtung: Vorheriges nicht löschen)

6. Erstellen Sie die Tabelle arbeitet_an_P mit allen Spalten. Der Primärschlüssel ist die Kombination der beiden Fremdschlüssel.

7. Verwenden Sie den INSERT-Befehl um die Datensätze in den jeweiligen Tabellen zu speichern. Beachten Sie, dass die Reihenfolge beim Erstellen eine Rolle spielt. Die Spalte ALeiterNr sollte erst einmal weggelassen werden und am Ende per UPDATE-Befehl ergänzt werden.

arbeitet_an_P

PNr MNr
1010 17
1010 18
2010 19

Abteilung

ANr AName ABudget
12 Produktion 25 000 000
15 Forschung 2 000 000
20 Personal 250 000

Projekt Abteilung

PNr PName PBudget
1010 Messeauftritt 5 150,50
2010 Rationalisierung 15 500

8. Das Gehalt aller Mitarbeiter der Gehaltsgruppe 3500€ soll auf 4000€ erhöht werden. Geben Sie einen entsprechenden UPDATE-Befehl an.

9. Beschreibe die Auswirkungen des folgenden UPDATE-Befehls. In welchen Fällen kann dieser Befehl Probleme verursachen? Wie kann man diese Probleme vermeiden?

 UPDATE Mitarbeiter
 SET
   ANr = 15
 WHERE
   MName = 'Müller' AND
   MVorname = 'Moritz';

[Quelle: Jens Schuster]

10. Geben Sie einen DELETE-Befehl an, welcher den Datensatz des Projekts Messeauftritt löscht. Welche Auswirkungen hat dieser Befehl auf die bestehende Datenbank?

Persönliche Werkzeuge