SQL Statements – Beispiele

Im Folgenden meine kleine Beispiel-Sammlung SQL-Statements:

CREATE

1. Eine Datenbank erstellen

CREATE DATABASE meine_datenbank;

2. Eine Tabelle erstellen

CREATE TABLE meine_tabelle;

3. Tabelle mit ID

CREATE TABLE meine_tabelle
(
id INT NOT NULL,
feld1 VARCHAR(30,
feld2 DATE,
feld3 DEC (3,2)
PRIMARY KEY (id)
);

Zu einer Datenbank gelangen

USE meine_datenbank;

Eine Tabelle überprüfen / anzeigen lassen

Zeigt die Struktur der Tabelle:

DESC meine_tabelle;
DESCRIBE meine_tabelle;

Zeigt den Code der Tabelle:

SHOW CREATE TABLE meine_tabelle;

Zeigt alle Spalten einer Tabelle:

SHOW COLUMNS FROM meine_tabelle;

Zeigt alle indizierten Spalten:

SHOW INDEX FROM meine_tabelle;

Zeigt Daten der Tabelle:

SELECT * FROM meine_tabelle;

Zeigt die Datenbank:

SHOW CREATE DATABASE meine_datenbank;

Zeigt alle Warnungen:

SHOW WARNINGS;

DROP

Eine Tabelle entfernen:
ACHTUNG: Dieser Befehl löscht die Tabelle und alle Daten, die darin sind!

DROP TABLE meine_tabelle;

Spalten aus Tabellen entfernen:
ACHTUNG: Dieser Befehl löscht Spalten und alle Daten, die darin sind!

ALTER TABLE meine_tabelle
DROP meine_spalte;

Eine Tabelle umbenennen

RENAME TABLE name_alt TO name_neu;
ALTER TABLE meine_tabelle_alt
RENAME TO meine_tabelle_neu;

Daten hinzufügen

Bei der „INSERT INTO“-Anweisung stehen im ersten Klammerpaar die Spaltennamen, durch Kommata getrennt.
Im zweiten Klammerpaar, ebenfalls durch Kommata getrennt, stehen die Werte. Diese müssen in der gleichen Reihenfolge aufgeführt werden wie die Spaltennamen. Textwerte (z.B. Varchar, Char, Blob, Date und Time …) werden in einfachen Anführungszeichen – Numerische Werte (z.B. INT, DEC, …) ohne Anführungszeichen eingefügt.

INSERT INTO meine_tabelle
(Spaltenname1, Spaltenname2,)
VALUES
('Wert1', 'Wert2',);

Die Liste mit den Spaltennamen kann wegfallen, die Werte müssen aber unbedingt in der Reihenfolge der Spalten erscheinen:

INSERT INTO meine_tabelle
VALUES
('Wert1', 'Wert2',);

NULL finden mit IS NULL

NULL-Werte lassen sich mit den Schlüsselwörtern „IS NULL“ auswählen:

SELECT * FROM meine_tabelle
WHERE
mein_feld IS NULL;

AND und OR und LIKE

Sollen in einer WHERE-Abfrage ALLE Bedingungen erfüllt sein, benutzt man AND.
Wenn nur EINE der Bedingungen erfüllt sein soll, benutzt man OR.
Gäbe es zu viele „ORs“, die abgefragt werden müssen, kann man ggf. stattdessen auch LIKE benutzen.

LIKE

Das Schlüsselwort „LIKE“ kann mit zwei Platzhaltern verwendet werden:
1. Das % (Prozent) ist Platzhalter für beliebig viele unbekannte Zeichen:

SELECT * FROM meine_tabelle
WHERE
mein_feld LIKE '%Zeichenfolge';

2. Der _ (Unterstrich) ist Platzhalter für nur ein unbekanntes Zeichen:

SELECT * FROM meine_tabelle
WHERE
mein_feld LIKE '_Zeichenfolge';

Bereich wählen

Um Werte abzufragen, die innerhalb eines bestimmten Bereichs liegen, helfen folgende Statements:
Statement 1 mit Größer/Kleiner:

SELECT * FROM meine_tabelle
WHERE
mein_feld >= 10
AND
mein_feld < = 20;

Statement 2 mit BETWEEN:

SELECT * FROM meine_tabelle
WHERE
mein_feld BETWEEN 10 AND 20;

Mehrere Werte als Auswahl abfragen

Um Werte abzufragen, die innerhalb eines bestimmten Bereichs liegen, helfen folgende Statements:
Statement 1 Auswahl mit OR:

SELECT * FROM meine_tabelle
WHERE
mein_feld = 'Wert1'
OR
mein_feld = 'Wert2'
OR
mein_feld = 'Wert3'
OR …;

Statement 2 Auswahl mit IN:

SELECT * FROM meine_tabelle
WHERE
mein_feld IN ('Wert1', 'Wert2', 'Wert3',);

Statement 3 Ausschluss mit NOT IN:

SELECT * FROM meine_tabelle
WHERE
mein_feld NOT IN ('Wert1', 'Wert2', 'Wert3',);

Ausschließen mit NOT

Werte lassen sich mit dem Schlüsselwort NOT ausschließen:

Das NOT folgt direkt hinter dem WHERE:

SELECT * FROM meine_tabelle
WHERE NOT mein_feld IS NULL; 
 
oder:
 
SELECT * FROM meine_tabelle
WHERE mein_feld IS NOT NULL;
SELECT * FROM meine_tabelle
WHERE NOT
mein_feld BETWEEN 10 AND 20;
SELECT * FROM meine_tabelle
WHERE NOT
mein_feld IN ('Wert1', 'Wert2', 'Wert3',);

In Verwendung mit AND oder OR folgt das NOT unmittelbar hinter AND oder OR:

SELECT * FROM meine_tabelle
WHERE NOT mein_feld LIKE 'Wert1'
AND NOT mein_feld LIKE 'Wert2';

String-Funktionen:

Textwerte und Werte, die in einem CHAR- oder VARCHAR-Feld gespeichert sind, werden als Strings bezeichnet.
String-Funktionen liefern eine veränderte Kopie der Spaltenwerte – sie ändern nicht die Daten einer Tabelle!

Im folgenden Beispiel sind in der Spalte „vorname“ folgende Werte erfasst:
John, m
Peter, m
Jane, w

1. SELECT RIGHT() / SELECT LEFT()
Mit den Funktionen RIGHT() und LEFT() lassen sich eine angegebene Anzahl von Zeichen aus einem Feld auslesen.
Mit RIGHT() kann die rechte Seite, mit LEFT() die linke Seite eines Feldes „vorname“ ausgelesen werden. Die Zahl „1“ gibt an, wie viele Zeichen, ausgehend vom Seitenrand der Spalte, ausgewählt werden.

SELECT RIGHT(vorname,1) FROM meine_tabelle;

Ergebnis:
m
m
w

2. SELECT SUBSTRING_INDEX
Diese Funktion zeigt alle Werte VOR einem bestimmten Zeichen oder String an. Setzen wir das Komma in Anführungszeichen, zeigt uns die Funktion alle Zeichen davor an. Die „1“ setzen wir in diesem Beispiel, weil wir nach dem ersten Komma im Feld suchen:

SELECT SUBSTRING_INDEX(vorname, ',' , 1) FROM meine_tabelle;

Ergebnis:
John
Peter
Jane

3. Strings Querbeet
Liefert die Anzahl der Zeichen zurück (Ergebnis=7):

SELECT LENGTH('John, m') FROM meine_tabelle;

Entfernt Leerzeichen am Anfang (links) bzw. Ende (rechts) eines Strings:

SELECT LTRIM ('John') FROM meine_tabelle;
SELECT RTRIM ('John') FROM meine_tabelle;

Dreht die Zeichenfolge im String um:

SELECT REVERSE('John');

Ändert den String in Großbuchstaben:

SELECT UPPER('John');

Ändert den String in Kleinbuchstaben:

SELECT LOWER('John');

Ändert den String in Kleinbuchstaben:

SELECT LOWER('John');

Gibt den Teil der Anweisung zurück, der mit dem Zeichen an der Position ANFANG beginnt. LÄNGE gibt die Anzahl der Zeichen an, die man zurückerhält:

SELECT SUBSTRING('String',ANFANG, LÄNGE);

DELETE

DELETE-Anweisungen löschen Datensätze aus der Tabelle. DELETE wird hierbei anstelle des SELECT gesetzt. Aber anders als die SELECT-Anweisung werden nicht nur ein einzelnes Feld/Spalte bzw. *, sondern sämtliche Datensätze, die die WHERE-Bedingung erfüllen aus der Tabelle gelöscht!
TIPP: Bevor man versehentlich zuviel oder zuwenig Datensätze löscht, die Auswahl zunächst durch eine SELECT-Anweisung überprüfen. Wenn alles passt, anstelle des SELECT das DELETE eintragen, aber ansonsten die WHERE-Klausel der Überprüfung verwenden.

DELETE FROM meine_tabelle
WHERE
mein_feld = 'Wert1';

Noch ein Beispiel: Einen neuen Datensatz erzeugen und einen alten löschen …

INSERT INTO meine_tabelle
VALUES ('Wert1', 'Wert2', 'Wert3',)
DELETE FROM meine_tabelle
WHERE
mein_feld = 'Wert1'
AND mein_feld = 'Wert2';

Daten aktualisieren

UPDATE-Anweisungen aktualisieren eine oder mehrere Spalten (Felder) einer Tabelle. Das Schlüsselwort SET setzt den neuen Wert. Die Auswahl der Datensätze, die aktualisiert werden sollen, erfolgt mit Hilfe der WHERE-Klausel. Fehlt diese, werden die in der SET-Klausel angegebenen Spalten in allen Zeilen der Tabelle aktualisiert. Um sicherzustellen, dass die Aktualisierung auch wirklich nur die gewünschten Werte betrifft, empfiehlt es sich, zunächst ein SELECT auszuführen.

UPDATE meine_tabelle
SET mein_feld = 'neuer_Wert'
WHERE mein_feld = 'Wert1';

Um mehrere Spalten zu ändern, können weitere SET-Klauseln hinzugefügt werden, die durch Kommata getrennt sind:

UPDATE meine_tabelle
SET erstes_feld = 'neuer_Wert',
zweites_feld = 'neuer_Wert2',
drittes_feld = 'neuer_Wert3';

Numerische Werte kann man zudem mit Hilfe mathematischer Operatoren (Addition, Subtraktion, Multiplikation, Division) aktualisieren.

UPDATE meine_tabelle
SET mein_preisfeld = alter_Preis + 1;

Sonderzeichen

Das einfache Anführungszeichen (‚) gehört zu den reservierten SQL-Zeichen. Verwendet man im Text einfache Anführungszeichen werden diese durch SQL als Anfang und Ende eines Text-Strings interpretiert. Um SQL zu sagen, dass “ ‚ “ Teil des Textes ist, wird vor dem Anführungszeichen ein Backslash () eingefügt: ‚.

ALTER

Bei bestehenden Tabellen lassen sich mit ALTER neue Spalten hinzufügen:

ALTER TABLE meine_tabelle
ADD COLUMN neues_feld;

Die neue Spalte wird standardmäßig immer ans Ende der Tabelle angefügt.
Optional kann man mit dem Schlüsselwort AFTER angeben, nach welcher Spalte (im Beispiel nach der Spalte „feld1“) die neue Reihe eingefügt werden soll:

ALTER TABLE meine_tabelle
ADD COLUMN neues_feld
AFTER feld1;

Nachträglich einen Primärschlüssel hinzufügen:
Es ist üblich, den Primärschlüssel in die ersten Spalte der Tabelle zu setzen. Hierzu verwenden wir das Schlüsselwort FIRST.
Der AUTO_INCREMENT wird in MySQL verwendet und bewirkt, dass bei jeder INSERT-Anweisung automatisch ein eindeutiger fortlaufender INT-Wert zugewiesen wird.

ALTER TABLE meine_tabelle
ADD COLUMN id INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (id);

Namen und Datentyp einer Spalte ändern mit CHANGE:
ACHTUNG: Beim Ändern des Datentyps besteht die Gefahr, Daten zu verlieren!

ALTER TABLE meine_tabelle
CHANGE COLUMN alter_spaltenname neuer_spaltenname VARCHAR(10);

Den Datentyp einer Spalte ändern mit MODIFY:
Der neue Datentyp wird nach dem Spaltennamen festgelegt.
ACHTUNG: Beim Ändern des Datentyps besteht die Gefahr, Daten zu verlieren!

ALTER TABLE meine_tabelle
MODIFY COLUMN meine_spalte VARCHAR(10);

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.


*