# SQL-Befehlsübersicht

#### DDL (Data Definition Language)

Datenbanken anlegen, löschen, auswählen:

<table border="1" id="bkmrk-sql-befehl-beschreib" style="border-collapse: collapse; width: 100%; border-width: 1px; height: 278.75px;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="border-width: 1px; height: 29.7969px;">SQL-Befehl</td><td style="border-width: 1px; height: 29.7969px;">Beschreibung</td><td style="border-width: 1px; height: 29.7969px;">Beispiel</td></tr><tr style="height: 82.9844px;"><td style="border-width: 1px; height: 82.9844px;">```mysql
CREATE DATABASE db_name
```

  
</td><td style="border-width: 1px; height: 82.9844px;">Erstelle die Datenbank db\_name</td><td style="border-width: 1px; height: 82.9844px;">```mysql
CREATE DATABASE autovermietung
```

  
</td></tr><tr style="height: 82.9844px;"><td style="border-width: 1px; height: 82.9844px;">```mysql
DROP DATABASE db_name
```

  
</td><td style="border-width: 1px; height: 82.9844px;">Lösche die Datenbank db\_name</td><td style="border-width: 1px; height: 82.9844px;">```mysql
DROP DATABASE autovermietung
```

  
</td></tr><tr style="height: 82.9844px;"><td style="border-width: 1px; height: 82.9844px;">```mysql
USE db_name
```

  
</td><td style="border-width: 1px; height: 82.9844px;">Auswahl der Datenbank, auf welchre die folgenden SQL-Befehle ausgeführt werden sollen</td><td style="border-width: 1px; height: 82.9844px;"> ```mysql
USE autovermietung
```

</td></tr></tbody></table>

Tabellen und Indizes erzeugen, ändern und löschen:

<table border="1" id="bkmrk-sql-befehl-beschreib-1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr><td>SQL-Befehl</td><td>Beschreibung</td><td>Beispiel</td></tr><tr><td>```mysql
CREATE TABLE IF NOT EXISTS tb_name
```

  
</td><td>Erstelle die Tabelle tb\_name falls diese noch nicht existiert</td><td>```mysql
CREATE TABLE kunden (kd_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, kd_name VARCHAR(30) NOT NULL);
```

  
</td></tr><tr><td>```mysql
CREATE INDEX ... ON ...
CREATE UNIQUE INDEX ... ON ...
```

  
</td><td>Erstelle einen eindeutigen Index</td><td>```mysql
CREATE INDEX kunden_name ON kunde (kd_name);
```

  
</td></tr><tr><td>```mysql
ALTER TABLE ...
        ADD <field>
        ADD INDEX
        ADD PRIMARY KEY
        ADD UNIQUE
        RENAME AS
        MODIFY
        CHANGE
        DROP COLUMN
```

  
</td><td>Ändere die Struktur der Tabelle, etwa durch Hinzufügen eines Index (z.B. zum Durchsuchen), Primärschlüssels, usw.</td><td>```mysql
ALTER TABLE kunden ADD INDEX kunden_name (kd_name);
ALTER TABLE kunden RENAME AS kunde;
ALTER TABLE kunden MODIFY kd_name varchar(50);
ALTER TABLE kunden CHANGE kd_nname name varchar(30);
ALTER TABLE kunde ADD mobile varchar(20);
```

  
</td></tr><tr><td>```mysql
DROP TABLE ...
```

  
</td><td>Lösche Tabelle aus DB</td><td>```mysql
DROP TABLE kunden;
```

  
</td></tr><tr><td>```mysql
DROP INDEX ...
```

  
</td><td>Entferne den Index</td><td> ```mysql
DROP INDEX kunden_name;
```

</td></tr></tbody></table>

#### DML (Data Manipulation Language)

<table border="1" id="bkmrk-%C2%A0-2" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr><td>SQL-Befehl</td><td>Beschreibung</td><td>Beispiel</td></tr><tr><td>```mysql
INSERT INTO ... VALUES ...
```

  
</td><td>Einfügen eines oder mehrerer Datensätze. Die Reihenfolge der Werte richtet sich nach der Reihenfolge der angegebenen Attribute</td><td>```mysql
INSERT INTO kunden (kd_id, kd_name, kd_vname) VALUE (NULL, "Mustermann", "Max"), (NULL, "Musterfrau", "Frieda");
```

  
</td></tr><tr><td>```mysql
UPDATE ... SET ... WHERE ...
```

  
</td><td>Ändern von Werten eines oder mehrerer Datensätze</td><td>```mysql
UPDATE kunden SET kd_nname = "Mustermann" WHERE kd_id=42;
```

  
</td></tr><tr><td>```mysql
DELETE ... FROM ...
```

  
</td><td>Löschen eines Datensatzes</td><td>```mysql
DELETE FROM kunden WHERE kd_name = "Mustermann";
```

</td></tr></tbody></table>

#### DQL (Data Query Language)

<table border="1" id="bkmrk-sql-befehl-beschreib-2" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr><td>SQL-Befehl</td><td>Beschreibung</td><td>Beispiel</td></tr><tr><td>```mysql
SELECT ... FROM ... WHERE ... GROUP BY ... ORDER BY ... HAVING ... LIMIT ...
```

  
</td><td>  
</td><td>```mysql
SELECT * FROM kunden;
SELECT kd_ort, COUNT(kd_ort) FROM kunden GROUP BY kd_ort;
SELECT COUNT(*) FROM kunden WHERE kd_ort = "Hof";
SELECT * FROM kunden ORDER BY kd_name;
```

  
</td></tr><tr><td>```mysql
SELECT ... AS ...
```

  
</td><td>Dem Feldnamen (Attribut) wird ein anderer Name gegeben (= Alias)</td><td>```mysql
SELECT kd_id AS Kundennummer FROM kunden;
```

</td></tr></tbody></table>

#### Funktionen

<table border="1" id="bkmrk-%C2%A0-4" style="border-collapse: collapse; width: 100%; height: 348.36px;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">SQL-Befehl</td><td style="height: 29.7969px;">Beschreibung</td><td style="height: 29.7969px;">Beispiel</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
COUNT(ausdruck)
```

  
</td><td style="height: 29.7969px;">Anzahl aller Datensätze</td><td style="height: 29.7969px;">```mysql
SELECT COUNT(*) FROM kunden;
```

  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
SUM(ausdruck)
```

  
</td><td style="height: 29.7969px;">Summe</td><td style="height: 29.7969px;">```mysql
SELECT SUM(po_preis) FROM posten;
```

  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
MAX(ausdruck)
```

  
</td><td style="height: 29.7969px;">Maximum</td><td style="height: 29.7969px;">```mssql
SELECT MAX(po_preis) FROM posten;
```

  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
MIN(ausdruck)
```

  
</td><td style="height: 29.7969px;">Minimum</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
AVG(ausdruck)
```

  
</td><td style="height: 29.7969px;">Durchschnitt</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
ABS(ausdruck)
```

  
</td><td style="height: 29.7969px;">Betrag</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">```mysql
NOW()
```

  
</td><td style="height: 46.5938px;">Gibt das aktuelle Datum mit Uhrzeit im Format "JJJJ-MM-TT hh:mm:ss" zurück</td><td style="height: 46.5938px;">  
</td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">```mssql
YEAR(date)
MONTH(date)
DAY(date)
HOUR(date)
MINUTE(date)
SECOND(date)
```

  
</td><td style="height: 46.5938px;">Geben die aktuellen Zeit-Werte dem Namen nach zurück</td><td style="height: 46.5938px;">```mssql
SELECT * FROM kunden WHERE YEAR(gebdat) > 2000
```

  
</td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">```mysql
DATEDIFF(datum1, datum2)
```

  
</td><td style="height: 46.5938px;">Berechnet die Differenz der Tage datum1 - datum2 mit Vorzeichen</td><td style="height: 46.5938px;"> </td></tr></tbody></table>

#### Informationen aus verschiedenen Tabelle holen (JOIN)

<table border="1" id="bkmrk-%C2%A0-6" style="border-collapse: collapse; width: 100%; height: 89.3907px;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">SQL-Befehl</td><td style="height: 29.7969px;">Beschreibung</td><td style="height: 29.7969px;">Beispiel</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
SELECT ... FROM ... JOIN ... ON ...
```

  
</td><td style="height: 29.7969px;">Schnittmenge, d.h. nur Kunden mit zugehörigen Aufträgen</td><td style="height: 29.7969px;">```mysql
SELECT * FROM kunden JOIN auftraege ON kd_id = au_kd_id;
```

  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">```mysql
LEFT JOIN ... ON ...
```

  
</td><td style="height: 29.7969px;">Alle Kunden (auch die ohne Auftrag!) und zugehörige Aufträge</td><td style="height: 29.7969px;"> ```mysql
SELECT * FROM kunden LEFT JOIN auftraege ON kd_id = au_kd_id;
```

</td></tr></tbody></table>

#### Operatoren

<table border="1" id="bkmrk-%C2%A0-8" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr><td>SQL-Befehl</td><td>Beschreibung</td><td>Beispiel</td></tr><tr><td>```mysql
>, <, >=, =, !=
```

  
</td><td>Boolsche Operatoren zum Vergleich zweier Werte</td><td>```mysql
SELECT * FROM kunden WHERE kd_ort = "Hof";
```

  
</td></tr><tr><td>```mysql
IN, NOT IN
```

  
</td><td>Prüfung, ob sich ein Attribut innerhalb einer Untermenge befindet. Häufig verwendet bei Sub-Selects</td><td>```mysql
SELECT * FROM kunden WHERE kd_id IN (1,3,5);
```

  
</td></tr><tr><td>```mysql
BETWEEN ... AND ...
```

  
</td><td>Prüfung eines Attributs, ob es sich zwischen den beiden Werten befindet</td><td>```mysql
SELECT * FROM kunden WHERE kd_id BETWEEN 10 AND 20;
```

  
</td></tr><tr><td>```mysql
LIKE
```

  
</td><td>Prüfung auf ähnliche Strings. Mit dem Platzhalter % werden im Beispiel Musterfrau und Mustermann erkannt</td><td>```mysql
SELECT * FROM kunden WHERE kd_nname LIKE "Muster%";
```

  
</td></tr><tr><td>```mysql
AND, OR, NOT
```

  
</td><td>Verknüpfung von boolschen Ausdrücken über UND, ODER und NICHT</td><td> ```mysql
SELECT * FROM kunden WHERE kd_name LIKE "%ust%" AND kd_ka_id = 1;
```

</td></tr></tbody></table>