SQL-Befehle
Aus ProgrammingWiki
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]
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?