Microsoft-JET-SQL Allgemeine Erläuterungen In den folgenden Syntaxschemata werden angegeben: IN GROßBUCHSTABEN In Groß- und Kleinschreibung In eckigen Klammern [...] Mit Pipe-Operator | Mit geschweiften Klammern {} Reservierte Worte Zu ersetzende Begriffe Optionale Teile Alternativen Obligatorische Auswahlmöglichkeiten In den Abfragen werden verwendet: Eckige Klammern [] Zur Begrenzung von Tabellen- und Feldnamen. Sie sind notwendig, wenn Leerzeichen oder andere verwechselbare Zeichen in den Namen vorkommen Punkt . Seperator zwischen Tabellen- und Feldnamen Hochkomma '...' Zur Eingrenzung von Strings Rauten #...# Zur Eingrenzung von Datumsangaben Der Wert NULL Als Zeichen für leere Felder Semikolon ; Abschluss der Anweisung Platzhalter: Unterstrich _ Stern * Prozent % Fragezeichen ? Raute # Ein Zeichen in SQL 92 Ein Zeichen in SQL 89 Mehrere Zeichen in SQL 92 Mehrere Zeichen in SQL 89 Eine Ziffer Die anderen Platzhalter und Operatoren sind Access-üblich DML / DQL Auswahlabfrage bzw. -anweisung SELECT [ALL | DISTINCT | DISTINCTROW | TOP nn] { * | Ausdruck | Tabelle.* | [Tabelle.]Feld1 [AS Alias1] [, [Tabelle.]Feld2 [AS Alias2] [, ...]]} FROM Tabellenausdruck [, ...] [IN ExterneDatenbank] [WHERE Bedingung] [GROUP BY Feld1 [, Feld2 [, ...]] [HAVING Bedingung]] [ORDER BY [ASC | DESC] Feld1 [, Feld2 [, ...]]]; Erläuterungen * ALL DISTINCT DISTINCTROW TOP nn WHERE GROUP BY HAVING ORDER BY ASC DESC Alle Felder Alle Datensätze werden angezeigt (Standard – kann daher weggelassen werden) Unterdrücken von doppelten Datensätzen (doppelt im Sinne der Ergebnistabelle) – führt zu einem SnapShut Unterdrücken von doppelten Datensätzen, die durch die Verknüpfung von Tabellen entstehen – kann trotzdem eine DynaSet erzeugen Zeigt nur die Anzahl der ersten nn Datensätze an Schränkt die zur Auswahl herangezogenen Datensätze ein. Kann neben Vergleichsoperatoren auch enthalten: LIKE Für Mustervergleiche ("Wie") BETWEEN ... AND … Als Bereichsoperator ("Zwischen" ... "und" ...) IN, EXIST Vergleich mit Liste einer Unterabfrage Gruppiert die Datensätze nach den angegebenen Feldern – fasst gleiche Werte zu einer Gruppe zusammen, erlaubt die Anwendung von Aggregatfunktionen auf die Gruppe. Alle in der Feldliste angegebenen Felder müssen gruppiert sein. Einschränkung, die auf die Gruppe angewendet wird Sortierungen Aufsteigend – Standard kann daher weggelassen werden Absteigend Verknüpfungen FROM Tabelle1 {INNER | LEFT | RIGHT} JOIN Tabelle2 ON Tabelle1.Feld1 { = | < | > | <= | >= | <>} Tabelle2.Feld2 Erläuterungen INNER JOIN LEFT JOIN RIGHT JOIN Verknüpfung erfasst nur die Datensätze, die das verknüpfte Feld in beiden verknüpften Tabellen aufweist; Besteht eine 1:n-Vernüpfung, so entstehen genau soviel Datensätze, wie die n-Tabelle an verknüpften Datensätzen aufweist. Besteht eine m:n-Verknüpfung, so entsteht aus jeder verknüpften Kombination ein Datensatz Wie Inner Join, nur werden zusätzlich auch alle unverknüpften Datensätze der linken Tabelle aufgenommen Wie Inner Join, nur werden zusätzlich auch alle unverknüpften Datensätze der rechten Tabelle aufgenommen S. 1 © Alle Rechte ausschließlich beim Autor: Kopien, Nachnutzungen usw. bedürfen der Genehmigung! MS Jet SQL Autor: Andreas Schöbel 01187 Dresden, Münchner Str. 33 Microsoft-JET-SQL Parameter-Deklaration PARAMETERS Name Datentyp [, Name Datentyp [, ...]]; Erläuterungen Datentyp Siehe Tabellendefinition Abfrageeinschränkung mit Unterabfrage {HAVING | WHERE} { = | < | > | <= | >= | <>} [ANY | ALL | SOME] (SQLAnweisung) {HAVING | WHERE} Ausdruck [NOT] IN (SQLAnweisung) {HAVING | WHERE} [NOT] EXISTS (SQLAnweisung) Erläuterungen ALL Um TRUE zu Liefern muss der Vergleich auf allen Werten der Unterabfrage zu treffen; Liefert die Unterabfrage eine leere Menge so ist das Ergebnis auch TRUE; Liefert der Vergleich mit einem Wert der Ergebnismenge der Unterabfrage FALSE, so ist das Ergebnis auch FALSE (AND-Verknüfung der Vergleiche mit der Ergebnismenge) - Die Unterabfrage darf nur eine Spalte beinhalten ANY Ist die Ergebnismenge der Unterabfrage leer, so ist das Ergebnis FALSE, ist das Ergebnis mindestens eines Vergleiches mit einem Wert der Unterabfrage TRUE, so ist das Gesamtergebnis TRUE, sonst FALSE (OR-Verknüpfung der Vergleiche mit der Ergebnismenge der Unterabfrage) - Die Unterabfrage darf nur eine Spalte beinhalten SOME Wie ANY IN Testet, ob der Ausdruck in der Ergebnismenge (Unterabfrage) enthalten ist. Die Unterabfrage darf nur eine Spalte beinhalten EXIST Prüft, ob die Menge der Unterabfrage nicht leer ist Aggregatfunktionen Avg(Ausdr) Count(Ausdr) First(Ausdr) Last(Ausdr) Min(Ausdr) Max(Ausdr) Mittelwert Anzahl Erster Wert Letzter Wert Minimum Maximum StDev(Ausdr) StDevP(Ausdr) Sum(Ausdr) Var(Ausdr) VarP(Ausdr) Standardabweichung der Grundgesamtheit Standardabweichung der Stichprobe Summe Varianz der Grundgesamtheit Varianz der Stichprobe Anfügeabfrage INSERT INTO Ziel [IN ExterneDatenbank] [(Feld1[, Feld2[, ...]]])] SELECT [Quelle.]Feld1[, Feld2[, ...]] FROM Tabellenausdruck; INSERT INTO Ziel [IN ExterneDatenbank] [(Feld1[, Feld2[, ...]]])] VALUES (Wert1[, Wert2[, ...]); Aktualisierungabfrage UPDATE Tabelle SET Feld1 = Ausdruck1[, Feld2 = Ausdruck[, ...]] WHERE Kriterien; Löschabfrage DELETE [[Tabelle.]*] FROM Tabelle WHERE Kriterien; Kreuztabellenabfrage TRANSFORM AggFunktion Auswahlanweisung PIVOT Pivot-Feld [IN (Wert1[, Wert2[, ...]])]; Erläuterungen AggFunktion Auswahlanweisung Pivot-Feld Ausdruck mit einer auf ein Feld angewendeten Aggregatfunktion, die zur Berechnung der Datensatzfelder benutzt werden – Es werden die Tabellen der SELECT-Anweisung herangezogen SELECT-Anweisung mit GROUP-BY-Klausel, die Feldinhalte liefert, die als "Zeilenüberschriften" dienen Feld, das für Spaltenüberschriften dient – Es werden die Tabellen der SELECT-Anweisung herangezogen UNION-Abfrage [TABLE] Abfrage1 UNION [ALL] [TABLE] Abfrage2 [UNION [ALL] [TABLE] AbfrageN [ ... ]]; Erläuterungen ALL Standardmäßig werden bei UNION-Abfragen doppelte Datensätze unterdrückt, mit ALL geschieht das nicht MS Jet SQL S. 2 © Alle Rechte ausschließlich beim Autor: Kopien, Nachnutzungen usw. bedürfen der Genehmigung! Autor: Andreas Schöbel 01187 Dresden, Münchner Str. 33 Microsoft-JET-SQL Tabellenerstellungsabfrage SELECT Anweisungen INTO NeueTabelle [IN ExterneDatenbank] FROM Quelle; DDL Tabellendefinition CREATE TABLE Tabelle ( Feld1 Typ[(Größe)] [NOT NULL] [Index1] [, Feld2 Typ[(Größe)] [NOT NULL] [Index2] [, ...]] [, CONSTRAINT Einschränkung [, ...]]); Erläuterungen CONSTRAINS Einschränkung – kann Eindeutigkeiten und Beziehungen zu anderen Tabellen festlegen, erzeugt u. U. einen Index zur Realisierung Datentypen Datentyp BINARY BIT TINYINT MONEY DATETIME UNIQUEIDENTIFIER REAL FLOAT SMALLINT INTEGER DECIMAL TEXT IMAGE CHARACTER Beschreibung Beliebige Arten von Daten können in einem Feld diesen Typs gespeichert werden. Die Art, wie Daten in ein BINARY-Feld eingegeben werden, bestimmt die Art der Ausgabe. Ja/Nein-Werte (boolesche Werte) sowie Felder. Eine Ganzzahl von 0 bis 255. Eine Ganzzahl von – 922.337.203.685.477,5808 bis 922.337.203.685.477,5807. Eine Datums- oder Zeitangabe ab dem Jahr 100 bis zum Jahr 9999. Eine eindeutige Kennnummer. Eine Gleitkommazahl einfacher Genauigkeit, die die folgenden Werte annehmen kann: 3,402823E38 bis -1,401298E-45 für negative Werte, 1,401298E-45 bis 3,402823E38 für positive Werte und 0. Eine Gleitkommazahl doppelter Genauigkeit, die die folgenden Werte annehmen kann: 1.79769313486232E308 bis -4.94065645841247E-324 für negative Werte, 4,94065645841247E324 bis 1,79769313486232E308 für positive Werte und 0. Eine Ganzzahl von – 32.768 bis 32.767. Eine Ganzzahl von – 2.147.483.648 bis 2.147.483.647. Ein genauer numerischer Datentyp, der Werte von 1028 - 1 bis - 1028 - 1 enthält. Sie können sowohl Präzision (1 - 28) als auch Dezimalstelle (0 - definierte Präzision) definieren. Die Standardwerte für Präzision und Dezimalstelle lauten 18 bzw. 0. Von 0 bis maximal 2,14 GB. Von 0 bis maximal 2,14 GB. Wird für OLE-Objekte verwendet. Von 0 bis 255 Zeichen. Einschränkungen in Tabellendefinitionen oder -änderungen inkl. Beziehungsdefinition CONSTRAINT Name {PRIMARY KEY | UNIQUE | NOT NULL | REFERENCES FremdTabelle [(FremdFeld1, FremdFeld2)] [ON UPDATE CASCADE | SET NULL] [ON DELETE CASCADE | SET NULL] }; Mehrfeldereinschränkung: CONSTRAINT Name {PRIMARY KEY (Primär1[,Primär2[, ...]]) | UNIQUE (Eindeutig1[,Eindeutig2[, ...]]) | NOT NULL (Nichtnull1[, Nichtnull2 [, ...]]) | FOREIGN KEY [NO INDEX] (Ref1[, Ref2 [, ...]]) REFERENCES FremdTabelle [(FremdFeld1 [, FremdFeld2 [, ...]])]} [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]; S. 3 © Alle Rechte ausschließlich beim Autor: Kopien, Nachnutzungen usw. bedürfen der Genehmigung! MS Jet SQL Autor: Andreas Schöbel 01187 Dresden, Münchner Str. 33 Microsoft-JET-SQL Erläuterungen PRIMARY KEY UNIQUE NOT NULL FOREIGN KEY REFERENCES ON UPDATE ON DELETE CASCADE SET NULL Bestimmt einen Primärschlüssel Legt Eindeutigkeit fest Legt fest, dass keine leeren Felder erlaubt sind Fremdschlüsselfestlegung Legt Beziehungen zu einer anderen Tabelle fest Aktualisierungsweitergabe Löschweitergabe Bei Aktualisierung / Löschung diese Weitergeben Bei Aktualisierung / Löschung Fremdschlüssel auf NULL setzen Indexdefinition CREATE [ UNIQUE ] INDEX Index ON Tabelle ( Feld [ASC|DESC][, Feld [ASC|DESC][, ...]]) [WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]; Erläuterungen: UNIQUE PRIMARY DISALLOW NULL IGNORE NULL ASC DESC Eindeutigkeit festlegen Festlegen als Primärschlüssel NULL-Werte verboten NULL-Werte erlaubt Aufsteigend sortiert Absteigend sortiert Tabellenänderung ALTER TABLE Tabelle {ADD {COLUMN Feld Typ[(Größe)] [NOT NULL] | CONSTRAINT Einschränkung} | ALTER {COLUMN Feld Typ[(Größe)] [NOT NULL] | CONSTRAINT Einschränkung} | DROP {COLUMN Feld | CONSTRAINT Einschränkung} }; Erläuterungen ADD ALTER DROP COLUMN CONSTRAINS Hinzufügen Ändern Löschen Spalte Einschränkung Tabelle bzw. Index löschen Versionsprobleme Access-2000-Datei Access-2002/2003Datei DROP {TABLE Tabelle | INDEX Index ON Tabelle}; Unterschiede zwischen ANSI-SQL und MS-Jet-SQL: Platzhalter Datentypen Beetween-Operator Zusätzliche Funktionen in MS-JET-SQL (z. B. TRANSFROM) Wahlweise MS-Jet-3.x-Engine MS-Jet 4.x-Engine Unterschiede Umfang SQL 89 und SQL 92 Befehlsumfang Verwalten von Benutzerrechten (GRANT, REVOKE) Der volle Umfang der Funktionen steht nur unter VBA (ADO / ADOX) bzw. ODBC (MS-JET-Provider) zur Verfügung. In der DB-Oberfläche von ACCESS ist nur eine Teilmenge zugänglich ANSI-SQL-98 – Level 1 ANSI-SQL-92 – Level 1 MS Jet SQL S. 4 © Alle Rechte ausschließlich beim Autor: Kopien, Nachnutzungen usw. bedürfen der Genehmigung! Autor: Andreas Schöbel 01187 Dresden, Münchner Str. 33