270 likes | 350 Views
SQL als Abfragesprache. theoretische und praktische Einführung. Wikipedia schreibt:. SQL ( Structured Query Language ), ist eine Datenbanksprache zur Definition , Abfrage und Manipulation von Daten in relationalen Datenbanken.
E N D
SQL als Abfragesprache theoretische und praktische Einführung
Wikipedia schreibt: • SQL (Structured Query Language), ist eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken. • SQL ist von ANSI und ISO standardisiert und wird von fast allen gängigen Datenbanksystemen unterstützt. • SQL umfasst die folgenden Datenbanksprachen: Data Manipulation Language, Data Definition Language, Data Control Language.
Allgemeines • Entstand gegen Ende der 70er (IBM, San Jose) • Eigentlicher Name: SEQUEL • Aktueller Standard: SQL:2008 • „Nichtprozedural“ • User formuliert was getan werden soll, ohne es selbst zu tun • Beispiel-Implementierungen: MySQL, Access, uvm. • Möglichkeiten der Erstellung per GUI oder „zu Fuß“ • Befehle orientieren sich an natürlicher Sprache (Englisch) • Erweiterbar durch Schnittstellen zu anderen Programmiersprachen und durch Exportfunktionen
Beispiel einer Relation Nutzer Entität/Relation Schema Tupel Attribut
Beispiel einer Relation Bücher
Beispiel einer Relation Entliehen
Indizes/Schlüssel • Jedes Tupel (Zeile) in einer Tabelle kann durch einen eindeutigen Index (Primary Key) identifiziert werden • Dieser wird explizit vergeben oder aus bestimmten Spalten zusammengesetzt • Um eindeutig zu sein muss sich der zusammengesetzte Schlüssel in mindestens einem Punkt von allen anderen unterscheiden
Data Manipulation Language • Daten werden abgerufen • Daten können manipuliert werden • Wichtigste Befehle: SELECT INSERT UPDATE DELETE
Beispiel Select SELECT Spaltenname1, Spaltenname2 (* für Alle) FROM Relationsname; Wählt bestimmte Spalten aus einer bestimmten Tabelle aus
Beispiel Select SELECT Spaltenname1, Spaltenname2 FROM Relationsname WHERE Bool‘sche Bedingung; (<,>,||,=,AND,OR,BETWEEN,EXISTS,IS NULL etc.) Wählt bestimmte Spalten aus einer bestimmten Tabelle aus, deren Inhalt eine Bedingung erfüllt
Beispiel Select SELECT Spaltenname1, Spaltenname2 (* für Alle) FROM Relationsname WHERE Bool‘sche Bedingung ORDER BY Spaltenname asc/desc; Wählt bestimmte Spalten aus einer bestimmten Tabelle aus, deren Inhalt eine Bedingung erfüllt und sortiert diese
Beispiel Select SELECT Spaltenname1, Spaltenname2 (* für Alle) FROM Relationsname GROUP BY Gruppierungen (COUNT,MAX,MIN,AVG,SUM,etc.) Wählt bestimmte Spalten aus einer bestimmten Tabelle aus und führt eine mathematische Operation mit diesen durch
Kreuzen links rechts SELECT * FROM links, rechts;
Join Select links rechts SELECT * FROM links, rechts WHERElinks.B=rechts.B;
Beispiel Insert INSERT INTO Relationsname (Spaltenname) VALUES (Werte); Fügt in einer bestimmten Spalte einer bestimmten Tabelle, Werte ein.
Beispiel Update UPDATE Relationsname SET Spaltenname = Wert WHERE Bool‘sche Bedingung; Ändert in einer bestimmten Spalte einer bestimmten Tabelle den Wert, der eine Bedingung erfüllt.
Beispiel Delete DELETE FROM Relationsname WHERE Bool‘sche Bedingung; Löscht in einer bestimmten Tabelle den Tupel, der eine Bedingung erfüllt.
Data Definition Language • Daten werden erzeugt • Relationen werden erzeugt/gelöscht • Wichtigste Befehle: CREATE DROP ALTER
Beispiel Create CREATE TABLE Relationsname (Spaltenname1,Spaltenname2); Erzeugt eine Tabelle mit den angegebenen Spalten. Wobei hinter jeder Spalte ein Datentyp definiert wird (INT,CHAR,BIT,DATE, etc.).
Exkurs: Datentypen in SQL • int: Ganze Zahl (Variationen smallint, bigint) • numeric (n,m): Festkommazahl (n Stellen, davon m Nachkommastellen • float (m): Gleitkommazahl (mit m Stellen) • real/double: Gleitkommazahlen (vom DBS festgelegt) • char (n): Zeichenkette mit n Stellen • varchar: Zeichenkette variabler Länge • date: Datumsangabe • time: Zeitangabe • timestamp: Datum und Uhrzeit • boolean: wahr- oder falsch-Wert • blob (n): „Binary Large Object“ mit n Byte Länge • clob (n): „Character Large Object“ mit n Zeichen Länge
Beispiel Create CREATE INDEX Indexname ON Relationsname (Spaltenname); Erzeugt einen Index auf den angegebenen Spalten.
Beispiel Alter ALTER TABLE Relationsname ADD Spaltenname1, Spaltenname2; Fügt zu einer Tabelle die angegebenen Spalten. Wobei hinter jeder Spalte ein Datentyp angegeben wird.
Beispiel Drop DROP TABLE Relationsname; Löscht eine bestimmte Tabelle.
Beispiel Drop DROP INDEX Indexname; Löscht einen bestimmten Index.
Data Control Language • Rechte werden gegeben • Rechte werden eingeschränkt • Wichtigste Befehle: GRANT REVOKE
Beispiel Grant GRANT Befehl1,Befehl2 ON Relationsname1, Relationsname2 TO Benutzername (kann auch PUBLIC sein); [WITH GRANT OPTION;] Gestattet Befehle auf bestimmten Tabellen, einem/mehreren/allen Benutzern [mit der Option dieses Recht weiterzugeben].
Beispiel Revoke REVOKE Befehl1,Befehl2 ON Relationsname1, Relationsname2 FROM Benutzername (kann auch PUBLIC sein); Entzieht Befehle auf bestimmten Tabellen, einem/mehreren/allen Benutzern.