SQL: weiteres

Diese weiteren Befehle sind nicht Inhalt unseres Kurses. Sie zeigen aber, was alles möglich ist mit SQL.

Testen kann man sie z.B. auf https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all

Datenmanipulation

Zum Einfügen, Ändern und Löschen von Datensätzen, resp. zum Leeren von ganzen Tabellen.

INSERT INTO Relation [( Attribut+ )] VALUES ( ( Konstante+ ) )+
INSERT INTO Relation [( Attribut+ )] SFW-Block
UPDATE Relation SET (Attribut=Ausdruck)+ [WHERE Where-Klausel]
DELETE FROM Relation [WHERE Where-Klausel]
TRUNCATE Relation
  • Mit INSERT können explizit konstruierte Tupel oder die Ergebnisse eines SFW-Blocks (SELECT-FROM-WHERE) in eine Relation eingefügt werden. Dabei kann jeweils mehr als eine Zeile verarbeitet werden.
  • Der Ausdruck aus der UPDATE-Anweisung kann insbesondere auch auf das zu manipulierende Attribut Bezug nehmen.
  • Wird bei DELETE die WHERE-Klausel weggelassen, werden alle Tupel gelöscht, aber nicht das Relationsschema.
  • Die TRUNCATE-Anweisung leert eine Tabelle vollständig und, was den Hauptunterschied zu DELETE FROM Table ist, setzt auch jegliche Indizes und Auto-Inkrement-Werte auf die Standardwerte.

Definition des Datenbankschemas

Die SQL-Befehle zur Definition des Datenbankschemas werden wir nur der Vollständigkeit halber kurz anschauen. Heutzutage werden meistens grafische Tools wie z.B. phpMyAdmin (mySQL-DB) oder pgAdmin (PostgreSQL-DB) verwendet, um die Struktur einer Relation anzupassen oder eine neue Relation zu definieren.

CREATE TABLE 'lagerbestand' (
  'notebooks_id' varchar(20) NOT NULL,
  'bestand' int(11) NOT NULL,
  'lieferung' date default NULL,
  PRIMARY KEY  ('notebooks_id')
)

Weitere SQL-Befehle dieser Kategorie sind z.B. ALTER um eine vorhandene Relation abzuändern oder DROP um eine Relation zu löschen.

Rechteverwaltung

Mit den Befehlen GRANT und REVOKE lassen sich Zugriffsrechte auf die Datenbankobjekte einer Datenbank verteilen resp. wieder entfernen.

GRANT SELECT, UPDATE ON TABLE lagerbestand TO group_lager
REVOKE INSERT ON TABLE notebooks FROM PUBLIC

Allerdings wird auch diese Aufgabe heute meist über grafische Tools erledigt.