SQL: Einfügen, Ändern und Löschen von Werten

Werbung
Stunde11-dpm.ink
SQL: Einfügen, Ändern und Löschen von Werten
1. Einfügen von Werten
Syntax: INSERT INTO <tabellenname> (<spaltenname1>, ...<spaltenname_n)
VALUES (<wert1>, ... <wert_n>);
Beispiel:
INSERT INTO busfahrer (busname, busnummer) VALUES ('MAN', 50);
2. Ändern von Werten
Syntax: UPDATE <tabellenname> SET <spaltenname1> = <wert1>,
<spaltenname_n> = <wert_n>
WHERE <bedingung>
Beispiele:
UPDATE busfahrer SET busnummer = 12 WHERE busname='MAN';
UPDATE busfahrer SET busnummer = 2 * busnummer;
UPDATE busfahrer SET busname = 'SETRA' where busnummer > 12;
1
Stunde11-dpm.ink
3. Löschen von Werten
Syntax: DELETE FROM <tabellenname> WHERE <bedingung>;
Beispiel:
DELETE FROM busfahrer WHERE busname = 'Mercedes';
DELETE FROM busfahrer WHERE busnummer > 12;
SQL: Abfragen von Daten/Werten
SELECT <select_item>
FROM <table_specification>
[WHERE <bedingung>]
[GROUP BY <group condition>]
[HAVING <have_condition>]
[ORDER BY <order_condition>]
(Tabellenspalten oder * für alle Spalten *))
(Name(n) der Tabellen)
Anmerkung[] bedeutet optional
SELECT busnummer, busname
FROM busfahrer
WHERE busnummer < 16;
*) bei mehreren Tabellen wird der Tabellenname dem Spaltenname vorangestellt
<tabellenname>.<spaltenname>
2
Stunde11-dpm.ink
1. Where-Bedingung
In der WHERE-Bedingung können Datensätze mit einer oder mehreren Bedingungen
beschränkt werden. Die Bedingungen beziehen sich auf Werte in den angegbenen
Spalten und werden (falls mehrere Bedingungen angegben werden) mit AND oder OR
verknüpft.
Beispiel:
SELECT * FROM busfahrer WHERE busnummer=15 OR busname='Scania';
Als Bedinung stehen zur Verfügung
- Vergleichsoperatoren (<, >, <=, >=)
busname = 'Scania'
busnummer <= 17
- Bereichsprüfungen
busnummer BETWEEN 12 AND 19
- Mustervergleich
busname LIKE 'S%' (% ist Platzhalter für beliebigen Wert)
- Elementprüfung
busname IN ('Setra', 'Mercedes')
- Nullwertprüfung
busname IS NULL
Die Bedinungen können mit NOT negiert werden.
busname IS NOT NULL
busname NOT LIKE 'S%'
3
Stunde11-dpm.ink
2. Abfragen über mehrere Tabellen
Da relationale Datenbanken die Daten in der
Regel über mehrere Tabellen verteilen,
besteht auch die Notwendigkeit,
Abfragen über mehrere Tabellen erstrecken
zu lassen.
a) Verknüpfung über "Inner Join"
(Nur Tabellen, bei denen Fremd und Primärschlüssel übereinstimmen,
werden angezeigt)
SELECT busfahrer.busnummer, busfahrer.busname,
Firma.firmenname
FROM busfahrer, firma
WHERE busfahrer.firmennummer = Firma.firmennr
Anmerkung zur Syntax: den Spaltennamen müssen die Tabellenname
vorangestellt werden: <tabellenname_x>.<spaltenname_y>, ...
4
Stunde11-dpm.ink
Mit alternativer Syntax
SELECT busfahrer.busnummer, busfahrer.busname, Firma.firmenname
FROM busfahrer INNER JOIN firma
ON busfahrer.firmennummer = Firma.firmennr
b) Ließe man die Bedingung weg, würde man das karthesische Produkt beider Tabellen
bekommen, den sogenannten Cross-Join (bei IMUK1 GZSZ-Join (jede mit jedem)
genannt)
Hausaufgabe CJ: Lösung für Übungsaufgabe 1 auf Übungsblatt bereitstellen
5
Herunterladen