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:
- [1] SQL Server Developer oder Express: microsoft.com/de-de/sql-server/sql-server-downloads
- [2] MariaDB: mariadb.org
- [3] MySQL: mysql.com
- [4] XAMPP: apachefriends.org
Quellen und weiterführende Links:
- [1] Edgar Frank Codd, "A Relational Model of Data for Large Shared Data Banks": bei ACM Digital Library - dieser Artikel führt die grundlegenden Begriffe des relationalen Datenmodells ein: Beziehung, Primärschlüssel, Fremdschlüssel.
- [2] W3Schools SQL Tutorials: w3schools.com/sql/
- [3] MySQL SQL-Referenz: dev.mysql.com/doc/refman/8.0/en/sql-statements.html
- [4] SQL-Tutorial "Erste Schritte mit SQL": evamariakiss.de/tutorial/sql/
- [5] Erste Schritte mit phpMyAdmin: evamariakiss.de/tutorial/phpmyadmin/
- [6] SQL-Quiz: evamariakiss.de/tutorial/sqlquiz/