SQL-Syntax
In diesem Abschnitt ist die Syntax der SQL-Anweisungen zusammengefaßt
Die Klauseln CREATE SCHEMA und AUTHORISATION sind nicht aufgeführt. Abweichungen der verschiedenen Implementationen müssen in den entsprechenden Tools nachgeschlagen werden.
Tabellendefinition
Für typ können- bei fast allen Implementationen- folgende Typen verwendet werden: SMALLINT, INTEGER, FIXED, FLOAT, CHARACTER, DATE und TIME.
CREATE TABLE tabelle
(spalte1 typ1 [NOT NULL [UNIQUE]],
…
spalten typn [NOT NULL [UNIQUE]]
[ PRIMARY KEY (spaltei [‚ spaltej …..])]
[FOREIGN KEY [keyname] (spaltek [, spaltel…])
REFERENCES tab [ON DELETE RESTRICT|CASCADE|SET NULL)] );
DROP TABLE tabelle;
ALTER TABLE tabelle ADD (spalte typ [NOT NULL] [,…]);
CREATE VIEW vtabelle [(spalte1, ...)] AS select-anweisung [WITH CHECK OPTION]
DROP VIEW tabelle
CREATE [UNIQUE] INDEX name ON TABLE tabelle (spaltei)
DROP INDEX name
Als Rechte können vergeben werden: SELECT, INSERT, DELETE, UPDATE (eingeschränkt auf spezielle Spalten) oder ALL.
Für benutzerliste kann PUBLIC eingesetzt werden, um alle zu berechtigen, oder eine durch Kommata getrennte Liste von Benutzerkennungen.
GRANT recht 0N tabelle TO benutzerliste [WITH GRANT OPTION]
REVOKE recht FROM benutzer
Synonymdefinition
CREATE SYNONYM sname FOR tabelle
DROP SYNONYM snamne
Einfache SELECT-Anweisung
Für ausdruck i darf ein (vollqualifizierter) Spaltenname oder ein allgemeiner algebraischer Ausdruck, der sich aus Konstanten, Spaltennamen, skalaren Funktionen und einer Spaltenfunktion zusammensetzen kann, benutzt werden.
Für suchbedingung1 kann ein logischer Ausdruck eingesetzt werden. Der Ausdruck wird durch Klammersetzung und die logischen Operatoren AND, OR und NOT aufgebaut aus Vergleichen und den Prädikaten, die durch Benutzung von BETWEEN, IS NULL, LIKE, EXISTS bzw. IN gebildet werden.
Die Konstruktionen EXISTS und IN wie auch die verallgemeinerten Vergleiche unter Benutzung von ALL und ANY ermöglichen den Gebrauch von Unteranfragen.
Die GROUP BY-Klausel kann nur mit Spaltennamen benutzt werden. Durch diese Klausel wird eine Gruppierung der Ergebnistabelle nach den angegebenen Spalten erreicht.
Die HAVING-Klausel bildet eine Auswahlbedingung für die in der GROUP BY-Klausel erzeugten Gruppen.
SELECT [DISTINCT] ausdruck1 [‚ ausdruck2, ...] FROM tabelle1 [ref1 [‚ tabelle2 [ref2] .. .] WHERE suchbedingung 1] [GROUP BY spalte1 [‚ spalte2 .. [HAVING suchbedingung2]
Spalten können entweder über den Namen oder über die Spaltennummer angeben werden. Die zweite Form muß verwendet werden, wenn die Spalte als Ausdruck definiert wurde.
ORDER BY spalte1 [ord1] [‚ spalte2 [ord2] .
Einfügen
INSERT INTO tabelle [(spaltei [, spaltej…])] VALUES (wert 1 [‚ wert 2...])
Löschen
Entfällt die WHERE-Klausel, so wird der ganze Tabelleninhalt gelöscht.
DELETE FROM tabelle [WHERE suchbedingung]
Verändern
UPDATE tabelle SET spaltei = werti [‚ spaltej = wertj...] [WHERE suchbedingung]
Anmelden
CONNECT benutzer [IDENTIFIED BY passwort]
Transaktionsgrenzen
Zugleich werden implizit und explizit gesetzte Sperren wieder freigegeben.
COMMIT WORK [RELEASE]
ROLLBACK WORK [RELEASE]