SQL-Kurzreferenz

Die SQL-Kurzreferenz gibt eine kompakte tabellarische Übersicht der wichtigsten SQL-Befehle, mit Syntax und Beispiel. SQL-Schlüsselwörter sind in Großbuchstaben geschrieben, z.B. SELECT, FROM, WHERE. Optionale Bestandteile der Syntax eines SQL-Befehls sind in eckige Klammern gesetzt. Die Beispiele beziehen sich auf die University-Datenbank aus dem SQL-Tutorial.

Befehl Art Syntax Wirkung Beispiel
1-1 CREATE DATABASE DDL CREATE DATABASE
[IF NOT EXISTS]
datenbank_name;
Datenbank erstellen.
Um anschließend Tabellen in der Datenbank zu erstellen, muss sie mit USE datenbank_name; ausgewählt werden.
CREATE DATABASE university;
USE university;
1-2 DROP DATABASE DDL DROP DATABASE
[IF EXISTS]
datenbank_name;
Datenbank löschen.
Dabei wird die Datenbank mit Struktur und Inhalten komplett gelöscht und dies kann nicht rückgängig gemacht werden.
DROP DATABASE university;
1-3 ALTER DATABASE DDL ALTER DATABASE datenbank_name
optionen;
Datenbank ändern.
Datenbank-Eigenschaften werden geändert, z.B. der Zeichensatz und die Collation (wie Zeichen verglichen werden). Falls in der Datenbank schon Tabellen mit einem anderen Zeichensatz existieren, werden nur neue Tabellen mit dem neuen Zeichensatz angelegt.
ALTER DATABASE university
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci
2-1 CREATE TABLE DDL CREATE TABLE Tabelle1 (
Spalte1 datentyp1,
Spalte2 datentyp2, [... weitere Spalten] );
Tabelle erstellen.
Erstellt eine Tabelle mit angegebener Spaltenliste. Für jedes Attribut werden Name, Datentyp und ggf. Constraints angegeben.
Erstelle Tabelle Studiengang.
CREATE TABLE Studiengang (
ID int NOT NULL,
Name varchar(50) NOT NULL,
Art varchar(50) NOT NULL);
2-2 CREATE TABLE mit PRIMARY und FOREIGN KEY DDL CREATE TABLE Tabelle1 (
Spalte1 datentyp1,
Spalte2 datentyp2,
[... weitere Spalten],
PRIMARY KEY (Spalte1),
CONSTRAINT FK_NAME FOREIGN KEY (FK) REFERENCES Tabelle2 (PK) );
Tabelle erstellen.
Erstellt eine Tabelle mit angegebener Spaltenliste, Primärschlüssel Attribut_PK und Fremdschlüssel Attribut_FK. Die referenzierte Tabelle Tabelle2 muss zuvor angelegt worden sein. Die referenzierte Spalte PK muss zuvor als Primärschlüssel festgelegt werden.
Erstelle Tabelle Student, referenziert Studiengang.
CREATE TABLE Student (
ID int NOT NULL,
Name varchar(50) NOT NULL,
StudiengangID int NOT NULL,
PRIMARY KEY(ID),
FOREIGN KEY (StudiengangID ) REFERENCES Studiengang (ID) );
2-3 ALTER TABLE ... ADD DDL ALTER TABLE Tabelle
ADD (Spalte1 Datentyp1,
   Spalte2 Datentyp2,
   [...]);
Tabelle ändern, Spalten hinzufügen.
Die Spalten werden defaultmäßig nach den schon existierenden Spalten angefügt. Ein Einfügen an einer bestimmten Stelle kann mittels der Option [AFTER Spalte] erreicht werden.
Füge die Spalten geburtsdatum und erstellt nachträglich zur Tabelle Student hinzu.
ALTER TABLE Student
ADD (geburtsdatum date NOT NULL,
  erstellt datetime NOT NULL);
2-4 ALTER TABLE ... DROP DDL ALTER TABLE Tabelle
DROP Spalte
Tabelle ändern, Spalte entfernen.
Die Spalten einer Tabelle können nur einzeln entfernt werden. Falls die Spalte referenziert wird, erfolgt eine Fehlermeldung.
Lösche die Spalte geburtsdatum in der Tabelle Student.
ALTER TABLE Student
DROP geburtsdatum
2-5 ALTER TABLE ... ADD CONSTRAINT DDL ALTER TABLE Tabelle
ADD Constraint Constraint_Name
FOREIGN KEY (Attribut_FK) REFERENCES Tabelle2 (Attribut_PK2);
Tabelle ändern, Fremdschlüssel hinzufügen.
Wird eine Tabelle zunächst ohne Fremdschlüssel erstellt, kann dieser mittels ALTER TABLE nachträglich ergänzt werden.
ALTER TABLE Student
ADD CONSTRAINT FK_StudentSTG
FOREIGN KEY (StudiengangID) REFERENCES Studiengang (ID);
2-6 DROP TABLE DDL DROP TABLE [IF EXISTS]
Tabelle1, Tabelle2 [...];
Tabellen löschen.
Tabellen werden komplett gelöscht, Struktur und Tabelleninhalt. Referenzierte Tabellen werden nicht gelöscht.
Lösche die Tabellen Student und Studiengang. Falls die die Tabelle Studiengang über ihren Primärschlüssel Studiengang.ID noch von anderen Tabellen referenziert wird, wird sie nicht gelöscht.

DROP TABLE Student, Studiengang;
2-7 CREATE VIEW DDL CREATE VIEW View_Name AS
(SELECT Spaltenliste FROM Tabellenliste WHERE Bedingungen);
Datensicht erstellen.
Erstelle eine View / Datensicht auf Basis einer Abfrage.
Anschließend kann die View über ihren Namen wie eine normale Tabelle verwendet werden.
Erstelle eine View, die alle Elektrotechnik-Studierenden zurückgibt.
CREATE VIEW Studenten_ET AS
SELECT Matrikelnr, Student.Name, Vorname, Art FROM Student, Studiengang WHERE Student.StudiengangID = Studiengang.ID AND Studiengang.Name = 'Elektrotechnik';
3-1 INSERT INTO DML INSERT INTO
Tabelle(Spalte1, Spalte2, ...)
VALUES
(Wert11, Wert12, ...),
(Wert21, Wert22, ...),
(Wert31, Wert32, ...);
Tabelleninhalte einfügen.
Füge die angegebenen Datensätze ein, beachte Anzahl und Datentyp der Werte.
Die Angabe der Spalten ist optional.
INSERT INTO
Student (Name, Vorname, Matrikelnr, StudiengangID, Semester)
VALUES
('Simpson', 'Bart' 12349, 3, 4),
('Simpson', 'Marge', 12350, 3, 2);
3-2 UPDATE DML UPDATE Tabelle
SET Spalte1=Wert1, Spalte2=Wert2, ...
WHERE Bedingungen;
Tabelleninhalte ändern.
Ändere Datensätze einer Tabelle ab. Einschränkung per WHERE ist optional, jedoch meist nötig und sinnvoll.
Ändere Name und Vorname des Studenten mit Matrikelnr. 12345.
UPDATE Student
SET Name = 'Muster', Vorname = 'Horst'
WHERE Matrikelnr = 12345;
3-3 DELETE DML DELETE FROM Tabelle
WHERE Bedingungen;
Tabelleninhalte löschen.
Lösche Zeilen der Tabelle, die den angegebenen Bedingungen entsprechen. Läßt man WHERE weg, wird der komplette Inhalt der Tabelle gelöscht.
DELETE FROM Student WHERE Name = 'Mustermann';
3-4 TRUNCATE TABLE DDL TRUNCATE TABLE Tabelle; Tabelleninhalt endgültig löschen.
Tabelleninhalt wird vollständig löscht, auch einige Definitionseigenschaften der Tabelle werden zurücksetzt. Kann nicht rückgängig gemacht werden.
TRUNCATE TABLE Mitarbeiter;
4-1 SELECT DML SELECT Spalte1, Spalte2, [...]
FROM Tabelle1, Tabelle2, [...]
WHERE Bedingungen;
Tabelleninhalte abfragen.
Gebe die angegebenen Spalten der angegebenen Tabellen zurück, gefiltert nach Zeilen, die die Bedingungen erfüllen. Mehrere Bedingungen können mit logischen Operatoren (AND, OR) verknüpft werden.
SELECT Student.Name, Vorname, Studiengang.Name AS StgName
FROM Student, Studiengang
WHERE Student.StudiengangID = Studiengang.ID;
4-2 SELECT * DML SELECT *
FROM Tabelle1, Tabelle2, [...];
WHERE Bedingungen;
Tabelleninhalte abfragen.
Gebe alle Spalten der Tabellen zurück. Falls mehrere Tabellen und keine WHERE-Klausel, wird das kartesische Produkt erzeugt!
SELECT * FROM Studiengang;
SELECT * FROM Student, Studiengang
4-3 SELECT mit ORDER BY DML SELECT Spalte1, Spalte2, [...]
FROM Tabelle1, Tabelle2, [...]
WHERE Bedingungen
ORDER BY Spalte1 ASC, Spalte2 ASC;
Tabelleninhalte abfragen und sortieren.
Wie SELECT, die Spalten werden zusätzlich nach der angegebenen Reihenfolge sortiert, ASC: aufsteigend, DESC: absteigend.
SELECT Student.Name, Vorname, Studiengang.Name AS StgName
FROM Student, Studiengang
WHERE Student.StudiengangID= Studiengang.ID
ORDER BY Studiengang.Name ASC, Student.Name DESC;
4-4 SELECT DISTINCT DML SELECT DISTINCT Spalte1, Spalte2, [...]
FROM Tabelle1, Tabelle2, [...];
WHERE Bedingungen;
Tabelleninhalte abfragen, nur unterschiedliche Werte zurückgeben.
DISTINCT bewirkt, das mehrfach auftretende Werte nur einmal ausgegeben werden. Das Schlüsselwort wird stets nach SELECT und vor die Spaltennamen eingefügt.
Gebe die Vornamen der Studenten zurück, ohne Duplikate.
SELECT DISTINCT Vorname FROM Student;
4-5 SELECT mit GROUP BY DML SELECT Gruppierspalte1, Gruppierspalte2, Aggregation [...]
FROM Tabelle1, Tabelle2, [...]
WHERE Bedingungen
GROUP BY Gruppierspalte1, Gruppierspalte2 [...];
Tabelleninhalte abfragen, Zeilen gruppieren.
Durch die GROUP BY-Klausel werden alle Zeilen, die in einer oder mehreren Spalten den gleichen Wert enthalten, in jeweils einer Gruppe zusammengefasst.
Gebe Anzahl der Studenten aus, gruppiert nach Art des Studiengangs.
SELECT STG.Art, COUNT(S.ID) AS AnzStudis
FROM Student AS S, Studiengang AS STG
WHERE S.StudiengangID = STG.ID
GROUP BY STG.Art;
4-6 SELECT mit INNER JOIN DML SELECT Spaltenliste FROM Tabelle1
INNER JOIN Tabelle2 ON Join-Bedingung
WHERE Auswahl-Bedingungen
Tabellen verknüpfen.
JOIN verknüpft Tabelle1 durch explizite Angabe der Join-Bedingung mit Tabelle2. Ein INNER JOIN liefert nur diejenigen Datensätze, die passende Werte in beiden Tabellen haben.
SELECT Student.Name, Vorname, Matrikelnr,
Studiengang.Name AS Stg_Name
FROM Student
INNER JOIN Studiengang ON
Student.StudiengangID = Studiengang.ID;
5-1 CREATE USER DDL CREATE USER benutzername IDENTIFIED
[WITH Optionen]
BY passwort;
Benutzerkonten anlegen.
Beim Anlegen von Benutzerkonten wird ein Benutzername und ein Passwort vergeben, sowie ein Geltungsbereich festgelegt, d.h. von welchen Rechnern aus der Benutzer auf das DBMS zugreifen kann. Werden Optionen angegeben, ist die Reihenfolge der Schlüsselwörter IDENTIFIED und WITH zu beachten.
Erstelle zwei Benutzerkonten, user1 hat Zugriff nur vom lokalen Rechner aus, user2 kann von jedem Rechner auf das DBMS zugreifen.
CREATE USER
user1@localhost IDENTIFIED WITH caching_sha2_password BY 'secret1',
user2@:'%' IDENTIFIED BY 'secret2';
5-2 GRANT DCL GRANT Berechtigungen
ON Datenbankobjekte
TO Benutzer
[WITH GRANT OPTION];
Zugriffsrechte erteilen.
Nach dem Schlüsselwort GRANT wird eine Liste von Berechtigungen angegeben, danach das Schlüsselwort ON, gefolgt von einer Liste von Datenbankobjekten, und dem Schlüsselwort TO, gefolgt von einer Liste von Benutzerkonten oder Rollen.
Erteile dem Benutzer user2@'%' das Recht, die angegebenen Befehle auf den Objekten der Datenbank university auszuführen.
GRANT CREATE, ALTER, DROP,
SELECT, INSERT, UPDATE, DELETE
ON university.* TO user1@'%' ;
5-3 REVOKE DCL REVOKE Berechtigungen
ON Datenbankobjekte
FROM Benutzer
Zugriffsrechte entziehen.
Nach dem Schlüsselwort REVOKE wird eine Liste von Berechtigungen angegeben, danach das Schlüsselwort ON, gefolgt von einer Liste von Datenbankobjekten, und dem Schlüsselwort FROM, gefolgt von einer Liste von Benutzerkonten oder Rollen.
Entziehe user2@'%' das Recht, DDL-Befehle auf der Datenbank university auszuführen.
REVOKE CREATE, ALTER, DROP
ON university.*
FROM user2@'%' ;
Befehl Art Syntax Wirkung Beispiel

Tools, Quellen und weiterführende Links

Tools:

Quellen und weiterführende Links: