Benutzer-Werkzeuge

Webseiten-Werkzeuge


konzepte:sql
  • Bookmark "Structured Query Language (SQL)" auf del.icio.us
  • Bookmark "Structured Query Language (SQL)" auf Digg
  • Bookmark "Structured Query Language (SQL)" auf Furl
  • Bookmark "Structured Query Language (SQL)" auf Reddit
  • Bookmark "Structured Query Language (SQL)" auf Ask
  • Bookmark "Structured Query Language (SQL)" auf Google
  • Bookmark "Structured Query Language (SQL)" auf Netscape
  • Bookmark "Structured Query Language (SQL)" auf StumbleUpon
  • Bookmark "Structured Query Language (SQL)" auf Technorati
  • Bookmark "Structured Query Language (SQL)" auf Live Bookmarks
  • Bookmark "Structured Query Language (SQL)" auf Yahoo! Myweb
  • Bookmark "Structured Query Language (SQL)" auf Facebook
  • Bookmark "Structured Query Language (SQL)" auf Newsvine
  • Bookmark "Structured Query Language (SQL)" auf Yahoo! Bookmarks
  • Bookmark "Structured Query Language (SQL)" auf Twitter
  • Bookmark "Structured Query Language (SQL)" auf myAOL
  • Bookmark "Structured Query Language (SQL)" auf Slashdot
  • Bookmark "Structured Query Language (SQL)" auf Mister Wong

Structured Query Language (SQL)

Allgemeine Informationen zu SQL

Die Datenbankabfragesprache SQL wurde Ende der 1970 er Jahre von IBM aus der Abfragesprache SEQUEL (Structured English QUEry Language) entwickelt.1) IBM entwickelte die Sprache mit dem Ziel auch für Nicht-Programmierer eine relativ einfach zu erlernende Sprache zur Abfrage für die rationale Datenbank DB2 zur Verfügung zu stellen. Es handelte sich bei SQL ursprünglich um eine nichtprozedurale Programmiersprache. Diese Art von Programmiersprachen beschreiben ein Problem nicht mehr, wie z. B. C++ oder PASCAL, sondern sind speziell auf die Lösung von einem Problem ausgelegt.2)

Der Standard SQL

SQL entwickelte sich zur Standard-Abfragesprache für rationale Datenbanken. 1986 legte das ANSI (American National Standards Institute) den Standard SQL1 (SQL-86) fest. Anschließend fand eine Weiterentwicklung der Abfrage-Sprache statt, so dass diese Entwicklungen erneut durch die Standardisierungsorganisationen ISO (International Standards Organization) und ANSI unter der Bezeichnung ISO/IEC 9075:1992 festgelegt worden sind.3) Mit diesem auch als SQL-92 bezeichneten Standard wurde eine Basis bzw. Framework festgelegt. Dieser Standard umfasste sowohl die Syntax als auch die Semantik der Datenbankabfragesprache SQL. Des Weiteren sind Konzepte eines Datenbanksystems, wie z. B. Transaktionen und Zugriffsrechten, enthalten.4) Der Standard von 1992 ist in die drei Conformance Level unterteilt:

  • Entry-Level:
    Umfasst die grundlegenden Befehle zum Anlegen, Bearbeiten und Verwalten von Datenbanken und Tabellen, wie CREATE-, SELECT- und SHOW-Anweisungen.
  • Intermediate-Level:
    Bietet zusätzliche Funktionen wie erweiterte Datum- und Zeit-Datentypen, Mengenoperationen oder dynamisches SQL.
  • Full-Level:
    Enthält Funktionen, wie Constraints über mehrere Tabellen und SELECT-Funktionen in der FORM-Klausel, die jedoch in den meistens Datenbanksystemen nicht vollständig umgesetzt sind.

Die meistens Hersteller von Datenbankmanagementsystemen setzen den kompletten Entry-Level sowie Teile der anderen beiden Level um. SQL dient häufig als Bindefunktion zwischen dem Datenbankmanagementsystem und benutzerfreundlichen Anwendungsprogrammen.5) Durch die Weiterentwicklungen des Internet, und eine stärkere Verwendung von Datenbanken im Internet, sind in den letzten Jahren viele Erweiterungen wie XML und Java Routines and Types für das SQL Framework entstanden. Der SQL Standard ist ständig weiterentwickelt und aktualisiert worden:

  • 1999: SQL3 oder SQL:1999 wird verabschiedet.
  • 2003: SQL:2003 ISO/IEC 9075:2003 wird von der ISO als Nachfolger des SQL:1999-Standards verabschiedet.
  • 2006: SQL:2006 ISO/IEC 9075-14:2006 legt fest, wie SQL in Zusammenhang mit XML verwendet werden kann.
  • 2008: SQL:2008 ISO/IEC 9075:2008 ist die aktuelle Vision des SQL-Standards. 6)

Die Sprachbestandteile von SQL

SQL ist in vier Befehlsgruppen aufgeteilt:

  • DDL (Data Definition Language) – Erstellen von Datenbanken, Tabellen, Relationen und Indizes
  • DQL (Data Query Language) – Dient der Abfrage von Daten
  • DML (Data Manipulation Language) – Dient dem Anlegen, Ändern und Löschen von Datensätzen
  • DCL (Data Control Language) – Funktionen zum Anlegen von Benutzern und der Vergabe von Zugriffsrechten

Grundlagen von SQL

Die Basis für rationale Datenbanken wurde 1970 vom Mathematiker E. F. Cobb gelegt, der mit Hilfe der Mengenlehre das rationale Datenmodell aufstellt.7) Hiernach besteht eine Datenbank aus einer Menge von Relationen, die zusammenhängende Daten beinhalten. Relationen werden nach dieser Lehre als eine Menge von Datensätzen (Tupeln) verstanden, die in Tabellenform gespeichert werden. Eine Relation ist gekennzeichnet durch folgende Merkmale:

  • Einen eindeutigen Namen
  • Mehrere Attribute (Spalten)
  • Keine bis viele Datensätze (Tupel bzw. Tabellenzeilen)
  • Einen einzigen Wert pro Attribut in einem Datensatz
  • Einem Primärschlüssel, der einem oder mehreren Attributen besteht und der eindeutigen Identifizierung des Datensatzes dient.

Datentypen

Jedem Attribut wird ein Datentyp zugewiesen. Die Standard Datentypen sind Zahlen-, Zeichenketten- und Datumstypen. Die Datentypen können je nach Datenbankmanagementsystem noch weiteren Einschränkungen unterworfen werden. Die wichtigsten Standarddatentypen sind:8)

  • Integer - Ganze Zahl (positiv oder negativ).
  • Numeric (n, m) oder decimal (n, m) - Festkommazahl (positiv oder negativ) mit insgesamt maximal n Stellen, davon m Nachkommastellen.
  • Float (m) - Gleitkommazahl (positiv oder negativ) mit maximal m Nachkommastellen.
  • Double - Gleitkommazahl (positiv oder negativ).
  • Character (n) - Zeichenkette Text mit n Zeichen.
  • Date - Datum (ohne Zeitangabe).
  • Time - Zeitangabe (evtl. inklusive Zeitzone).
  • Boolean - Boolesche Variable (kann die Werte true(wahr) oder false (falsch) annehmen).

DDL (Data Definition Language):

Diese Befehlsgruppe dient der Erstellung der Datenbank, der Tabellen sowie Indizes. Eine neue Datenbank wird mit folgender Anweisung erstellt, wenn der Benutzer die Berechtigung zum Anlegen besitzt:

CREATE DATABASE [IF NOT EXISTS] Datenbankname“.

Mit der Anweisung „DROP DATABASE Datenbankname“ wird die Datenbank gelöscht.

Die Anweisung „USE Datenbankname“ sorgt dafür, dass die Datenbank verwendet wird. Mit der Anweisung „CONNECT Datenbankname USER Username PASSWORD Passwort “ wird eine Verbindung zur Datenbank aufgebaut, so dass anschließend mittels einer andern Programmiersprache ein SQL-Statement an die Datenbank übergeben wird, um eine Datenabfrage zu erstellen.

Eine Tabelle in der Datenbank wird mit folgender Anweisung erstellt:9)

CREATE TABLE Tabellenname
(Datenfeld1 Datentyp1 [DEFAULT Standardwert1 | NULL | NOT NULL] [AUTO_INCREMENT],

Datenfeldx Datentypx [DEFAULT Standardwertx | NULL | NOT NULL] [AUTO_INCREMENT], PRIMARY KEY (Datenfeldname));”

Die Anweisung „[DEFAULT Standardwert | NULL | NOT NULL] [AUTO_INCREMENT],“ entscheidet über den Standardwert, welchen ein Datenfeld erhält, wenn kein Wert angegeben wird. Dies kann zum einen ein vom Anwender hinterlegter „Standardwert“, „NULL“ – also ein leeres Feld, „NOT NULL“ – hierbei muss ein Wert hinterlegt werden oder „AUTO_INCREMENT“ – dies ist eine Zahl die mit jedem Datensatz um 1 erhöht wird, sein.

Mit „PRIMARY KEY (Datenfeldname)“ wird der eindeutige Primärschlüssel der Tabelle festgelegt.

Des Weiteren kann mit der Anweisung „CONSTRAINT“ noch eine Prüfung auf Gültigkeit und Vereinbarkeit mit dem Datentyp hinterlegt werden.

Mit „ALTER TABLE Tabellenname [ADD | DROP | CAST] Datenfeld“ können Änderungen an der Tabelle vorgenommen werden. Mit „ADD“ werden Datenfelder hinzugefügt, mit „DROP“ werden diese gelöscht und mit „CAST“ kann der Datentyp geändert werden.

DQL (Data Query Language):

Die Abfrage von Daten stellt die Hauptfunktion von SQL dar. Die Selektion von Daten stellt die wichtigste Funktion für die DML (Data Manipulation Language) dar. Denn es ist von besonderer Bedeutung die Daten zu selektieren, bevor diese verändert werden sollen. Zusammengefasst sind die wichtigsten Elemente einer SQL-SELECT-Abfrage wie folgt anzugeben:10)
SELECT [DISTINCT] Datenfeld(er)
FROM Datenbanktabelle(n)
[WHERE Where-Klausel]
[GROUP BY (Group-by-Attribut)+
[HAVING Having-Klausel]]
[ORDER BY (Datenfeld [ASC|DESC])]
[LIMIT [Start, ] Anzahl];”


Erläuterung: „DISTINCT“ gibt an, dass aus der Ergebnisrelation gleiche Datensätze entfernt werden sollen. Somit wird jeder Datensatz nur genau einmal ausgegeben, auch wenn dieser mehrfach in der Tabelle vorkommt. Ansonsten würde SQL jeden Datensatz in der Häufigkeit ausgeben, mit der dieser in der Datenbank vorkommt.

„FROM Datenfeld(er)“ bestimmt, welche Spalten bzw. Attribute der „Datenbanktabelle(n)“ ausgegeben werden (bei der Eingabe von * werden alle Attribute ausgegeben) und ob Aggregatfunktionen anzuwenden sind. Wie bei allen anderen Aufzählungen werden die einzelnen Elemente mit Komma voneinander getrennt.

„Datenbanktabelle(n)“ gibt die Datenbanktabellen an, aus denen die Daten stammen. Es können Relationen und Sichten angegeben werden und miteinander als kartesisches Produkt oder als Verbund verknüpft werden. Über den Zusatz „AS“ können den Datenbanktabellen und Datenfeldern zusätzlich Namen gegeben werden.

„Where-Klausel“ bestimmt Bedingungen, unter denen die Daten ausgegeben werden sollen. SQL bietet hierbei die Möglichkeit von Unterabfragen.

„Group-by-Attribut“ legt fest, ob unterschiedliche Werte als einzelne Zeilen ausgegeben werden sollen (GROUP BY = Gruppierung) oder aber die Feldwerte der Zeilen durch Addition (SUM), Durchschnitt (AVG), Minimum (MIN), Maximum (MAX) oder ähnliches zu einem Ergebniswert zusammengefasst werden, der sich dann auf die Gruppierung bezieht.

„Having-Klausel“ ist wie die „Where-Klausel“, nur dass sich die angegebene Bedingung auf das Ergebnis einer Aggregationsfunktion bezieht.

„Datenfeld“: nach ORDER BY werden Attribute angegeben, nach denen sortiert werden soll. ASC gibt dabei aufsteigende (Standard), DESC absteigende Sortierung an.

„LIMIT“ kann die Anzahl der zurückgelieferten Datensätze begrenzen. Des Weiteren bietet „Start“ die Möglichkeit die Datensätze erst ab einem bestimmten Datensatz ausgegeben zu lassen.

DML (Data Manipulation Language):

Die DML (Data Manipulation Language) ermöglicht es dem Benutzer Änderungen an den Relationen vorzunehmen. Um Änderungen an den Relationen vorzunehmen benötigt man Kenntnisse über die Datensätze. Es ist wichtig wie die Tabellen aufgebaut sind und wo Daten sind, um diese zu verändern. Daher hängen die DQL (Data Query Language) und die DML (Data Manipulation Language) eng zusammen. Mit dem folgenden Statement werden neue Datensätze in eine Tabelle bzw. Relation eingefügt:11)

INSERT INTO Tabellenname (Feld1 bzw. Attribut1, Feld2, …, Feldx) VALUES (Wert1, Wert2, …, Wertx);“

Hierbei wird mit der Anweisung INSERT INTO das einfügen in die gewünschte Tabelle begonnen. Anschließend werden die Attribute aufgelistet in die Werte bzw. VALUES eingefügt werden sollen. Dies ist wichtig, weil z.B. nicht in jedes Attribut der Tabelle Werte eingefügt werden sollen oder die Werte in einer anderen Reihenfolge vorliegen als die Attribute in der Tabelle strukturiert sind.

Das folgende Statement ermöglicht die Aktualisierung von Datensätze in eine Tabelle:12)

UPDATE Tabellenname SET Feld1 = Wert1, Feld2 = Wert2, …, Feldx = Wertx [WHERE Where-Klausel];“

Mit „UPDATE Tabellenname“ wird zuerst die Tabelle in der Werte geändert werden sollen ausgewählt. Die Anweisung „SET“ weißt den Felder einen neuen Wert zu. Mit der „Where-Klausel“ kann der Anweisung eine Bedingung mitgegeben werden. Auf diese Weise werden nur die Datensätze geändert, welche die Bedingung erfüllen.

Die Anweisung „DELETE FROM Tabellenname [WHERE Where-Klausel];“ 13) dient zum löschen von Datensätzen. Hierbei wird zuerst die Tabelle aus der Datensätze gelöscht werden sollen angegeben. Mit der „Where-Klausel“ kann der Anweisung eine Bedingung mitgegeben werden und somit die Datensätze, welche gelöscht werden sollen, eingeschränkt werden.

DCL (Data Control Language):

Hierzu gehören alle Anweisungen, die die Benutzerrechte organisieren. Wichtig ist hierbei das Anlegen von Benutzern im Datenbankmanagementsystem, damit dieser auf die Relationen zugreifen kann. Dies kann mit der Anweisung „INSERT INTO user (host, user, password) VALUES (host, user, password)“ erfolgen. Anschließend können per „GRANT Rechte ON Datenbankobjekt TO User“ Rechte für einzelnen Datenbanken oder Datenbanktabellen zu einzelnen Benutzer vergeben werden. Mit „REVOKE Rechte ON Datenbankobjekt TO User“ können diese Rechte den Benutzern wieder entzogen werden.14)

Des Weiteren gehört zu diesem Bereich auch die Transaktionsverwaltung. Diese bestimmt z. B. ob ein gleichzeitiges Zugriffsrecht zu Tabellen erlaubt ist oder nicht. Dies ist über die Verwaltung der Transaktionen möglich. Diese können gestartet werden, der Transaktionen können Lese- und Schreibe-Rechte zugewiesen werden, die Transaktion kann beendet werden und Änderungen von Transaktionen können rückgängig gemacht werden.15)

Weitere Informationen

1) , 2)
Vgl. Stepken (1999 a) - Die Geschichte von SQL - 16. August 2010. http://www.tu-chemnitz.de/docs/mysql/mysql-24.html
3)
Vgl. Böttcher, U. / Teich, P.: Grundlagen SQL, S. 58.
4)
Vgl. Böttcher, U. / Teich, P.: Grundlagen SQL, S. 58 f.
5)
Vgl. hier und im Folgenden Kulkarni (2003) - Overview of SQL 2003 - 16. August 2010. http://www.wiscorp.com/SQL2003Features.pdf
6)
SQL:2008 Draft International Standard Documents - 16. August 2010. http://www.wiscorp.com/sql200n.zip
7)
Vgl. Böttcher, U. / Teich, P. (2003): SQL - Grundlagen und Datenbankdesign, S. 38 f.
8)
Vgl. Böttcher, U. / Teich, P. (2003): SQL - Grundlagen und Datenbankdesign, S. 66 ff.
9)
Vgl. Böttcher, U. / Teich, P. (2003): SQL - Grundlagen und Datenbankdesign, S. 64 ff.
10)
Vgl. Böttcher, U. / Teich, P. (2003): SQL - Grundlagen und Datenbankdesign, S. 86 ff.
11)
Vgl. Böttcher, U. / Teich, P. (2003): SQL - Grundlagen und Datenbankdesign, S. 78 ff.
12)
Vgl. Böttcher, U. / Teich, P. (2003): SQL - Grundlagen und Datenbankdesign, S. 82 ff.
13)
Vgl. Böttcher, U. / Teich, P. (2003): SQL - Grundlagen und Datenbankdesign, S. 83 ff.
14)
Vgl. Böttcher, U. / Teich, P. (2003): SQL - Grundlagen und Datenbankdesign, S. 146 ff.
15)
Vgl. Böttcher, U. / Teich, P. (2003): SQL - Grundlagen und Datenbankdesign, S. 156 ff.
  • Bookmark "Structured Query Language (SQL)" auf del.icio.us
  • Bookmark "Structured Query Language (SQL)" auf Digg
  • Bookmark "Structured Query Language (SQL)" auf Furl
  • Bookmark "Structured Query Language (SQL)" auf Reddit
  • Bookmark "Structured Query Language (SQL)" auf Ask
  • Bookmark "Structured Query Language (SQL)" auf Google
  • Bookmark "Structured Query Language (SQL)" auf Netscape
  • Bookmark "Structured Query Language (SQL)" auf StumbleUpon
  • Bookmark "Structured Query Language (SQL)" auf Technorati
  • Bookmark "Structured Query Language (SQL)" auf Live Bookmarks
  • Bookmark "Structured Query Language (SQL)" auf Yahoo! Myweb
  • Bookmark "Structured Query Language (SQL)" auf Facebook
  • Bookmark "Structured Query Language (SQL)" auf Newsvine
  • Bookmark "Structured Query Language (SQL)" auf Yahoo! Bookmarks
  • Bookmark "Structured Query Language (SQL)" auf Twitter
  • Bookmark "Structured Query Language (SQL)" auf myAOL
  • Bookmark "Structured Query Language (SQL)" auf Slashdot
  • Bookmark "Structured Query Language (SQL)" auf Mister Wong
konzepte/sql.txt · Zuletzt geändert: 2014/10/19 13:38 (Externe Bearbeitung)