SQL-Befehlssatz

SQL ist eine leistungsfähige Sprache, mit der man mit kurzen Anweisungen in relationalen Datenbanken operieren kann. Die Sprachsyntax und der -umfang sind nicht einheitlich geregelt und können von Hersteller zu Hersteller variieren.

Der im Programm eingebaute Syntaxinterpreter unterstützt eine Teilmenge von ANSI-Standard-SQL.

Mit SQL können Sie Abfragen erstellen, Tabellen und Indizes erzeugen, ändern und löschen, sowie Felder manipulieren.

Erfahrungsgemäss werden vor allem SQL-Abfragen erstellt.

Abfragesyntax

SELECT [ALL|DISTINCT] {spalten|*}

FROM tabelle [AS alias] [tabelle [AS alias]]...

[WHERE {bedingung}]

[GROUP BY spalten [HAVING {bedingung|subquery}]]

[ORDER BY spalten [ASC|DESC]...]

Dabei wurden alle SQL-Begriffe in Grossbuchstaben geschrieben, alle zu ersetzenden Begriffe in Kleinbuchstaben.
Teile, die nicht immer notwendig sind, stehen in eckigen Klammern und Teile, bei denen es mehrere Möglichkeiten gibt, stehen in geschweiften Klammern und sind durch einen senkrechten Strich geteilt.

Die SQL-Syntax unterscheidet nicht zwischen Gross- und Kleinschreibung und benötigt keine Zeilentrennungen zwischen den Elementen.

Operatoren, die in Bedingungen Verwendung finden, nach ihrer Bindekraft geordnet:

Multiplikation

*

Division

/

Addition

+

Subtraktion

-

Gleichheit

=

Ungleichheit

!= oder <>

Vergleiche

>, <, >=, <=

Enthaltensein

IN menge

Nullwert

IS [NOT] NULL

Bereich

BETWEEN start AND ende

Ähnlichkeit

LIKE muster mit wildcards % und _

Negation

NOT

logisches Und

AND

logisches Oder

OR

Runde Klammern werden zum Bilden von Teilbedingungen benutzt.

Zeichenkettenaddition

+ oder || (nur BDE)

Teilzeichenkette

für BDE: SUBSTRING(spalte FROM start FOR länge)

Kleinbuchstaben

für BDE: LOWER
 

Grossbuchstaben

für BDE: UPPER
 

Datumsentschlüsselung

für BDE: EXTRACT {YEAR| MONTH| DAY| HOUR| MINUTE| SECOND} FROM spalte

für SQL: YEAR | MONTH | DAY(datum)
GETDATE()  aktuelles Datum
DATEPART(DY, datum) Tag des Jahres

Gruppierungsfunktionen werden in Verbindung mit der GROUP BY –Klausel verwendet.

Maximum der Spaltenwerte

MAX

Minimum der Spaltenwerte

MIN

Summe der Spaltenwerte

SUM

Durchschnitt der Spaltenwerte

AVG

Anzahl der Datenbankeinträge

COUNT

Zeichenketten sind in Anführungsstriche zu setzen, gebrochene Zahlen müssen mit Dezimalpunkt geschrieben werden, Datumsangaben in der Syntax tt/mm/jjjj (tt: Tag, mm: Monat, jjjj: Jahr).

Kommentare werden mit /* eingeleitet und mit */ beendet.

Beispiele

  • Auflistung aller Felder und Sätze aus der Bankendatei:
    select * from Bank
  • Auflistung aller Filialen der Dresdner Bank, mit der grössten Banknummer beginnend. Beachten Sie die richtige Gross- und Kleinschreibung in der WHERE-Klausel:
    select Banknummer, Name
    from Bank
    where upper(Name) like'DRESDNER BANK%'
    order by Banknummer desc
  • Kundenabhängige Aufsummierung aller Offenen Posten aus Rechnungen im Mandanten 1. Ausserdem werden die Anzahl und die durchschnittliche Höhe des OP‘s angezeigt:
    select KLNr, SUM(Offen) as Gesamt,
    COUNT(Offen) as Anzahl,
    AVG(Offen) as Durchschnitt   
    from OPOS     
    where OPTyp='1' and Status='O'     
    group by KLNr
  • Anzeige von Kundennummer und Name von allen (unterschiedlichen - distinct) Kunden, die offene Rechnungen besitzen:
    select distinct opos.KLNr,KUNDEN.Name
    from OPOS
    join KUNDEN on OPOS.KLNr=KUNDEN.Nummer
    where opos.OPTyp='1'

    and opos.Status='O'