SQL
Dieses Dokument ist eine Sammlung meiner Notizen zu SQL aus dem Jahre 2001. Die Beispiele wurden vorwiegend mit Oracle 8 ausprobiert. Einige Anweisungen funktionieren auch mit MySQL.
Anzeigen (select)
Alle Records der Tabelle TEST anzeigen
SELECT * FROM TEST
Alle Records der Tabelle TEST anzeigen, jedoch nur die Spalten VORNAME und NACHNAME
SELECT VORNAME, NACHNAME FROM TEST
Records mit bestimmten Wertebereich auswählen
SELECT * FROM TEST WHERE NUMMER >= 123 AND ZAHL > 2
SELECT * FROM TEST WHERE NUMMER >= 123 OR ZAHL > 2
SELECT * FROM TEST WHERE NUMMER >= 123 AND NOT ZAHL > 2
SELECT * FROM TEST WHERE NUMMER >= 123 OR ZAHL > 2
SELECT * FROM TEST WHERE NUMMER >= 123 AND NOT ZAHL > 2
Alle Records mit der Spalte NUMMER im Wertebereich 10 bis 20
SELECT * FROM TEST WHERE NUMMER BETWEEN 10 AND 20
Alle Namen ab M anzeigen
SELECT * FROM TEST WHERE NAME >= ‘M‘
Keine doppelten Vornamen
SELECT DISTINCT VORNAME FROM TEST
Anzahl der Datensätze
SELECT COUNT(*) FROM TEST
Anzahl der verschiedenen Vornamen
SELECT COUNT(DISTINCT VORNAME) FROM TEST
Mit mehreren Recordsets arbeiten
SELECT rsa.KUNDENNR FROM TEST_1 rsa, TEST_2 rsb WHERE rsa.NAME=rsb.NAME
Rechnen
SELECT (BRUTTO / 1.16) AS NETTO FROM TEST
Liefert alle NUMMERN nach einem bestimmten Muster z.B. 101, 102, 1023, ...
SELECT NUMMER FROM TEST WHERE NUMMER LIKE ‘10%‘
Sortieren zuerst VORNAME dann NACHANME
SELECT * FROM TEST ORDER BY VORNAME, NACHNAME
Sortieren umgekehrte Reihenfolge
SELECT * FROM TEST ORDER BY NUMMER DESC
Ändern (update)
Ändern der Felder NUMMER und VORNAME des Records mit der ID 735
UPDATE TEST SET NUMMER = 10, VORNAME = ‘Andreas‘ WHERE ID = 735
Einfügen (insert)
Einfügen eines neuen Records in Test mit Werten für NUMMER und NAME
INSERT INTO TEST NUMMER, NAME VALUES 10, ‘Andreas‘
Löschen (delete)
Löschen eines Records mit bestimmter ID
DELETE FROM TEST WHERE ID=56
Sonstiges (speziell Oracle 8)
Feldnamen und Feldtypen einer Tabelle
DESC TEST
Öffnen und Schließen einer Sitzung
COMMIT
Alle Änderungen innerhalb einer Sitzung rückgängig machen
ROLLBACK
Felder einer Tabelle hinzufügen
ALTER TABLE TEST ADD
( WERT NUMBER(10,2)
NAME VARCHAR2(30)
ALTER NUMBER(3)
)
( WERT NUMBER(10,2)
NAME VARCHAR2(30)
ALTER NUMBER(3)
)
Runden
ROUND(VALUE, [NACHKOMMASTELLEN])
Abschneiden
TRUNC(VALUE, [NACHKOMMASTELLEN])
Immer aufrunden
CEIL(VALUE)
Minimum und Maximum
MAX(VALUE)
MIN(VALUE)
MIN(VALUE)
Liefert einen Teil einer Zeichenkette
SUBSTR(string, START, länge)
Länge
LENGTH()
Ersetzt existing_string durch replacemant_string falls existing_string in string vorhanden
REPLACE(string, existing_string, replacemant_string)
Zeichnfolgen von links oder rechts mit n Zeichenketten (pad_string) auf
LPAD(string, n, pad_string)
RPAD(string, n, pad_string)
RPAD(string, n, pad_string)
Leerzeichen links oder rechts abschneiden
LTRIM()
RTRIM()
RTRIM()
Lowercase und Uppercase
LOWER()
UPPER()
UPPER()
Erster Buchstabe groß, Rest klein
INITCAP()
Spaltenname der immer das Systemdatum liefert
SYSDATE
Typenkonvertierung
TO_NUMBER()
TO_CHAR(VALUE, format)
TO_CHAR(100.233, ‘9,999.99 DM‘) liefert 100.23 DM
TO_DATE
TO_CHAR(VALUE, format)
TO_CHAR(100.233, ‘9,999.99 DM‘) liefert 100.23 DM
TO_DATE
Liefert einen Standardwert, wenn NULL
NVL(spalte, wert_wenn_null)
ASCII()
DECODE(DAY, 1, ‘Mo‘, 2, ‘Di‘ )
DECODE(DAY, 1, ‘Mo‘, 2, ‘Di‘ )
Siehe auch •