Sructred Query Language



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

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

Informatik 12 Datenbanken SQL-Einführung

Datumsangaben, enthält mindestens Jahr, Monat, Tag

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

Labor 3 - Datenbank mit MySQL

IV. Datenbankmanagement

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

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

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

ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen

SQL (Structured Query Language) Schemata Datentypen

SQL structured query language

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

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

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

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

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

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Berechnungen in Access Teil I

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

MySQL: Einfaches Rechnen.

Zeichen bei Zahlen entschlüsseln

Oracle: Abstrakte Datentypen:

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN

Professionelle Seminare im Bereich MS-Office

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

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

Artikel Schnittstelle über CSV

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

Views in SQL. 2 Anlegen und Verwenden von Views 2

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Excel Pivot-Tabellen 2010 effektiv

Abfragen: Grundbausteine

Übersicht der wichtigsten MySQL-Befehle

Erstellen von x-y-diagrammen in OpenOffice.calc

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten.

Datenbanken für Online Untersuchungen

Es geht also im die SQL Data Manipulation Language.

Bevor lineare Gleichungen gelöst werden, ein paar wichtige Begriffe, die im Zusammenhang von linearen Gleichungen oft auftauchen.

Im Original veränderbare Word-Dateien

Die Excel Schnittstelle - Pro Pack

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Geld wechseln kann als Visualisierung des Zehnerübergangs dienen. Die Zwischengrössen (CHF 2.-, 5.-, 20.-, 50.-) weglassen.

Fachhochschule Deggendorf Platzziffer:...

SQL Performance - Tips Do's & Don'ts

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Der Gabelstapler: Wie? Was? Wer? Wo?

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Funktion Erläuterung Beispiel

Summenbildung in Bauteiltabellen mit If Then Abfrage

Einfügen von Bildern innerhalb eines Beitrages

EINFACHES HAUSHALT- KASSABUCH

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB. Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5.

Der Kalender im ipad

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Primzahlen und RSA-Verschlüsselung

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Viele Bilder auf der FA-Homepage

Vgl. Kapitel 4 aus Systematisches Requirements Engineering, Christoph Ebert

Was meinen die Leute eigentlich mit: Grexit?

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

Auswahlabfragen mit ACCESS

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

Speichern. Speichern unter

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Funktionsbeschreibung. Lieferantenbewertung. von IT Consulting Kauka GmbH

1 topologisches Sortieren

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

Kurzeinführung LABTALK

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Hinweise zum Übungsblatt Formatierung von Text:

Repetitionsaufgaben Wurzelgleichungen

Wie halte ich Ordnung auf meiner Festplatte?

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

4 Aufzählungen und Listen erstellen

Mind Mapping am PC. für Präsentationen, Vorträge, Selbstmanagement. von Isolde Kommer, Helmut Reinke. 1. Auflage. Hanser München 1999

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Grundlagen der Informatik

FORUM HANDREICHUNG (STAND: AUGUST 2013)

MySQL Installation. AnPr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

Deinstallationsanleitung

Wie Sie beliebig viele PINs, die nur aus Ziffern bestehen dürfen, mit einem beliebigen Kennwort verschlüsseln: Schritt 1

Transkript:

Sructred Query Language Michael Dienert 11. November 2010 Inhaltsverzeichnis 1 Ein kurzer Versionsüberblick 1 2 SQL-1 mit einigen Erweiterungen aus SQL-92 2 3 Eine Sprache zur Beschreibung anderer Sprachen 2 4 Die drei allerwichtigsten SQL-Befehle 3 4.1 Tabellen erstellen............................ 3 4.2 Datensätze in eine Tabelle eintragen.................. 3 4.3 Datensätze auswählen.......................... 4 4.3.1 Spaltenausdruck bei SELECT................. 4 4.3.2 Tabellenausdruck bei SELECT................. 5 4.4 Das Produkt zweier oder mehrerer Tabellen.............. 5 1 Ein kurzer Versionsüberblick vor ca. 35 Jahren entwickelten die IBM-Mitarbeiter R.F. Boyce und D.D Chamberlain die Sprache SEQUEL. SEQUEL kannte noch keine JOINS, d.h. man konnte nur mit einer Tabelle arbeiten. SEQUEL wurde bald in SQL umbenannt. 1987 wird SQL zum ANSI-Standard 1 Diese Version wird SQL-1 genannt. 1987 wird SQL-1 zum ISO-Standard. 1989 wird dieser nochmals geaendert. Offizielle ISO-Norm: ISO 9075:1989. 1992 wird der Sprachumfang von SQL erheblich erweitert und SQL wird als SQL-2 auch SQL-92 genannt, normiert. Diese Norm heisst ISO 9075:1992. weitere Normierungen finden 1999 (SQL-3), 2003, 2006 und 2008 statt 1 American National Standards Institute 1

2 SQL-1 mit einigen Erweiterungen aus SQL-92 Für die Abschlussprüfung in IT hat man sich auf den SQL-92-Standard geeinigt. Da man die Prüfung aber bereits mit den Befehlen des SQL-1-Standards, der um ein kleines bisschen SQL-92 erweitert wird, sehr gut bestehen kann, beschränken wir uns zunächst auf diesen Teil SQL-1 besteht aus zwei Teilen: DDL - Data Definition Language : die DDL enthält die Befehle: CREATE : mit CREATE kann man Datenbanken, Tabellen, logische Tabellen (views) und Indizes anlegen. DROP : mit DROP erreicht man das genaue Gegenteil von CREATE: Datenbanken, Tabellen, Views und Indizes werden gelöscht. ALTER : mit ALTER kann man Tabellen und Indizes ändern. Datenbanken und Views lassen sich nach dem Erstellen nicht mehr ändern. DML - Data Manipulation Language : mit der DML wird direkt mit den Daten in der Datenbank gearbeitet. Folgende Befehle zählen zur DML: INSERT : Einfügen von Datensätzen (Zeilen) in eine Tabelle UPDATE : Ändern aller oder bestimmter Datensätze einer Tabellenspalte DELETE : Löschen bestimmter Datensätze einer Tabelle SELECT : Obwohl man mit SELECT keine Daten manipuliert sondern Datenbankabfragen erstellt, zählt SELECT zu DML. SELECT ist der mit Abstand wichtigste und leider auch komplexeste SQL- Befehl. Um mit Datenbanken arbeiten zu können, muss man die Syntax von SELECT sicher beherrschen. 3 Eine Sprache zur Beschreibung anderer Sprachen Wie jede Computersprache wird auch SQL mit Hilfe der Backus-Naur-Form beschrieben. Dabei gelten folgende, einfache Regeln: 2 : Schlüsselwörter alle reservierten Schlüsselwörter werden mit Grossbuchstaben geschrieben: SELECT, INSERT, DROP, CREATE... Trennung von Alternativen der senkrechte Strich (das Pipe-Symbol) trennt Alternativen: DISTINCT ALL Optionen wenn etwas optional ist, steht es in eckigen Klammern: SELECT [ALL] Wiederholungen alles was in geschweiften Klammern steht kann beliebig (0,1,viele) oft wiederholt werden: FROM table {, table} 2 die Backus-Naur-Form wird in den RFCs des IETF in leicht abgewandelter Form verwendet 2

4 Die drei allerwichtigsten SQL-Befehle Für den Anfang beschränken wir uns auf drei SQL1-Befehle: CREATE TABLE INSERT INTO... VALUES SELECT... FROM... WHERE 4.1 Tabellen erstellen In der BNF sieht die Syntax des CREATE-TABLE-Befehls so aus, wobei man beachten muss, dass SQL1 noch keine Primär- und Fremdschlüssel kennt: create-table ::= CREATE TABLE tabellenname ( spaltendefinition {, spaltendefinition} ) spaltendefinition ::= spaltenname datentyp [NOT NULL] datentyp ::= CHARACTER [ (laenge) ] DECIMAL [ (anzahlziffern [, anzahlnachkommastellen]) ] INTEGER DOUBLE PRECISION In dieser Syntaxdefinition wurden einige SQL-1 Datentypen weggelassen (NUMERIC, SMALLINT, FLOAT, REAL). Der Ausdruck anzahlziffern gibt die Gesamtanzahl der Ziffern einer Zahl an (also Vor- plus Nachkommastellen) DOUBLE PRECISION ist eine Fliesskommazahl. Die maximale Ziffernzahl hängt vom RDBMS ab. Bei postgresql sind dies 15 Ziffern. Lässt man bei CHARACTER die Längenangabe weg, wird ein einzelnes Zeichen definiert. CHARACTER ist also dasselbe wie CHARACTER(1) Natürlich ist diese kleine Zahl an Datentypen bei modernen Datenbanken nicht ausreichend und die aktuellen RDBMS stellen eine Vielzahl weiterer Datentypen zur Verfügung. Wichtig sind hierbei besonders die Datentypen TEXT (kein SQL-Standard!) und CHARACTER VARYING (VARCHAR). 4.2 Datensätze in eine Tabelle eintragen Die Syntax der INSERT-Anweisung: insert-anweisung ::= INSERT INTO tabellenname [ ( spaltenreferenz {, spaltenreferenz} ) ] VALUES ( eintrag {, eintrag} ) spaltenreferenz ::= [tabellenname.]spaltenname eintrag ::= wert NULL 3

Lässt man die optionale Liste mit Spalten-Referenzen weg, muss man Werte für alle Attribute und in der Reihenfolge, wie sie in der CREATE-TABLE-Anweisung aufgeführt sind, angeben. Hat man eine Liste mit Spalten-Referenzen, muss man die Werte in der Reihenfolge dieser Liste übergeben. Dies ist noch nicht die vollständige INSERT-Anweisung, es fehlt noch eine optionale SELECT-spezifikation am Schluss. Dazu muss man aber erst die Syntax der SElECT- Anweisung definieren, was im nächsten Kapitel passiert. 4.3 Datensätze auswählen Das SELECT-Kommando ist leider sehr komplex, fangen wir also langsam an: select-anweisung ::= SELECT [ALL DISTINCT] spaltenausdruck tabellenausdruck DISTINCT - DISTINCT unterdückt doppelte Zeilen im Ergebnis ALL - ALL ist die Grundeinstellung: alle selektierten Zeilen tauchen im Ergebnis auf, auch wenn sie mehrfach vorkommen spaltenausdruck - Der Spaltenausdruck bestimmt, welche Attribute = Spalten in die Ergebnistabelle aufgenommen werden. tabellenausdruck - Der Tabellenausdruck wählt die Zeilen aus den Eingangstabellen aus 4.3.1 Spaltenausdruck bei SELECT Jetzt wird es gleich deutlich komplizierter (obwohl diese Syntaxbeschreibung etwas vereinfacht wurde): spalten-ausdruck ::= rechenausdruck {, rechenausdruck} * rechenausdruck ::= [+ -] summand {+ - summand} summand ::= faktor {* / faktor} faktor ::= konstante spaltenreferenz funktion ( rechenausdruck ) funktion ::= COUNT(*) aggregatfunktion aggregatfunktion ::= AVG MAX MIN SUM COUNT ( rechenausdruck ) spaltenreferenz ::= [tabelle aliasname. ] spaltenname Vereinfacht gesagt ist der Spaltenausdruck also eine Liste von arithmetischen Ausdrücken (Berechnungen). In diesen arithmetischen Ausdrücken dürfen beliebig Konstanten, Funktionen und Spalten mit den vier Grundrechenarten (+,-,*,/) verknüpft werden. Beachten muss man noch die Doppelbedeutung des Zeichens * : Als mathematischer Operator steht es natürlich für die Multiplikation. Der * im Spalten-Ausdruck wählt alle Spalten der angegebenen Tabellen aus. COUNT(*) zählt die Ergebniszeilen. 4

4.3.2 Tabellenausdruck bei SELECT Fangen wir gleich mit der Syntaxbeschreibung an, Erklärungen folgen später: tabellenausdruck ::= fromausdruck [whereausdruck] [groupbyausdruck] [havingausdruck] fromausdruck ::= FROM tabelle [aliasname] {, tabelle [aliasname] } groupbyausdruck ::= GROUP BY spaltenreferenz {, spaltenreferenz } havingausdruck ::= HAVING suchbedingung FROM legt fest, welche Eingangstabellen verwendet werden sollen. Eingangstabellen können normale Tabellen oder logische Tabellen (Views) sein. WHERE legt Bedingungen fest, mit der die Zeilen des kartesischen Produkts der Eingangstabellen (sämtliche Kombinationen der Zeilen der Eingangstabellen. Siehe 4.4) selektiert werden. GROUP BY fasst die Zeilen des Produkts der Eingangstabellen auf Basis gleicher Spaltenwerte zusammen. HAVING wählt aus den mit GROUP BY erzeugten Gruppen aufgrund einer Bedingung aus aliasname mit tabelle aliasname wird ein anderer Name fuer eine Tabelle erzeugt. Das wird oft benutzt, wenn der Tabellenname abgekuerzt werden soll. Bei bestimmten SELECT-Abfragen sind Alias-Namen zwingend, z.b. wenn man eine Tabelle mit sich selbst verknüpfen möchte. 4.4 Das Produkt zweier oder mehrerer Tabellen Beim kartesischen Produkt von A und B wird jede Zeile von A mit jeder Zeile von B verknüpft, es kommt also jede Kombination der Zeilen der Einzeltabellen vor: 5

Tabelle A: Tabelle B: Tabelle A Tabelle B: attribut a b c d e attribut 1 2 3 A.attribut B.attribut a 1 a 2 a 3 b 1 b 2 b 3 c 1 c 2 c 3 d 1 d 2 d 3 e 1 e 2 e 3 6