4. Structured Query Language (SQL)

Ähnliche Dokumente
4. Structured Query Language (SQL)

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

2.5 Structured Query Language (SQL)

Structured Query Language (SQL) als standardisierte Anfragesprache für relationale Datenbanken

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Referentielle Integrität

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Referentielle Integrität

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Rückblick: Relationale Normalisierung

3. Relationales Modell & Algebra

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

Informatik 12 Datenbanken SQL-Einführung

Rückblick: Relationales Modell

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

7. Übung - Datenbanken

Datenbanken (WS 2015/2016)

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

SQL structured query language

Datenintegrität. Bisherige Integritätsbedingungen

SQL (Structured Query Language) Schemata Datentypen

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Rückblick. SQL bietet viele Möglichkeiten zur Anfrageformulierung

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Wie definieren wir das Relationen-

IV. Datenbankmanagement

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Wiederholung VU Datenmodellierung

Vorlesung Dokumentation und Datenbanken Klausur

Rückblick: Relationale Normalisierung

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

Schlüssel bei temporalen Daten im relationalen Modell

Referenzielle Integrität SQL

Structured Query Language (SQL) als standardisierte Anfragesprache für relationale Datenbanken

Wiederholung VU Datenmodellierung

Relationales Datenbanksystem Oracle

3. Relationales Modell & Algebra

SQL: statische Integrität

5. Relationale Entwurfstheorie

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Datenbanksysteme SS 2007

Labor 3 - Datenbank mit MySQL

SQL und MySQL. Kristian Köhntopp

Arbeiten mit einem lokalen PostgreSQL-Server

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

Datenbanken. Sommersemester 2010 Probeklausur

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

Rückblick: Datenbankentwurf

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Objektrelationale Datenbanken

Ein Ausflug zu ACCESS

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Kapitel DB:VI (Fortsetzung)

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Datenbanksysteme 2013

Sructred Query Language

Datenbanken im WI-Unterricht mit

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

SQL. Fortgeschrittene Konzepte Auszug

3. Relationales Modell & Algebra

Relationale Datenbanken in der Praxis

Datenbanken. 5 Tabellen. Karl Meier karl.meier@kasec.ch Inhalt. Domänen verwenden Tabellen anzeigen, ändern, löschen Übung

Kapitel 8: Datenintegrität

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

MIN oder MAX Bildung per B*Tree Index Hint

Grundlagen von Datenbanken

5.3 Datenänderung/-zugriff mit SQL (DML)

4. Datenbanksprache SQL

5. SQL. Einleitung / Historie / Normierung. Datendefinition mit SQL (DDL) Datenänderung/-zugriff mit SQL (DML) Datenkontrolle mit SQL (DCL)

Probeklausur im Modul Informationstechnik 1, WS 2003/04. Studiengang IWD 1. Semester Seite 1 von 5

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Datenbanksysteme Kapitel: SQL Data Definition Language

2. Relationale Datenbanken

Was meinen die Leute eigentlich mit: Grexit?

Praktische SQL-Befehle

3. Das Relationale Datenmodell

Transkript:

4. Structured Query Language (SQL)

Rückblick Konzeptuelles Modell (ERM) können wir nun in (wenige) Relationen übersetzen Relationale Algebra gibt uns eine Sprache an die Hand, mit der wir Anfragen auf Relationen formulieren können Jetzt: Structured Query Language (SQL) als der Industriestandard zur Schemadefinition, Datenmanipulation und Anfrageformulierung 2

SQL vs. Relationales Modell & Relationenalgebra Relationales Modell und relationale Algebra bilden das theoretische Fundament von SQL Wichtige Unterschiede: Relationales Modell sieht Relationen als Mengen von Tupeln, und es gibt somit keine Duplikate; per SQL definierte Tabellen in RDBMS können jedoch Duplikate enthalten Relationale Algebra gibt (implizit) einen Auswertungsplan für die Anfrage vor; SQL ist rein deklarativ, d.h. das RDBMS darf selbst entscheiden wie die Anfrage ausgewertet wird 3

Structured Query Language (SQL) Structured Query Language (SQL) geht zurück auf den in IBM Almaden (San Jose) entwickelten Prototypen System R ursprünglich: Structured English Query Language (SEQUEL) auf Englisch wird SQL noch immer sequel gesprochen 4

SQL als Standard SQL standardisiert durch American National Standards Institute (ANSI) und International Organization for Standardization (ISO) SQL-86 / SQL-89 SQL-92 (z.b. Datentypen für Daten, Mengenoperationen) SQL-99 (z.b. rekursive Anfragen) SQL-2003 (z.b. Unterstützung von XML) SQL-2008 / SQL-2011 Oracle, IBM DB2 und Microsoft SQL Server unterstützen SQL-92 weitgehend und bieten darüber hinaus proprietäre Funktionalität (z.b. XML-Unterstützung) 5

SQL Sprachbestandteile Data Definition Language (DDL) zur Schemadefinition (z.b. Anlegen von Tabellen) Data Query Language (DQL) zum Anfragen (z.b. Auswahl bestimmer Zeilen) Data Manipulation Language (DML) zur Datenmanipulation (z.b. Einfügen von Daten in Tabellen) Data Control Language (DCL) zur Rechteverwaltung (z.b. Sperren des Zugriffs auf Tabelle) Transaction Control Language (TCL) zur Transaktionsverwaltung (z.b. rückgängig machen) 6

4.1 Schemadefinition und -veränderung Data Definition Language (DQL) stellt Befehle zur Schemadefinition und veränderung bereit, z.b. Anlegen, Ändern und Löschen von Tabellen Anlegen, Ändern und Löschen von Sichten (Kapitel 10) Wie können wir zu Relationen unseres Schema, z.b. Studenten : Ó Ô [ MatrNr : integer, Vorname : string, Name : string, Semester : integer ] Professoren : Ó Ô [ PersNr : integer, Vorname : string, Name : string, Fach : string ] entsprechende Tabelle anlegen? 7

Datentypen SQL kennt eine Vielzahl von Datentypen, u.a. int, smallint, bigint für ganze Zahlen float für Gleitkommazahlen char(n) für Zeichenketten mit fixer Länge n varchar(n) für Zeichenkette der maximalen Länge n date, time, datetime für Datums- und Zeitangaben money für Währungsangaben blob / clob für große Binär- bzw. Textdaten Verfügbarkeit und Benennung der Datentypen unterscheidet sich (leider) zwischen RDBMSs 8

Datentypen in SQLite und MS SQL Server MS SQL Server und SQLite als die für unsere Vorlesung relevanten RDBMSs kennen u.a. folgende Datentypen int / smallint / integer für ganze Zahlen float / real für Gleitkommazahlen char / varchar(n) / text für Zeichenketten varbinary(n) / blob für sehr große Binärdaten (bis 2 GB) datetime / smalldatetime für Datumsangaben money für Währungsangaben 9

NULL-Werte Weiterer Unterschied zum relationalen Modell: RDBMSs unterstützen NULL-Werte für alle Datentypen NULL-Wert zeigt an, dass der Wert des Attributs nicht bekannt ist oder dass das Attribut nicht anwendbar ist NULL-Werte können bei der Schemadefinition (d.h. dem Anlegen von Tabellen) erlaubt oder untersagt werden Beispiel: Lieferdatum (nicht bekannt) und Bemerkung (nicht anwendbar) von Bestellungen dürfen NULL sein 10

Anlegen von Tabellen Tabellen lassen sich mittels CREATE TABLE anlegen 1 CREATE TABLE <Name der Tabelle> ( 2 <Name von Attribut 1> datentyp (NOT) NULL, 3 <Name von Attribut 2> datentyp (NOT) NULL, 4... 5 ) Beispiel: Tabelle Professoren 1 CREATE TABLE Professoren ( 2 PersNr int NOT NULL, 3 Vorname varchar(30) NOT NULL, 4 Name varchar(30) NOT NULL, 5 Fach varchar(60) NULL 6 ) 11

Anlegen von Tabellen NULL-Werte können erlaubt oder untersagt werden NOT NULL lässt keine NULL-Werte zu NULL (oder keine Angabe) lässt NULL-Werte zu Diese Angaben sind Integritätsbedingen, d.h. das RDBMS stellt sicher, dass sie eingehalten werden 12

Primärschlüssel Bisher kein Schlüssel definiert, d.h. die Tabelle Professoren könnte mehrere identische Tupel enthalten Primärschlüssel (mehr dazu in Kapitel 5) ist die Menge von Attributen, die als Schlüssel für Tabelle gewählt wurde Primärschlüssel wird mittels PRIMARY KEY angegeben und kann ein oder mehrere Attribute umfassen 13

Primärschlüssel Beispiel: Tabelle Professoren 1 CREATE TABLE Professoren ( 2 PersNr int, 3 Vorname varchar(30), 4 Name varchar(30), 5 Fach varchar(60), 6 PRIMARY KEY (PersNr) 7 ) Erinnerung: Primärschlüssel stellen eine Integritätsbedingung dar (mehr dazu in Kapitel 6), um deren Einhaltung sich das RDBMS nun kümmert, d.h. wir können nicht mehrere Tupel mit identischer PersNr in die Tabelle einfügen 14

Fremdschlüssel Fremdschlüssel sind Gruppen von Attributen, die dem Primärschlüssel einer anderen Tabelle entsprechen und damit auf ein Tupel in der anderen Tabelle verweisen Beispiel: Relation Vorlesung, nach Eliminierung des 1:n- Beziehungstyps lesen, enthält Attribut PersNr, welches auf einen Professor verweist 1 CREATE TABLE Vorlesungen ( 2 VorlNr int NOT NULL, 3 Bezeichnung varchar(60) NOT NULL, 4 SWS varchar(30) NOT NULL, 5 PersNr int NULL, 6 PRIMARY KEY (VorlNr) 7 ) 15

Fremdschlüssel Fremdschlüssel werden mittels FOREIGN KEY... REFERENCES angegeben und können jeweils mehrere Attribute enthalten Eine Tabelle kann höchstens einen Primärschlüssel, aber mehrere Fremdschlüssel besitzen 1 CREATE TABLE Vorlesungen ( 2 VorlNr int NOT NULL, 3 Bezeichnung varchar(60) NOT NULL, 4 SWS varchar(30) NOT NULL, 5 PersNr int NULL, 6 FOREIGN KEY (PersNr) REFERENCES Professoren(PersNr), 7 PRIMARY KEY (VorlNr) 8 ) 16

Referentielle Integrität Fremdschlüssel stellen eine Integritätsbedingung dar RDBMS stellt referentielle Integrität der Daten sicher, d.h. wenn die Attribute A 1,, A n als Fremdschlüssel auf eine andere Tabelle T markiert sind, dann müssen alle A i den Wert NULL haben (sofern erlaubt), oder es muss ein entsprechendes Tupel mit den Werten der Attribute A i als Primärschlüssel in der Tabelle T existieren Mehr zur referentiellen Integrität in Kapitel 6 17

Ändern von Tabellen Tabellen (d.h. ihr Schema, nicht ihr Inhalt) lassen sich mittels ALTER TABLE verändern Hinzufügen eines Attributs 1 ALTER TABLE <Name der Tabelle> 2 ADD COLUMN <Name des Attributs> datentyp Ändern eines Attributs 1 ALTER TABLE <Name der Tabelle> 2 ALTER COLUMN <Name des Attributs> datentyp 18

Löschen von Tabellen Tabellen lassen sich mittels DROP TABLE löschen 1 DROP TABLE <Name der Tabelle> Beispiel: Tabelle Professoren 1 DROP TABLE Professoren 19

SQL-Syntaxdiagramme Dokumentation zu RDBMS veranschaulicht die Syntax eines SQL Kommandos evtl. mittels Syntaxdiagramm Quelle: https://www.sqlite.org 20

SQL-Grammatiken Grammatiken sind eine alternative, zu Syntaxdiagrammen äquivalente, Darstellung der Syntax von SQL Kommandos CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [partition_options] create_definition: col_name column_definition [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [index_option]... [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition CHECK (expr) column_definition: data_type [NOT NULL NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] [PRIMARY] KEY] [COMMENT 'string'] [COLUMN_FORMAT {FIXED DYNAMIC DEFAULT}] [STORAGE {DISK MEMORY DEFAULT}] [reference_definition] Quelle: http://docs.oracle.com 21

Data Dictionary RDBMSs verwenden meist selbst eine Datenbank, das sogenannte Data Dictionary, um Schemainformationen (z.b. welche Tabellen es gibt) zu verwalten Namen der Tabellen, in denen das Data Dictionary selbst angelegt ist, sind (leider) systemabhängig RDBMSs bieten teilweise eigene Kommandos, um auf das Data Dictionary zuzugreifen 22

Data Dictionary Zugriff auf Data Dictionary in SQLite:.tables zeigt verfügbare Tabellen an.schema zeigt Schema einer Tabelle an Zugrif auf Data Dictionary in MS SQL Server: sp_tables enthält verfügbare Tabellen sp_columns <T> enthält Schema der Tabelle T 23

4.2 Anfragen auf einer Tabelle Anfragen lassen sich mittels des SELECT Kommandos formulieren; dieses hat folgende Form 1 SELECT <Attribute> 2 FROM <Tabellen> 3 WHERE <Bedingungen> 4 ORDER BY <Attribute> Beispiel: Vorname und Name von Professoren in Informatik 1 SELECT Vorname, Name 2 FROM Professoren 3 WHERE Fach = Informatik dies entspricht folgendem Ausdruck der Relationenalgebra fi [ Vorname, Name ] ( [ Fach = Informatik ] ( Professoren ) ) 24

Duplikateneliminierung Anfrageergebnisse können, im Gegensatz zu Ergebnisrelationen der Relationanalgebra, Duplikate enthalten Professoren PersNr Vorname Name Fach 101101 Donald Knuth Informatik 231011 Albert Einstein Physik 300128 Alfred Nobel Chemie 478122 Donald Kossmann Informatik 600321 Carl Gauss Mathematik Vorname 1 SELECT Vorname 2 FROM Professoren Donald Albert Alfred Donald Carl 25

Duplikateneliminierung Duplikate im Anfrageergebnis können durch Angabe von DISTINCT unterdrückt werden Professoren PersNr Vorname Name Fach 101101 Donald Knuth Informatik 231011 Albert Einstein Physik 300128 Alfred Nobel Chemie 478122 Donald Kossmann Informatik 600321 Carl Gauss Mathematik Vorname 1 SELECT DISTINCT Vorname 2 FROM Professoren Donald Albert Alfred Carl 26

Sortierung Anfrageergebnisse können, im Gegensatz zu Ergebnisrelationen der Relationanalgebra, eine Ordnung haben Sortierung des Anfrageergebnis nach ein oder mehreren Attributen durch Angabe durch ORDER BY Natürliche Ordnung der Attribute wird gemäß ihres Datentyps verwendet, d.h. numerische Attribute (z.b. int und float) werden nach numerischem Wert, textuelle Attribute (z.b. char und varchar) lexikografisch sortiert 27

Sortierung Angabe von ASC bzw. DESC bestimmt, ob nach einem Attribut aufsteigend oder absteigend sortiert wird ASC ist hier Vorgabewert (default) und kann entfallen Beispiel: Vorname, Name und Fach von Professoren, aufsteigend sortiert nach Nachname und Vorname 1 SELECT Vorname, Name, Fach 2 FROM Professoren 3 WHERE Fach = Mathematik 4 ORDER BY Name, Vorname 28

Sortierung Beispiel: Vorname und Name von Studenten, absteigend sortiert nach ihrer Anzahl von Semestern 1 SELECT Vorname, Name 2 FROM Studenten 3 ORDER BY Semester DESC 29

Formatierung und Namenskonventionen Ähnlich zu Programmiersprachen, gibt es auch für SQL verschiedene Konvetionen zur Bennenung von Bezeichnern und Formatierung von Kommandos Schlüsselwörter (CREATE vs. create) Attributnamen (Bestell_Nr vs. BestellNr) Tabellennamen (Kunden vs. Kunde) Formatierung von Kommandos (Klammern und Umbrüche) Letztlich Geschmacksache, Konsistenz innerhalb eines Projekts ist jedoch wichtig 30

Anfrageübung Versandhandel Bestellungen : Ó Ô [ BestellNr : integer, Bestelldatum : string,..., KundenNr : integer, ] Kunden : Ó Ô [ KundenNr : integer, Vorname : string, Name : string,...] Artikel : Ó Ô [ ArtikelNr : integer, Beschreibung : string,...,me : string ] Mengeneinheiten : Ó Ô [ME:string, Beschreibung : string,...] Bestellpositionen : Ó Ô [ BestellNr : integer, ArtikelNr : integer, Anzahl : integer ] Kunden aus Mannheim sortiert nach Name und Vorname Bestellungen des Kunden mit der KundenNr 66111019 sortiert nach ihrem Bestelldatum Vornamen von Kunden (ohne Duplikate) 31

Anfrageübung Versandhandel Kunden aus Mannheim sortiert nach Name und Vorname 1 SELECT * 2 FROM Kunden 3 WHERE Wohnort = Mannheim 4 ORDER BY Name, Vorname Bestellungen des Kunden mit der Kunden_Nr 66111019 sortiert nach ihrem Bestelldatum 1 SELECT * 2 FROM Bestellungen 3 WHERE Kunden_Nr = 66111019 4 ORDER BY Bestelldatum Vornamen von Kunden (ohne Duplikate) 1 SELECT DISTINCT Vorname 2 FROM Kunden 32

Zusammenfassung Structured Query Language (SQL) als standardisierte Anfragesprache für relationale Datenbanken Data Definition Language zur Schemadefinition (z.b. CREATE TABLE zum Anlegen von Tabellen) Data Query Language zum Formulieren von Anfragen (SELECT... FROM... WHERE... ORDER BY...) 33

Literatur [1] A. Kemper und A. Eickler: Datenbanksysteme Eine Einführung, De Gruyter Oldenbourg, 2013 (Kapitel 4) [2] G. Saake, K.-U. Sattler und A. Heuer: Datenbanken - Konzepte und Sprachen, mitp Professional, 2013 (Kapitel 7) 34