Informatik Datenbanken SQL-Einführung



Ähnliche Dokumente
Informatik 12 Datenbanken SQL-Einführung

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

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

IV. Datenbankmanagement

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

SQL structured query language

Labor 3 - Datenbank mit MySQL

Datumsangaben, enthält mindestens Jahr, Monat, Tag

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

Abfragen: Grundbausteine

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

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

Beispiel 1: Filmdatenbank

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

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Berechnungen in Access Teil I

Übersicht der wichtigsten MySQL-Befehle

Kurzanleitung für Umsteiger von DataEase.

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

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

Carl-Engler-Schule Karlsruhe Datenbank 1 (5)

7. Übung - Datenbanken

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

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Sructred Query Language

Datenbanken für Online Untersuchungen

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Datenbanken Microsoft Access 2010

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Professionelle Seminare im Bereich MS-Office

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

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

Im Original veränderbare Word-Dateien

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

Relationale Datenbanken in der Praxis

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

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

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

Dossier: Rechnungen und Lieferscheine in Word

ipin CSV-Datenimport (Mac OS X)

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Arbeiten mit einem lokalen PostgreSQL-Server

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

SQL (Structured Query Language) Schemata Datentypen

desk.modul : WaWi- Export

Access Verbrecherdatenbank Teil 3

SQL und MySQL. Kristian Köhntopp

Microsoft Access 2013 Navigationsformular (Musterlösung)

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

Datenbanken Kapitel 2

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

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

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

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Unterabfragen (Subqueries)

Access Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli inkl. zusätzlichem Übungsanhang ACC2010-UA

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Excel Pivot-Tabellen 2010 effektiv

Internationales Altkatholisches Laienforum

3. Neuen Newsbeitrag erstellen Klicken Sie auf das Datensatzsymbol mit dem +, damit Sie einen neuen Newsbeitrag erstellen können.

MySQL: Einfaches Rechnen.

Informationen zu den regionalen Startseiten

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Abfragen (Queries, Subqueries)

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Datenbank und Tabelle mit SQL erstellen

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

1. Erreichen Sie, dass im Feld KdNr (Kunden-Nummer) nur 4-stellige Zahlen eingetragen

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Ein Ausflug zu ACCESS

EINFACHES HAUSHALT- KASSABUCH

Updatehinweise für die Version forma 5.5.5

Tutorial: Entlohnungsberechnung erstellen mit LibreOffice Calc 3.5

Auswahlabfragen mit ACCESS

Kurzanleitung. Toolbox. T_xls_Import

Erstellen einer Datenbank. Datenbankabfragen

1. So einfach ist der Excel-Bildschirm

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

1 Mathematische Grundlagen

ecaros2 - Accountmanager

EDV-Fortbildung Kombi-Schulung Word-Excel Modul Excel. Informationen zum Programm. Die Programmoberfläche von Excel

11 Tabellen als Inhaltselement (ohne RichTextEditor)

Datenexport aus JS - Software

Arbeiten mit UMLed und Delphi

Artikel Schnittstelle über CSV

Anleitung zum Einfügen von Daten aus OpenOffice Calc in OpenOffice Base Beispiel anhand einer Adressen Calc-Tabelle

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Fachhochschule Deggendorf Platzziffer:...

teischl.com Software Design & Services e.u. office@teischl.com

Wir basteln einen Jahreskalender mit MS Excel.

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

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Datenaufbereitung in SPSS. Daten zusammenfügen

Variablen & erweiterte Aktionen nutzen

Transkript:

Informatik Datenbanken SQL-Einführung Gierhardt Inhaltsverzeichnis 1 Vorbemerkungen 1 2 Auswahl-Abfragen mit SELECT 2 2.1 Selektion...................................... 2 2.2 Projektion..................................... 3 2.3 Sortierung..................................... 4 2.4 Funktionen.................................... 4 2.5 LIMIT....................................... 5 2.6 where_definition................................. 5 2.6.1 Vergleichsoperatoren........................... 5 2.6.2 LIKE.................................... 6 2.6.3 BETWEEN................................ 6 2.6.4 IN..................................... 6 3 Verändern der Tabellenstruktur 7 3.1 Erzeugen einer Tabelle.............................. 7 3.2 Ändern einer Tabelle............................... 7 4 Verändern der Tabelleninhalte 8 4.1 Einfügen von Datensätzen............................ 8 4.2 Löschen von Datensätzen............................. 8 4.3 Verändern von Datensätzen........................... 8 5 SQL-Funktionen 9 5.1 Funktionen für aggregierte Daten........................ 9 5.2 Funktionen für skalare Daten.......................... 9 6 Subqueries 10 1 Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung einer bestimmten Situation, so spricht man von einer relationalen Datenbank (zum relationalen Datenbankmodell folgen später mehr Informationen). Damit Datenbanken geeignet benutzt werden können, muss dafür eine betriebssystem- und plattformunabhängige Möglichkeit zur Abfrage, Erstellung und Manipulation vorhanden sein, dies insbesondere im Hinblick auf die Erfordernisse des Internets, wo Datenbankserver die vielfältigsten Anfragen zu Informationen aus Datenbanken verarbeiten müssen. Als Quasi-Standard hat sich als Abfragesprache SQL (Structured Query Language) mittlerweile durchgesetzt. Die Ursprünge gehen auf ein IBM-Forschungsprojekt zurück. 1986 wurde 1

SQL als Standard von der amerikanischen Normbehörde (ANSI) übernommen, 1987 folgte die internationale Normierung (ISO). SQL ist die Sprache, mit der die meisten relationalen Datenbanken erstellt, manipuliert und abgefragt werden. SQL lässt sich innerhalb der Programmiersprachen als Sprache der 4. Generation bezeichnen (4GL), denn sie ist im Gegensatz zu prozeduralen Sprachen der 3. Generation, die durch Datenstrukturen und Steuerstrukturen gekennzeichnet sind, nicht-prozedural und mengenorientiert. Nicht-prozedural heißt hier, dass der Fragesteller eine Frage stellt, aber keinen Algorithmus zur Lösung vorgeben muss. Es ist nicht nötig, sich aus Programmierersicht Gedanken über das Öffnen und Schließen einer Datei und das schrittweise Durchgehen geeigneter Datensätze zu machen. Der folgende Text bezieht sich in bestimmten Aspekten auf spezielle Eigenschaften der Implementierung MySQL. Bei der Arbeit mit MySQL ist zu beachten, dass Texte in Hochkommata eingegeben werden. Sicher geht man, wenn man alle Feldinhalte in Hochkommata setzt. Die Feldnamen sollten mit Accent grave eingeschlossen werden. Beispiel: SELECT `Name`, `Telephon` FROM `Mitarbeiter` WHERE `Name` = Maier ; 2 Auswahl-Abfragen mit SELECT Mit Auswahl-Abfragen sind insbesondere die Operationen Projektion und Selektion auf einer Tabelle von Interesse (Die Abfrage über mehrere Tabellen hinweg folgt später). Die vereinfachte Syntax des SELECT-Befehls lautet wie folgt: SELECT [DISTINCT ALL] select_expression,... FROM tables... [WHERE where_definition] [GROUP BY feld,...] [ORDER BY feld [ASC DESC],... [LIMIT [offset,] rows] ; Am einfachsten versteht man das an Beispielen. Im Folgenden sei die Tabelle Mitarbeiter die Grundlage der Beispiele. 1 NULL 3 Christoph Reeg 13.05.1979 NULL 2 1 1 junetz.de 05.03.1998 069-764758 3 1 1 Uli NULL NULL 4 3 1 JCP NULL 069-764758 2.1 Selektion 1. Die kürzestmögliche SELECT-Anweisung ist SELECT * FROM Mitarbeiter; Es sollen alle Mitarbeiter ausgegeben werden, d.h. es wird dann einfach die Tabelle wie oben dargestellt ge. 2

2. SELECT * FROM Mitarbeiter WHERE Name= Maier ; 3. SELECT * FROM Mitarbeiter WHERE (VorgesetztenNr=1) AND (AbtNr=1); 2 1 1 junetz.de 05.03.1998 069-764758 3 1 1 Uli NULL NULL Mehr zu den Bedingungen für WHERE folgt unten im Abschnitt where_definition. 2.2 Projektion 1. SELECT Telephon FROM Mitarbeiter; oder SELECT ALL Telephon FROM Mitarbeiter; Telephon NULL 069-764758 NULL 069-764758 06196-671797 069-97640232 2. SELECT DISTINCT Telephon FROM Mitarbeiter; Telephon NULL 069-764758 06196-671797 069-97640232 Mehrfach vorkommende Einträge werden nur einmal angezeigt. 3. SELECT AbtNr, Name, Telephon FROM Mitarbeiter; AbtNr Name Telephon 3 Christoph Reeg NULL 1 junetz.de 069-764758 1 Uli NULL 1 JCP NULL 2 Maier 06196-671797 2 Meier NULL 3

2.3 Sortierung Mit ORDER BY wird festgelegt, nach welcher Spalte bzw. welchen Spalten sortiert werden soll. Mit ASC wird aufsteigend, mit DESC absteigend sortiert. Wenn nichts angegeben wird, wird aufsteigend sortiert. 1. SELECT * FROM Mitarbeiter ORDER BY Name; oder SELECT * FROM Mitarbeiter ORDER BY Name ASC; 1 NULL 3 Christoph Reeg 13.05.1979 NULL 4 3 1 JCP NULL 069-764758 2 1 1 junetz.de 05.03.1998 069-764758 3 1 1 Uli NULL NULL 2. SELECT * FROM Mitarbeiter ORDER BY Name DESC; 3 1 1 Uli NULL NULL 2 1 1 junetz.de 05.03.1998 069-764758 4 3 1 JCP NULL 069-764758 1 NULL 3 Christoph Reeg 13.05.1979 NULL 3. SELECT * FROM Mitarbeiter ORDER BY GebDatum,Name; 4 3 1 JCP NULL 069-764758 3 1 1 Uli NULL NULL 1 NULL 3 Christoph Reeg 13.05.1979 NULL 2 1 1 junetz.de 05.03.1998 069-764758 Da die ersten vier Mitarbeiter kein Geburtsdatum haben, wird ein zweites Sortierkriterium für Name eingegeben. 2.4 Funktionen 1. SELECT count(*) FROM Mitarbeiter; count(*) 6 4

2. Mit GROUP BY können in Verbindung mit Gruppenfunktionen Gruppen gebildet werden. SELECT count(*), AbtNr FROM Mitarbeiter GROUP BY AbtNr; count(*) AbtNr 3 1 2 2 1 3 Näheres zu Funktionen folgt in einem eigenen Abschnitt. 2.5 LIMIT Mit LIMIT [offset,] rows kann angegeben werden, wie viele Zeilen maximal von der SELECT-Anweisung zurück ge werden sollen. Mit offset kann angegeben werden, ab welcher Zeile angefangen werden soll. Man denke dabei an die Ergebnisdarstellung einer Internet-Suchmaschinenabfrage. SELECT * FROM Tabelle LIMIT 5,10; die Zeilen 6 bis 15 der Tabelle. SELECT * FROM Tabelle LIMIT 5; die ersten fünf Zeilen der Tabelle. SELECT * FROM Tabelle LIMIT 0,5; ebenso die ersten fünf Zeilen. 2.6 where_definition 2.6.1 Vergleichsoperatoren Teilbedingungen können mit AND, OR und NOT zu Bedingungen zusammen gesetzt werden. An Vergleichsoperatoren sind in SQL folgende verfügbar: Operator Bedeutung = gleich <> oder!= ungleich > größer < kleiner >= größer gleich <= kleiner gleich IS gleich (für Vergleich mit NULL) SELECT Name, AbtNr FROM Mitarbeiter WHERE (AbtNr=1) OR (VorgesetztenNr IS NULL); Name AbtNr VorgesetztenNr Christoph Reeg 3 NULL junetz.de 1 1 Uli 1 1 JCP 1 3 Achtung: NULL ist problematisch bei String-Einträgen, weil Leerstrings möglich sind. 5

2.6.2 LIKE SELECT Name, Telephon FROM Mitarbeiter WHERE (Telephon LIKE %96-% ); Name Telephon Maier 06196-671797 SELECT Name, Telephon FROM Mitarbeiter WHERE (Name LIKE M_ier ); Name Telephon Maier 06196-671797 Meier 069-97640232 LIKE hat seine Entsprechung im WIE in Base. Zeichen in SQL Zeichen in Base Bedeutung % * steht für eine bel. Anzahl (auch 0) von Zeichen _? steht für genau ein bel. Zeichen 2.6.3 BETWEEN BETWEEN wählt alle Werte aus, die zwischen dem unteren und oberen Wert (einschließlich) liegen. SELECT * FROM Mitarbeiter WHERE (AbtNr BETWEEN 2 AND 3); 1 NULL 3 Christoph Reeg 13.05.1979 NULL In Base lautet die Entsprechung Zwischen...und... 2.6.4 IN Wie in Base benutzt man IN. SELECT * FROM Mitarbeiter WHERE Telephon IN ( 06196-671797, 069-97640232 ); 6

3 Verändern der Tabellenstruktur 3.1 Erzeugen einer Tabelle Mit CREATE wird eine Tabelle in einer bestehenden Datenbank erzeugt: CREATE TABLE tabellenname( feldname feldtyp [feldoptionen] [,feldname feldtyp [feldoptionen]] [,PRIMARY KEY (feldname)] ); Als Feldtypen stehen u.a. folgende zur Verfügung: Typ Verwendung Erläuterung CHAR CHAR(1) Einzelner Buchstabe CHAR(20) Text mit der Länge 20. Fehlende Buchstaben werden mit Leerzeichen aufgefüllt. Die maximale Länge ist 255. VARCHAR VARCHAR(20) Text mit der Länge 20. Fehlende Buchstaben werden nicht mit Leerzeichen aufgefüllt. Die tatsächliche Länge wird gespeichert. Die maximale Länge ist auch 255. TEXT TEXT Text mit einer maximalen Länge von 65.536 Zeichen. TINYINT TINYINT 8-Bit-Ganzzahl (integer), Bereich: 2 7... 2 7 1 INT INT 32-Bit-Ganzzahl (integer), Bereich: 2 31... 2 31 1 FLOAT FLOAT Fließkommazahl mit einfacher Genauigkeit, Bereich: 3,403 10 38... 3,403 10 38 DOUBLE DOUBLE Fließkommazahl mit doppelter Genauigkeit, Bereich: 1,798 10 308... 1,798 10 38 DATE DATE Datumsformat im Format JJJJ-MM-TT. TIME TIME Zeitformat im Format HH:MM:SS. Der Wertebereich ist erstaunlicherweise von -838:59:59 bis 838:59:59. Als Optionen sind möglich: NOT NULL DEFAULT wert PRIMARY KEY AUTO_INCREMENT 3.2 Ändern einer Tabelle Das Feld darf nicht leer bleiben. Wird beim Speichern kein Wert angegeben, so wird diese Vorgabe genommen. Primärschlüssel (kann es nur einmal geben). praktisch für Primärschlüsselfelder, da MySQL den Wert automatisch erhöht. DROP TABLE tabellenname; löscht eine Tabelle komplett. ALTER TABLE Tabellenname DROP feldname; löscht eine Spalte der Tabelle. ALTER TABLE Tabellenname ADD feldname feldtyp feldoptionen; erweitert die Tabelle um eine Spalte. 7

ALTER TABLE Tabellenname RENAME NeuerTabellenname; ändert den Tabellennamen. ALTER TABLE Tabellenname CHANGE alterfeldname neuerfeldname feldtyp; ändert den Feld- bzw. Spaltennamen. Der Typ muss mit angegeben werden. ALTER TABLE Tabellenname CHANGE feldname feldname neuerfeldtyp; ändert nur den Feldtyp. 4 Verändern der Tabelleninhalte 4.1 Einfügen von Datensätzen INSERT dient dem Einfügen von Datensätzen in eine Tabelle: INSERT INTO tabellenname [ (feldname1, feldname2, feldname3,...) ] VALUES (wert1, wert2, wert3,...); Wenn man die Feldnamen weglässt, dann müssen alle Werte in der richtigen Reihenfolge angegeben werden. Will man nur einzelne Werte eingeben, dann müssen die zugehörigen Feldnamen angegeben werden. 4.2 Löschen von Datensätzen DELETE FROM tabellenname WHERE feldname Vergleichsoperator wert; löscht einen Datensatz, der eine bestimmte Bedingung erfüllt. Beispiel : DELETE FROM Telephonliste WHERE Name = Maier ; 4.3 Verändern von Datensätzen UPDATE tabellenname SET feldname = WERT WHERE feldname Vergleichsoperator wert; aktualisert einen vorhandenen Datensatz, der eine bestimmte Bedingung erfüllt. Beispiel : UPDATE Telephonliste SET telephon = 0180-0815 WHERE Name = Maier ; 8

5 SQL-Funktionen 5.1 Funktionen für aggregierte Daten Die Aggregationsfunktionen beziehen sich auf selektierte Daten, d.h. auf eine Menge von Werten. Insbesondere in Verbindung mit GROUP ergeben sich interessante Anwendungen. AVG(feldname) average; Durchschnittswert einer Spalte berechnen. COUNT(feldname) Zählt Zeilen, deren Wert nicht NULL ist. FIRST(feldname) Erster Wert einer Spalte. LAST(feldname) Letzter Wert einer Spalte. MAX(feldname) Größter Wert einer Spalte. MIN(feldname) Kleinster Wert einer Spalte. SUM(feldname) Summe über alle Spaltenwerte. 5.2 Funktionen für skalare Daten Im Gegensatz zu den Aggregationsfunktionen beziehen sich diese Funktionen nur auf einen Wert. LCASE(str) Wandelt String in Kleinbuchstaben um. UCASE(str) Wandelt String in Großbuchstaben um. LEFT(str, n) Liefert die ersten n Buchstaben des Strings. LEN(str) Liefert die Länge des Strings. DAYOFWEEK(date) Gibt den Wochentag des Datums an (Sonntag = 1). DAYOFMONTH(date) Gibt den Tag des Monats an. DAYOFYEAR(date) Gibt den Tag im Jahr zurück. MONTH(date) Gibt den Monat des Datums zurück. YEAR(date) Gibt das Jahr des Datums zurück. NOW() Aktuelles Datum. 9

6 Subqueries Wir betrachten die folgenden beiden Tabellen: jungen ID Name Gewicht 1 Klaus 57 2 Kevin 67 3 Kevin-Alexander 57 4 Klaus-Peter 61 5 Kilian 55 6 Kelvin 68 7 Keno 72 8 Konrad 54 maedchen ID Name Gewicht 1 Jenny 53 2 Jennifer 54 3 Jessica 65 4 Jolanda 67 5 Jasmin 59 6 Josephine 60 und dazu die folgenden Fragen: 1. Welche Mädchen wiegen weniger als der Durchschnitt der Mädchen? Um das Durchschnittsgewicht zu erhalten, muss mit einer gesonderten SELECT- Anweisung gearbeitet werden. SELECT Name, Gewicht FROM maedchen WHERE Gewicht < (SELECT AVG(Gewicht) FROM maedchen); dann Jenny 53 Jennifer 54 Jasmin 59 2. Welche Mädchen sind gleich schwer wie ein Junge? (a) Lösung 1: SELECT maedchen.name, maedchen.gewicht FROM junge, maedchen WHERE junge.gewicht = maedchen.gewicht Jolanda 67 Jennifer 54 (b) Lösung 2 (mit Subquery): SELECT Name, Gewicht FROM maedchen WHERE Gewicht IN (SELECT Gewicht FROM Junge); Jennifer 54 Jolanda 67 10

3. Welche Mädchen sind nicht gleich schwer wie ein Junge? SELECT Name, Gewicht FROM maedchen WHERE Gewicht NOT IN (SELECT Gewicht FROM Junge); Jenny 53 Jessica 65 Jasmin 59 Josephine 60 4. Welche Jungen wiegen mehr als der Durchschnitt aller Mädchen? SELECT Name, Gewicht FROM junge WHERE Gewicht > (SELECT AVG(Gewicht) FROM maedchen); Kevin 67 Klaus-Peter 61 Kelvin 68 Keno 72 11