SQL (Structured Query Language) Datenbanken und Tabellen erstellen



Ähnliche Dokumente
Informatik 12 Datenbanken SQL-Einführung

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

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

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

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

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

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

Datenbanken Microsoft Access 2010

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

Datenbanken Kapitel 2

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

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Sructred Query Language

Auswahlabfragen mit ACCESS

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

Abfragen: Grundbausteine

Arbeiten mit einem lokalen PostgreSQL-Server

IV. Datenbankmanagement

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

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

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Im Original veränderbare Word-Dateien

MS Excel 2010 Kompakt

Labor 3 - Datenbank mit MySQL

SQL structured query language

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Übersicht der wichtigsten MySQL-Befehle

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

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

MS Access 2010 Kompakt

Carl-Engler-Schule Karlsruhe Datenbank 1 (5)

PHP + MySQL. Die MySQL-Datenbank. Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing.

Aufgaben zur fachwissenschaftlichen Prüfung Modul 3 Daten erfassen, ordnen, verarbeiten und austauschen: Schwerpunkt Datenbanken

SQL - Übungen Bearbeitung der Datenbank Personal (1)

Abfrage-Befehle in MySQL -diverse Funktionen -

Einführung in das Arbeiten mit MS Excel. 1. Bearbeitungs

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Datenexport aus JS - Software

SQL-Injection. Seite 1 / 16

Access [basics] Gruppierungen in Abfragen. Beispieldatenbank. Abfragen gruppieren. Artikel pro Kategorie zählen

Datenbanken für Online Untersuchungen

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

U 8 SQL. = Structured Query Language (heute auch Standard Query Language) ALLGEMEIN:

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

Modul 122 VBA Scribt.docx

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Einführung in die C++ Programmierung für Ingenieure

Java Einführung Operatoren Kapitel 2 und 3

Kompaktes Datenbank-Wissen rund um die Datenbank-Programmierung mit Transact-SQL

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Datumsangaben, enthält mindestens Jahr, Monat, Tag

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 6: Datenbankabfragen mit SQL und PHP. Stand: Übung WS 2014/2015

ACCESS das Datenbankprogramm. (Einführung) DI (FH) Levent Öztürk

Diana Lange. Generative Gestaltung Operatoren

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

Antolin-Titel jetzt automatisch in WinBIAP kennzeichnen

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

Pfötchenhoffung e.v. Tier Manager

Institut für Programmierung und Reaktive Systeme 26. April Programmieren II. 10. Übungsblatt

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

Relationale Datenbanken in der Praxis

Aufklappelemente anlegen

MySQL: Einfaches Rechnen.

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

Dokumentation. estat Version 2.0

Wie kann ich in der Backstage-Ansicht eigene Dokumentationen einbinden?

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

GITS Steckbriefe Tutorial

Datentypen. Agenda für heute, 4. März, Pascal ist eine streng typisierte Programmiersprache

Lastenheft. Inhalt. Allgemeine Dinge... 2 Übersicht... 6 Artikel... 6 Dokumente... 7 Kunde... 8

MMS - Update auf Version 4.4

Microsoft Word Serienbriefe. Microsoft Word Serienbriefe

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Microsoft Access 2010 Auswahlabfragen erstellen. Leibniz Universität IT Services Anja Aue

Unterabfragen (Subqueries)

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

Einführung in Datenbanksysteme. H. Wünsch

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

Import und Export von Übergängern

Klicken Sie auf Weiter und es erscheint folgender Dialog

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

Inventur. Bemerkung. / Inventur

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

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

Dokument Lob erstellen

Sie sollen eine Datenbank für Befragungen mittels Online-Fragebögen zu unterschiedlichen Themen erstellen:

Allgemeines zu Datenbanken

SQL (Structured Query Language) Schemata Datentypen

ACCESS SQL ACCESS SQL

Funktion Inhalt Erläuterung

105.3 SQL-Datenverwaltung

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

Erstellen einer Datenbank. Datenbankabfragen

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Transkript:

SQL (Structured Query Language) Datenbanken und Tabellen erstellen

Bücher RRZN-Handbuch "SQL, Grundlagen und Datenbank-Design" Alan Beaulieu: Einführung in SQL; O'Reilly-Verlag; ISBN-Nr. 978-3-89721-443-9 Lynn Beighly: SQL von Kopf bis Fuß; O'Reilly-Verlag; ISBN-Nr. 978-3-89721-760-7 Matthiesen & Unterstein: Relationale Datenbanken und Standard-SQL; Addision-Wesley; ISBN-Nr. 978-3-8273-2656-0 Wolfgang D. Misgeld: SQL; Hanser; ISBN-Nr. 3-446-21636-7 OpenOffice 10.06.08 Folie 2 SQL nutzen 21.05.08 Seite 2

Informationen im Web http://www.torsten-horn.de/techdocs/sql.htm http://www.sql-und-xml.de/sql-tutorial/ http://sqlzoo.net/de/ http://sql.1keydata.com/de/ http://www.w3schools.com/sql/default.asp http://reeg.junetz.de/dsp/node8.html http://dev.mysql.com/doc/ OpenOffice 10.06.08 Folie 3 SQL nutzen 21.05.08 Seite 3

Eine Datenbank... ist eine Sammlung von Daten zu einem bestimmten Thema oder einen bestimmten Zweck.... ermöglicht eine strukturierte Ablage von Informationen.... kann Arbeitsabläufe eines Unternehmens abbilden.... ist ein Container,... in dem die Daten in Tabellenform abgelegt werden und... verschiedene Sichten auf die Daten erstellt werden können. Beispiele: Adressverwaltung. Sammlung aller Informationen zu CDs oder Büchern. Ablage von Informationen für die Abwicklung von Bestellungen. Abbildung eines Warenlagers. OpenOffice 10.06.08 Folie 4 SQL nutzen 21.05.08 Seite 4

Relationale Datenbanken... sind das am weitesten verbreitete Modell. Merkmale: Die Daten werden in Tabellen abgelegt. Jede Information, die in einer Tabelle abgelegt wird, besitzt den gleichen Aufbau. Daten in verschiedenen Tabellen können eine Beziehung zueinander haben. Die Daten in den Tabellen können mit Hilfe eines Schlüsselwertes verknüpft werden. OpenOffice 10.06.08 Folie 5 SQL nutzen 21.05.08 Seite 5

Beispiele Informationen zu einer Buchbestellung sammeln: In einer Tabelle werden alle Informationen zu einem bestimmten Buch gesammelt. In einer anderen Tabelle werden alle Lagerinformationen zu einem Buch gesammelt. In einer anderen Tabelle werden alle Informationen zu dem Besteller gesammelt. In einer weiteren Tabelle werden Besteller und deren Bestellung abgelegt. Informationen zu Studenten: In einer Tabelle werden Informationen zu Studenten eines Fachbereichs gesammelt. Die gesammelten Daten beschreiben den Studenten. In einer Tabelle werden alle Fachbereiche gesammelt. In einer weiteren Tabelle werden die Studenten den Fachbereichen zugeordnet. OpenOffice 10.06.08 Folie 6 SQL nutzen 21.05.08 Seite 6

Eigenschaften einer Datenbank Adressbuch als Datenbank Eine Datenbank legt Adressen in Tabellen ab. Daten werden strukturiert abgelegt. Pro Zeile wird die Adresse einer bestimmten Person abgelegt. Die Informationen zu einer Person werden so aufgeteilt, dass die einzelnen Elemente in Spalten untereinander erfasst werden. In Abhängigkeit einer bestimmten Eigenschaft können die Daten in Tabellen sortiert werden. Die Daten können mit Hilfe von Abfragen nach bestimmten Kriterien gefiltert und neu zusammengestellt werden. Adressbuch aus Papier Ein Adressbuch enthält sehr viele Adressen. In einem Adressbuch werden Name, Straße, Wohnort und vielleicht die Telefonnummer jeweils einer Person erfasst und abgelegt. Ein Adressbuch wird zum Beispiel nach dem Namen der Personen sortiert. Eine andere Sortierung ist anschließend nicht möglich. Eine Filterung ist nur durch ein Neuschreiben der Daten möglich. OpenOffice 10.06.08 Folie 7 SQL nutzen 21.05.08 Seite 7

Ablage von Informationen... am Beispiel eines Karteikastens entspricht in einer Datenbank In einem Karteikasten werden In einer Tabelle werden strukturiert Daten Informationen von Studenten in einem zu Studenten in einem Fachgebiet abgelegt. Fachgebiet gesammelt. Auf Karteikarten werden bestimmte Informationen zu einem Studenten gesammelt. Die Daten identifizieren den Studenten genau. Jede Karteikarte hat den gleichen Aufbau. Die Daten stehen immer an exakt der gleichen Stelle. In einer Zeile einer Tabelle werden alle Daten zu einem bestimmten Studenten abgelegt. Jede Zeile wird als Datensatz bezeichnet. Der Datensatz definiert einen Studenten exakt. Die Informationen werden in Spalten abgelegt. In jeder Spalte steht immer exakt eine Information, deren Art überall gleich ist. Zum Beispiel in der Spalte Wohnort steht immer der Wohnort eines Studenten und nicht das Geburtsdatum. In jedem Feld auf der Karteikarte sollte immer die gleiche Information stehen. Es findet aber keine Gültigkeitsprüfung statt. Eine Formatierung der Daten ist nicht vorgegeben. Innerhalb einer Zelle stehen Informationen in Abhängigkeit der zu beschreibenden Person abgelegt. Der Datentyp ist abhängig von der Spalte. Die Gültigkeit der Daten kann überprüft werden. OpenOffice 10.06.08 Folie 8 SQL nutzen 21.05.08 Seite 8

SQL (Structured Query Language) Strukturierte Abfragesprache für relationale Datenbanken. Datendefinition, -manipulation, -abfrage.... definiert Kriterien, um nach Daten zu suchen.... kann eine Menge von Datensätze automatisch aktualisieren oder löschen.... besteht aus sehr wenigen Kommandos, sehr vielen Schlüsselwörter und einfachen Funktionen. In SQL sind keine Schleifen, bedingte Anweisungen oder die Nutzung von Variablen implementiert. Die aktuelle Norm ist momentan SQL:2003. Jede SQL-Datenbank setzt diese Norm unterschiedlich stark um. Teilweise werden eigene Befehle hinzugefügt. OpenOffice 10.06.08 Folie 9 SQL nutzen 21.05.08 Seite 9

... fasst folgende Sprachen zusammen DDL (Data Definition Language) Erstellen von Datenbanken, Tabellen und Indizes. DQL (Data Query Language) Abfragen von Daten. DML (Data Manipulation Language) Anlegen, ändern und löschen von Datensätzen. DCL (Data Controlling Language) Anlegen von Benutzern und Vergabe von Zugriffsrechten. OpenOffice 10.06.08 Folie 10 SQL nutzen 21.05.08 Seite 10

Welche SQL-Datenbank sollte ich nutzen? Die Auswahl sollte nicht vom Bekanntheitsgrad abhängen. Nutzen Sie lieber folgende Kriterien: Welcher Funktionsumfang wird zur Lösung der Aufgabe benötigt? Bedienbarkeit. Wird die Datenbank nur in einem lokalen Netz oder im Web genutzt? Liefert die Datenbank Schnittstellen zu der Programmiersprache, mit der ich ein Frontend etc. erstelle? Kann die Datenbank die benötigte Datenmenge ohne Problem verarbeiten? Welche Wünsche hat der Auftraggeber? Ist eine Datenbank vorhanden? OpenOffice 10.06.08 Folie 11 SQL nutzen 21.05.08 Seite 11

Möglichkeiten MySQL: http://www.mysql.de/... wird für dynamische Webseiten im Internet eingesetzt.... wird häufig mit der Programmiersprache PHP eingesetzt.... ist am weitesten verbreitet. PostgreSQL: http://www.postgresql.org, http://www.postgres.de/software.whtml#los... unterstützt sehr stark Transaktionen.... hat die längste Entwicklungsgeschichte. Firebird: http://www.firebirdsql.org/... ist interessant, wenn Borland-Werkzeuge genutzt werden.... bietet viele Funktionen für Datenbankentwickler.... und so weiter. OpenOffice 10.06.08 Folie 12 SQL nutzen 21.05.08 Seite 12

Datenbank erstellen CREATE DATABASE datenbankname; Mit dieser SQL-Anweisung wird eine neue Datenbank angelegt. Der Name der Datenbank ist frei wählbar, sollte aber den Inhalt wiederspiegeln. In MySQL wird für jede Datenbank ein Verzeichnis im Ordner data angelegt. OpenOffice 10.06.08 Folie 13 SQL nutzen 21.05.08 Seite 13 CREATE DATABASE mylager;

Anweisungen... können in einer Zeile oder in mehreren Zeilen eingegeben werden.... werden mit einem Semikolon abgeschlossen. werden immer von links nach rechts gelesen. beginnen immer mit einem SQL-Befehl. Dem SQL-Befehl folgen Objekte, auf die der Befehl ausgeführt wird und Daten, die für die Ausführung benötigt werden. Beispiel CREATE DATABASE ist ein SQL-Befehl datenbankname ist das Objekt, auf dem der Befehl ausgeführt wird. Hier wird eine neue Datenbank mit diesen Namen erzeugt. OpenOffice 10.06.08 Folie 14 SQL nutzen 21.05.08 Seite 14

Benutzerdefinierte Namen... können aus einer beliebigen Kombination von Buchstaben und Ziffern bestehen. Es dürfen alle alphanumerischen Zeichen genutzt werden.... können zusätzlich den Unterstrich oder das Dollarzeichen enthalten.... dürfen mit einem beliebigen alphanumerischen Zeichen, dem Unterstrich oder Dollarzeichen beginnen.... dürfen nicht nur aus Zahlen bestehen.... bestehen aus maximal 64 Zeichen.... dürfen keine Leerzeichen enthalten... sollten keine deutschen Umlaute enthalten. OpenOffice 10.06.08 Folie 15 SQL nutzen 21.05.08 Seite 15

Groß- und Kleinschreibung SQL-Befehle beachten nicht die Groß- und Kleinschreibung. Die Befehle werden häufig in Großbuchstaben geschrieben, um die Lesbarkeit der Anweisung zu erhöhen. Bei Datenbanknamen und Tabellennamen wird... unter Windows die Groß- und Kleinschreibung nicht beachtet.... unter UNIX / Linux die Groß- und Kleinschreibung beachtet. OpenOffice 10.06.08 Folie 16 SQL nutzen 21.05.08 Seite 16

Existiert eine Datenbank mit dem Namen? CREATE DATABASE IF NOT EXITS datenbankname; Falls die Datenbank nicht existiert, wird eine Datenbank mit diesen Namen angelegt. OpenOffice 10.06.08 Folie 17 SQL nutzen 21.05.08 Seite 17 CREATE DATABASE if not exist firma;

MYSQL-Datenbanken auflisten SHOW DATABASES;... zeigt eine Liste der vorhandenen Datenbanken an. SHOW DATABASES; OpenOffice 10.06.08 Folie 18 SQL nutzen 21.05.08 Seite 18

Datenbank auswählen und löschen USE datenbankname; DROP DATABASE datenbankname; Mit Hilfe von USE wird die angegebene Datenbank für die Bearbeitung in MySQL ausgewählt. Es kann immer nur eine Datenbank ausgewählt werden. Alle weiteren Befehle beziehen sich auf diese Datenbank. Andere SQL-Server nutzen den Befehl CONNECT. Mit Hilfe von DROP wird die Datenbank gelöscht. Es wird keine Warnmeldung ausgegeben. Die Daten in der Datenbank sind verloren. Mit Hilfe der Anweisung DROP DATABASE IF EXISTS wird die Datenbank gelöscht, falls vorhanden. OpenOffice 10.06.08 Folie 19 SQL nutzen 21.05.08 Seite 19 DROP firma; USE verein; SHOW DATABASES;

Tabellen Jede Tabelle sammelt nur Informationen zu einem bestimmten Thema. Beispiele: Bestellungen werden in einer Tabelle gesammelt. Kundeninformationen werden in einer Tabelle gesammelt. Waren werden in einer Tabelle gesammelt. Tabellen können mit anderen Tabellen über Schlüsselwerte verknüpft werden. Beispiel: Es sind die Tabellen ware und kunde vorhanden. Jede Ware hat eine eindeutige Artikelnummer sowie jeder Kunde eine eindeutige Kundennummer. In der Tabelle Lager wird nur die Artikelnummer einer Ware aufgelistet. Die Artikelnummer ist ein Verweis auf einen bestimmten Datensatz in der Tabelle ware, der die Details zu dem ausgewählten Artikel enthält. In der Tabelle Bestellung wird die Ware sowohl als auch der Kunde über den dazugehörigen Schlüsselwert eingebunden. Der Schlüsselwert Artikelnummer sowie Kundennummer identifizieren ein Objekt eindeutig und damit auch den dazugehörigen Datensatz. OpenOffice 10.06.08 Folie 20 SQL nutzen 21.05.08 Seite 20

Aufbau einer Tabelle (Relation) Feldnamen (Attribut) IAmtNr Vorname Nachname Straße PLZ Wohnort 123 Heinz Peters Friesenstr. 4 xxxxx Hannover 456 Sonja Müller Eichenstr. 5 xxxxx Hannover 753 Marlis Schulze Lerchenstr. 2 xxxxx Mellendorf 789 Scholz xxxxx Hildesheim Datensatz (Tupel) Datenfeld (Attributwert) OpenOffice 10.06.08 Folie 21 SQL nutzen 21.05.08 Seite 21

Kennzeichen einer Tabelle Eine Tabelle setzt sich immer aus Zeilen (Datensätze, Tupel) und Spalten (Datenfeldern, Attribute) zusammen. Eine Tabelle kann leer sein oder beliebig viele Datensätze enthalten. Beispiel: MySQL: Die Größe der Tabelle wird durch die maximale Größe einer Datei in Abhängigkeit des Betriebssystems bestimmt. ACCESS: Ca. 65.000 Datensätze pro Tabelle. Jede Tabelle hat einen eindeutigen Namen. OpenOffice 10.06.08 Folie 22 SQL nutzen 21.05.08 Seite 22

Datensatz, Tupel... beschreibt die Eigenschaft eines Objekts. Jedes Objekt hat die gleichen Eigenschaften (Datenfelder).... besteht immer aus der gleichen Anzahl von Attributen.... unterscheidet sich von allen anderen Datensätzen in mindestens einem Attributwert. Andernfalls ist das Objekt häufiger in der Tabelle abgelegt. Jedes Objekt ist einzigartig.... hat einen Primärschlüsssel zur Identifizierung des Objekts. Der Schlüsselwert ist eindeutig. Der Wert ändert sich nie. OpenOffice 10.06.08 Folie 23 SQL nutzen 21.05.08 Seite 23

Datenfeld, Attribute... besitzt einen Datentyp, der die Daten beschreibt. In einem Feld, welches nur Ziffern aufnehmen kann, können keine Buchstaben genutzt werden. Textfelder können jedes beliebige Zeichen aufnehmen. Mit Ziffern-Feldern kann nur gerechnet werden. Der Wert eines Datenfeldes beschreibt immer eine bestimmte Eigenschaft.... können nicht weiter zerlegt werden. Zum Beispiel das Element "30159 Hannover" ist nicht atomar. Es kann in die Bestandteile "30159" und "Hannover" zerlegt werden. Der Ort sowie die Postleitzahl sind nicht mehr aufteilbar. OpenOffice 10.06.08 Folie 24 SQL nutzen 21.05.08 Seite 24

Tabelle erstellen Mit Hilfe des SQL-Befehls wird die Tabelle mitarbeiter erzeugt. CREATE TABLE mitarbeiter ( mitarbeiter_nachname VARCHAR(50), mitarbeiter_vorname VARCHAR(20), mitarbeiter_geburtsdatum DATE Hier werden die Spalten definiert. ); CREATE TABLE artikel( artikelname VARCHAR(50), artikelnummer VARCHAR(11), kategorie VARCHAR(20)); CREATE TABLE lager( artikelnummer VARCHAR(11), verpackung VARCHAR(10) preis DECIMAL, menge INTEGER); OpenOffice 10.06.08 Folie 25 SQL nutzen 21.05.08 Seite 25

Spaltenliste Hier beginnt die Spaltenliste Die verschiedenen Spaltendefinitionen werden durch ein Kommata getrennt. CREATE TABLE mitarbeiter ( ); mitarbeiter_nachname VARCHAR(50), mitarbeiter_vorname VARCHAR(20), mitarbeiter_geburtsdatum DATE... und hier endet sie. OpenOffice 10.06.08 Folie 26 SQL nutzen 21.05.08 Seite 26

Spalten definieren Für jede Spalte wird ein Datentyp angegeben. CREATE TABLE mitarbeiter ( ); mitarbeiter_nachname VARCHAR(50), mitarbeiter_vorname VARCHAR(20), mitarbeiter_geburtsdatum DATE Jede Spalte hat einen eindeutigen Namen. OpenOffice 10.06.08 Folie 27 SQL nutzen 21.05.08 Seite 27

Datentypen... sind die Baupläne für die Werte einer Spalte in einer Tabelle.... geben über das Format eines Wertes Auskunft.... legen Regeln fest, wie ein Wert interpretiert und verwendet werden kann.... legen einen bestimmten Wertebereich fest.... werden in... numerische Datentypen,... Datums- und Uhrzeit-Datentypen und... Text-Datentypen unterteilt. Die Auswahl des passenden Datentyps reduziert die Tabellengröße und beschleunigt Operationen. Die Bezeichnungen der Datentypen sind abhängig von der gewählten SQL-Implementierung. OpenOffice 10.06.08 Folie 28 SQL nutzen 21.05.08 Seite 28

Numerische Datentypen Datentyp Beschreibung Bereich SMALLINT Ganzzahl -32768 bis 32767 (0 bis 65535) INT Ganzzahl -2147283648 bis 2147283647 (0 bis 4294967295) FLOAT Fließkommazahlen einfache Genauigkeit DOUBLE Fließkommazahlen doppelte Genauigkeit DECIMAL(Länge, Nachkomma) Festkommazahlen Fließkommazahlen können Rundungsfehler erzeugen. Intern wird die Zahl 5.2 nur nährungsweise dargestellt. Für Währungsangaben wird der DECIMAL genutzt. Beispiel: DECIMAL(2,2) speichert Zahlen zwischen -99,99 und 99,99. DECIMAL(5,3) speichert Zahlen zwischen -99,999 und 99,999. DECIMAL kann zum Beispiel in MySQL insgesamt 65 Stellen und 30 Nachkommastellen besitzen. OpenOffice 10.06.08 Folie 29 SQL nutzen 21.05.08 Seite 29

Boolsche Werte... können vom Datentyp BOOLEAN (SQL99-Standard) sein.... haben die Werte TRUE(wahr, 1) oder FALSE(falsch, 0).... wird nicht von allen Datenbankimplementierung unterstützt. OpenOffice 10.06.08 Folie 30 SQL nutzen 21.05.08 Seite 30

Datums- und Uhrzeit-Datentypen Datentyp Beschreibung Bereich DATE Datumswert 1.1.1000 bis 31.12.9999 TIME Uhrzeit -838:59:59 bis 8838:59:59 DATETIME Datum und Uhrzeit 01.01.1000 00:00:00 bis 9999-12.31 23:59:59 Die Formatierung der Datumsangaben ist abhängig von der gewählten SQL-Implementierung. Datumsangaben werden in der Form jjjj-mm-tt. Zweistellige Jahreszahlen zwischen 00 und 69 werden von MySQL als 2000 bis 2069 interpretiert. Zweistellige Jahreszahlen zwischen 70 und 99 werden von MySQL als 1970 bis 1999 interpretiert. Zeitangaben erfolgen in der Form hh:mm:ss. OpenOffice 10.06.08 Folie 31 SQL nutzen 21.05.08 Seite 31

Text-Datentypen Datentyp CHAR(Laenge) VARCHAR(maxLaenge) BLOB Beschreibung Text mit bis zu 255 Zeichen. Text mit einer festen Länge. Text mit bis zu 255 Zeichen. Text mit einer variablen Länge. Große Textdateien, Grafiken etc. OpenOffice 10.06.08 Folie 32 SQL nutzen 21.05.08 Seite 32

Tabellenstruktur ansehen DESC tabellenname;... beschreibt die Struktur einer Tabelle.... zeigt nicht die Daten in einer Tabelle an. DESC lager; OpenOffice 10.06.08 Folie 33 SQL nutzen 21.05.08 Seite 33

Tabelle in einer Datenbank ShOW TABLES;... zeigt alle Tabellen und Sichten in der aktiven Datenbank an. OpenOffice 10.06.08 Folie 34 SQL nutzen 21.05.08 Seite 34 SHOW TABLES;

Tabelle löschen DROP TABLE tabellenname;... löscht eine Tabelle aus einer Datenbank. Daten in der Tabelle sowie die Tabellenstruktur werden gelöscht. OpenOffice 10.06.08 Folie 35 SQL nutzen 21.05.08 Seite 35 DROP artikel;

Daten eingeben In welche Tabelle sollen die Daten eingefügt werden? Liste von Spaltennamen, in der die Daten abgelegt werden. Die Listenelemente werden durch Kommata getrennt. INSERT INTO tabellenname (Spaltenname, Spaltenname,...) Werte <-> Spalten. VALUES (Wert1, Wert2,...); OpenOffice 10.06.08 Folie 36 SQL nutzen 21.05.08 Seite 36 Mit welchen Werten werden die Spalten belegt? INSERT INTO lager(artikelnummer, verpackung, preis, menge) VALUES();

Spalten angeben INSERT INTO tabellenname (Spaltenname, Spaltenname,...) Die Anzahl der angegebenen Spalten entspricht der Anzahl der an zugebenden Werte für die Spalten. Die Klammern kann leer gelassen werden. Es muss dann für jede, in der Tabelle vorhandenen Spalte, ein Wert angegeben werden. OpenOffice 10.06.08 Folie 37 SQL nutzen 21.05.08 Seite 37

Werte... VALUES (Wert1, Wert2,...); Die Werte müssen in der gleichen Reihenfolge wie die Spaltennamen stehen. Der erste Wert wird in der ersten angegebenen Spalte gespeichert. Die Reihenfolge der Spaltennamen ist egal. Der Wert muss dem Datentyp der Spalte entsprechen! Text und Datums- sowie Zeitangaben werden durch die Apostrophs begrenzt. Beispiel: 'RRZN', '1973-02-01'. Falls Texte ein Apostroph enthalten, muss es mit einem Backslash maskiert werden. Beispiel:'Otto\'s'. OpenOffice 10.06.08 Folie 38 SQL nutzen 21.05.08 Seite 38 INSERT INTO lager(artikelnummer,, menge, verpackung, preis) VALUES();

Beispiele CREATE TABLE mitarbeiter( nachname VARCHAR(50), vorname VARCHAR(20), geburtsdatum DATE ); INSERT INTO mitarbeiter(nachname, vorname, geburtsdatum) VALUES ('Müller', 'Sven', '1969-02-03'); INSERT INTO mitarbeiter(nachname, geburtsdatum) VALUES ('Meier', '1969-12-04); INSERT INTO mitarbeiter(vorname, nachname, geburtsdatum) VALUES ('Heinz', 'Frosch', '1969-03-03'); INSERT INTO mitarbeiter() VALUES ('Schmidt', 'Ute', '1969-08-03'); OpenOffice 10.06.08 Folie 39 SQL nutzen 21.05.08 Seite 39

Mehrere Datensätze eingeben CREATE TABLE mitarbeiter( nachname VARCHAR(50), vorname VARCHAR(20), geburtsdatum DATE ); INSERT INTO mitarbeiter(nachname, vorname, geburtsdatum) VALUES ('Müller', 'Sven', '1969-02-03'), ('Meier', 'Ute', '1968-03-03'), ('Scholz', 'Heinz', '1967-10-03'); INSERT INTO lager() VALUES(); Die verschiedenen Datensätze werden durch Kommata getrennt. OpenOffice 10.06.08 Folie 40 SQL nutzen 21.05.08 Seite 40

Werte in der Tabelle ansehen SELECT * FROM tabellenname; Durch das Sternchen werden alle Datensätze aus einer Tabelle angezeigt. SELECT (Wähle aus, Selektierte) alle FROM (Wo?, von) tabelle. OpenOffice 10.06.08 Folie 41 SQL nutzen 21.05.08 Seite 41 SELECT * FROM kunde;

NULL und leere Zeichenfolge NULL... ist ein undefinierter Wert. Das Attribut kann jeden beliebigen Wert besitzen. Der Wert muss bloß dem angegebenen Datentyp entsprechen.... ist eine leere Kiste. Leere Zeichenfolge... wird durch zwei Apostrophs hintereinander erzeugt.... ist eine Zeichenfolge der Länge Null. OpenOffice 10.06.08 Folie 42 SQL nutzen 21.05.08 Seite 42

Eingabe erforderlich Für diese Spalte muss ein Wert eingegeben werden. Der Wert der Spalte darf nicht undefiniert sein. CREATE TABLE mitarbeiter ( mitarbeiter_nachname VARCHAR(50) NOT NULL, mitarbeiter_vorname VARCHAR(20), mitarbeiter_geburtsdatum DATE ); OpenOffice 10.06.08 Folie 43 SQL nutzen 21.05.08 Seite 43 CREATE TABLE artikel( artikelname VARCHAR(50) ; artikelnummer VARCHAR(11) NOT NULL, kategorie VARCHAR(20) NOT NULL);

Standardwert vorgeben Hier wird ein Standardwert von 1 definiert. Falls der Nutzer kein Wert eingibt, wird der Standardwert gesetzt. Der Standardwert muss dem Datentyp des Feldes entsprechen. CREATE TABLE bestellung ( artikel VARCHAR(50) NOT NULL, ); menge INTEGER NOT NULL DEFAULT 1, CREATE TABLES kunde( kundename VARCHAR(30) NOT IS NULL, anrede VARCHAR(5) DEFAULT 'FRAU', strasse VARCHAR(30), plz VARCHAR(5) NOT NULL DEFAULT '37154', ort VARCHAR(50), angelegtam DATE); INSERT INTO lager() VALUES (); OpenOffice 10.06.08 Folie 44 SQL nutzen 21.05.08 Seite 44

Datenabfragen... beginnen immer mit SELECT.... liefern eine bestimmte Anzahl von Datensätzen aus einer Datenmenge zurück.... wählen Daten nach bestimmten Kriterien aus.... haben als Grundlage immer eine Tabelle.... liefern keine Datensätze zurück, wenn keine passende Datensätze in der genutzten Tabelle vorhanden sind. OpenOffice 10.06.08 Folie 45 SQL nutzen 21.05.08 Seite 45

Syntax SELECT [DISTINCT] datenfelder FROM tabelle [WHERE bedingung] [GROUP BY datenfelder [HAVING bedingung]] [ORDER BY datenfelder] [LIMIT [start, ] anzahl] Die einzelnen Befehle werden im weiteren Verlauf erläutert. Die eckige Klammern umschließen mögliche Optionen. OpenOffice 10.06.08 Folie 46 SQL nutzen 21.05.08 Seite 46

Alle Daten einer Tabelle SELECT * FROM tabellenname; Durch das Sternchen werden alle Datensätze aus einer Tabelle angezeigt. SELECT (Wähle aus, Selektierte) alle FROM (Wo?, von) tabelle. OpenOffice 10.06.08 Folie 47 SQL nutzen 21.05.08 Seite 47 SELECT * FROM lager;

Bestimmte Spalten auswählen SELECT datenfeld1, datenfeld2,... FROM tabellenname; Das Sternchen kann durch Spaltennamen in der Tabelle ersetzt werden. Es werden nur die Daten in den angegebenen Spalten angezeigt. Die Spaltennamen... werden durch ein Kommata getrennt.... müssen in der angegebenen Tabelle vorkommen. Andernfalls wird ein Fehler angezeigt. Die Reihenfolge der Spaltennamen spielt keine Rolle. OpenOffice 10.06.08 Folie 48 SQL nutzen 21.05.08 Seite 48 SELECT artikelname, kategorie FROM artikel;

Daten sortieren SELECT * FROM tabellenname ORDER BY datenfeld; Hier werden die Daten sortiert.... ORDER BY datenfeld ASC. ASC entspricht einer aufsteigenden Sortierung (A bis Z und 0 bis 9).... ist die Standardsortierung.... ORDER BY datenfeld DESC. DESC entspricht einer absteigenden Sortierung (Z bis A und 9 bis 0). Es kann mit Hilfe von ORDER BY feld1, feld2 mehrere Felder sortiert werden. Die Daten werden zuerst nach feld1 sortiert und anschließend nach feld2. OpenOffice 10.06.08 Folie 49 SQL nutzen 21.05.08 Seite 49 SELECT artikelname, kategorie FROM artikel ORDER BY kategorie.;

Kriterien für die Auswahl SELECT * FROM tabellenname WHERE bedingung; Es werden alle Datensätze angezeigt, die der Bedingung entsprechen. Die Bedingung oder das Kriterium für die Auswahl beginnt mit WHERE. Eine Bedingung kann sich folgendermaßen aufbauen: feld Vergleichsoperator Wert Mehrere Bedingungen können miteinander verknüpft werden. OpenOffice 10.06.08 Folie 50 SQL nutzen 21.05.08 Seite 50

Bedingungen... sind Ausdrücke, die einen boolschen Wert zurückliefern. Ein boolscher Wert ist true(wahr) oder false(falsch, 0)... vergleichen mit Hilfe von bestimmten Operatoren zwei Werte.... sind zum Beispiel: Wenn die Bestellmenge eine gewisse Höchstmenge überschreitet... Wenn der Kontostand dem Dispo entspricht... Wenn die Strecke A doppelt so lang ist wie Strecke B... Wenn die Warenmenge eine Mindestmenge unterschreitet... OpenOffice 10.06.08 Folie 51 SQL nutzen 21.05.08 Seite 51

Vergleichsoperatoren Operator Rechenart = ist gleich < ist kleiner als <= ist kleiner gleich als > ist größer als >= ist größer gleich als <> ist ungleich Beispiel (7 = 3 ) => False (7 < 3 ) => False (7 <= 3 ) => False (7 > 3 ) => True (7 >= 3 ) => True (7<> 3 ) =>True SELECT artikel, preis, menge FROM lager WHERE artikel = 'Banane'; SELECT artikel, preis, menge FROM lager WHERE preis >= 2.53; SELECT artikel, preis, menge FROM lager WHERE menge < 10; OpenOffice 10.06.08 Folie 52 SQL nutzen 21.05.08 Seite 52 SELECT artikelnummer, verpackung FROM lager WHERE menge>= 5; SELECT artikelname FROM artikel WHERE kategorie = 'Obst';

Logische Operatoren... oder relationale Operatoren.... verknüpfen zwei oder mehr Bedingungen miteinander. Folgende Möglichkeiten sind vorhanden: AND (Und, Konjunktion) ist nur wahr, wenn alle Bedingungen wahr sind. OR (Oder, Disjunktion) ist wahr, sobald eine der Bedingungen wahr ist. NOT (Negation) invertiert den boolschen Wert der Bedingung. OpenOffice 10.06.08 Folie 53 SQL nutzen 21.05.08 Seite 53

Logische Operatoren nutzen SELECT artikel, preis, menge FROM lager WHERE artikel = 'Banane' AND preis >= 1.23; SELECT artikel, preis, menge FROM lager WHERE (preis = 1.99) OR (preis = 2.89); SELECT artikel, preis, menge FROM lager WHERE (menge > 5) AND (menge < 10); Bedingung a b Not a a AND b a OR b false false true false false false true true false true true false false false true true true false true true OpenOffice 10.06.08 Folie 54 SQL nutzen 21.05.08 Seite 54 SELECT artikelnummer FROM lager WHERE Not ( menge =4)); WHERE menge <> 4); SELECT artikelnummer FROM lager WHERE (preis > 2) AND (menge = 5) WHERE (preis > 2) OR (menge = 5)

Wertebereiche nutzen SELECT * FROM tabellenname WHERE datenfeld BETWEEN untergrenze AND obergrenze; SELECT * FROM tabellenname WHERE NOT datenfeld BETWEEN untergr AND obergr; SELECT artikelnummer FROM lager WHERE menge BETWEEN 5 AND 10; OpenOffice 10.06.08 Folie 55 SQL nutzen 21.05.08 Seite 55

Listen für die Auswahl nutzen SELECT * FROM tabellenname WHERE datenfeld IN (element1, element2,...); SELECT * FROM tabellenname WHERE datenfeld NOT IN (element1, element2,...); SELECT artikelnummer FROM lager WHERE menge IN('1 kg', '5 kg', '10 kg'); OpenOffice 10.06.08 Folie 56 SQL nutzen 21.05.08 Seite 56

Undefinierte Werte SELECT * FROM tabellenname WHERE datenfeld IS NULL; SELECT * FROM tabellenname WHERE NOT(datenfeld IS NULL); SELECT kundename FROM kunde WHERE anrede IS NULL; OpenOffice 10.06.08 Folie 57 SQL nutzen 21.05.08 Seite 57

Leere Zeichenfolge SELECT * FROM tabellenname WHERE datenfeld = ''; SELECT * FROM tabellenname WHERE NOT(datenfeld = ''); SELECT kundename FROM kunde WHERE anrede = ''; OpenOffice 10.06.08 Folie 58 SQL nutzen 21.05.08 Seite 58

LIKE... entspricht dem Gleichheitszeichen.... kann nur für Textwerte genutzt werden.... wird für Mustervergleiche genutzt werden. Im Suchmuster können folgende Platzhalter an beliebiger Position genutzt werden: Das Prozentzeichen steht für kein, ein oder mehrere Zeichen. Der Unterstrich steht für exakt ein beliebiges Zeichen. OpenOffice 10.06.08 Folie 59 SQL nutzen 21.05.08 Seite 59

Beispiele SELECT nachname, eintritt FROM mitarbeiter WHERE nachname LIKE 'M%'; SELECT nachname, eintritt FROM mitarbeiter WHERE nachname LIKE 'Me_er'; SELECT artikel, preis, menge FROM lieferbar WHERE artikel LIKE 'Banane_'; SELECT artikelnr, artikel FROM lieferbar WHERE artikelnr LIKE '456-*-78-_'; SELECT standort, plz, groesse menge FROM lager WHERE plz LIKE '38 '; OpenOffice 10.06.08 Folie 60 SQL nutzen 21.05.08 Seite 60 SELECT * FROM artikel WHERE artikelnummer LIKE '400-_0-*' ; SELECT * FROM kunde WHERE kundename LIKE 'M_ier' ; WHERE plz ='37*';

Datensätze löschen DELETE FROM tabellenname WHERE Bedinung; In Abhängigkeit einer Bedingung werden Datensätze aus einer Tabelle gelöscht. Falls keine Bedingung angegeben wird, werden alle Datensätze einer Tabelle gelöscht. Beispiele: DELETE FROM kunde WHERE plz LIKE '38 '; DELETE FROM buch WHERE autor = 'Kehlmann'; DELETE FROM lager WHERE menge BETWEEN 1 AND 5; Es werden Datensätze gelöscht und nicht einzelne Werte aus Datenfeldern! OpenOffice 10.06.08 Folie 61 SQL nutzen 21.05.08 Seite 61 DELETE FROM lager WHERE artikelnummer = '300-1*';

Ausdrücke... werden in der Form [ausdruck Operator ausdruck] gebildet.... bestehen aus Operanden, die einen Wert symbolisieren und Operatoren, die die Berechnungsart angegeben.... geben immer einen Wert zurück. Eine Berechnung von numerischen Wert gibt einen numerischen Wert zurück. Eine Bedingung zur Abfrage von bestimmten Werten gibt einen boolschen Wert zurück.... können in SELECT- und WHERE-Anweisungen genutzt werden. OpenOffice 10.06.08 Folie 62 SQL nutzen 21.05.08 Seite 62

Operanden und Operatoren Als Operand kann... die Bezeichnungen einer Spalte (Feldnamen, Attribut) einer Tabelle oder... ein konstanter Wert genutzt werden. Operatoren... verknüpfen Werten.... vergleichen Werte.... berechnen Werte. Beispiele: artikel.preis * artikel.menge preis + mehrwertsteuer lager.menge > 0 BETWEEN '2008.01.01' AND '2008.06.31' (lagermenge > 0) AND (kategorie = 'CDPlayer') OpenOffice 10.06.08 Folie 63 SQL nutzen 21.05.08 Seite 63

Arithmetrische Operationen Operator Beschreibung Beispiel + Addition zweier Werte 3 + 4 = 7 - Subtraktion zweier Werte 4 3 = 1 * Multiplikation zweier Werte 3 * 4 = 12 / Division zweier Werte 4.8 / 2.3 = 2,086 % Division mit Rest von Ganzzahlen 4 % 3 = 1 OpenOffice 10.06.08 Folie 64 SQL nutzen 21.05.08 Seite 64

Mathematische Berechnung SELECT preis, menge, (preis * menge) FROM lager; In der SELECT-Anweisung kann statt dem Namen eines Datenfeldes auch ein Ausdruck angegeben werden. Wegen der besseren Lesbarkeit wird der Ausdruck geklammert. Beachten Sie die Reihenfolge der Operatoren! OpenOffice 10.06.08 Folie 65 SQL nutzen 21.05.08 Seite 65

Rangfolge der Operatoren Vorzeichen + - Mathematische Op. Vergleichsop. Logische Op. Zuweisungsop. * / % + - = > < >= <= <> NOT AND BETWEEN IN LIKE OR = OpenOffice 10.06.08 Folie 66 SQL nutzen 21.05.08 Seite 66

Alias-Namen vergeben SELECT preis, menge, (preis * menge) AS gesamt FROM lager; Mit Hilfe des Schlüsselwortes AS wird ein Alias-Name für eine Spalte vergeben. Eine Spalte, die den den Wert eines Ausdrucks enthält, bekommt standardmäßig als Namen den Ausdruck. Durch den Alias-Namen wird der temporären Spalte ein selbsterklärender Namen zugewiesen. OpenOffice 10.06.08 Folie 67 SQL nutzen 21.05.08 Seite 67

Nutzung in einer Bedingung SELECT preis, menge FROM lager WHERE(preis * menge) > 10; Die Bedingung selber ist ein Ausdruck. Der zu überprüfende Wert wird durch einen mathematischen Ausdruck berechnet. OpenOffice 10.06.08 Folie 68 SQL nutzen 21.05.08 Seite 68

Attributwerte ändern UPDATE tabelle SET spalte = wert, spalte = wert,... WHERE bedingung; UPDATE (ändere Datensätze) tabelle. SET (setze) die Spalten vor dem Gleichheitszeichen auf den Wert nach dem Gleichheitszeichen. Die zu verändernden Spalten werden mit einem Komma getrennt. Am Ende der Anweisung kann eine Bedingung für die Änderung angegeben werden. Falls keine Bedingung angegeben wird, werden alle Daten der angegebenen Spalte geändert. OpenOffice 10.06.08 Folie 69 SQL nutzen 21.05.08 Seite 69 UPDATE SET preis = preis * 1,01 WHERE preis < 3;

Beispiele UPDATE artikel SET artikelnr = '3-2456-6' WHERE artikelname = 'Apfel'; UPDATE lager SET packet = '2 kg', preis = 2.4 WHERE artikel = 'Apfel'; UPDATE verkauf SET preis = preis * 0.2 WHERE preis < 2; Es können alle mathematischen Ausdrücke genutzt werden. OpenOffice 10.06.08 Folie 70 SQL nutzen 21.05.08 Seite 70

Datensätze kopieren CREATE TABLE mitarbeiter_08( nachname VARCHAR(50), vorname VARCHAR(20), eintritt VARCHAR(4) ); INSERT INTO mitarbeiter(nachname, vorname, eintritt) VALUES ('Müller', 'Sven', '2007'), ('Meier', 'Ute', '2008'), ('Scholz', 'Heinz', '2008'); INSERT INTO mitarbeiter_08(nachname, vorname, eintritt) SELECT nachname, vorname, eintritt FROM mitarbeiter WHERE eintritt = '2008'; OpenOffice 10.06.08 Folie 71 SQL nutzen 21.05.08 Seite 71 kunde where plzlike '38*' -> newtable

Daten gruppieren Daten werden nach bestimmten Kriterien zusammengefasst. Kategorisierung von Objekten. Daten, die einen gleichen Wert besitzen, werden zusammengefasst. Datengruppierungen beantworten Fragen in der Form: Welche Projekte bearbeitet Mitarbeiter A? Welche Mitarbeiter arbeiten in einer Abteilung? Welche Gemüseorten sind vorrätig? Welche Studenten legen Prüfung X ab? Welcher Autor hat welche Bücher geschrieben. OpenOffice 10.06.08 Folie 72 SQL nutzen 21.05.08 Seite 72

Darstellung Tiere: Pflanzen: Tiere: Pflanzen: Pflanzen: Tiere: Hunde Osterglocke Katzen Tulpen Rose Goldfisch Hunde Katzen Goldfisch Tiere Osterglocke Pflanzen Tulpen Rose OpenOffice 10.06.08 Folie 73 SQL nutzen 21.05.08 Seite 73

... in SQL Die Daten werden nach einem bestimmten Feld zusammengefasst. CREATE TABLE welt( kategorie VARCHAR(15), objektname VARCHAR(50), kontinent VARCHAR(20) ); SELECT * FROM welt GROUP BY kategorie; SELECT * FROM welt GROUP BY kategorie HAVING kontinent = 'Europa'; OpenOffice 10.06.08 Folie 74 SQL nutzen 21.05.08 Seite 74 Hier werden nur Datengruppen angezeigt, die ein bestimmtes Kriterium erfüllen. HAVING entspricht WHERE und kann nur für Datengruppen genutzt werden.

Funktionen... sind vordefinierte Programme, die eine bestimmte Aufgabe lösen.... haben eine bestimmte Anzahl von Eingabeparametern.... geben einen Wert zurück.... verändern nicht den gespeicherten Wert in einem Datenfeld.... können in einer SELECT- sowie in einer WHERE-Anweisung genutzt werden. In dem Standard SQL99 sind einige Funktionen definiert. Jeder Datenbankersteller ergänzt diese Funktionen um eigene. Teilweise nutzen Datenbankersteller andere Eingabeparamater oder andere Bezeichnung als der Standard vorzieht. Aber viele SQL-Implementierungen bieten weitere Funktionen an. OpenOffice 10.06.08 Folie 75 SQL nutzen 21.05.08 Seite 75

Arbeitsweise einer Funktion In einer Funktion wird eine bestimmte Aufgabe gelöst. Der Nutzer der Funktion muss nicht wissen, wie die Aufgabe gelöst wird. Dem Nutzer genügt es zu wissen, wie die Funktion aufgerufen wird. Die Funktion ist eine Blackbox. Der Funktion können Werte übergeben werden. Dem Nutzer ist nur die Anzahl und der Typ der zu übergebenen Parameter bekannt. Einige Funktionen besitzen keine Übergabeparameter. Die Lösung der Aufgabe kann an den Aufrufer zurückgegeben werden. Nicht jede Funktion besitzt einen Rückgabeparameter. 123 Funktion Eingabeparameter Rückgabeparameter 146 OpenOffice Folie 76 SQL nutzen 21.05.08 Seite 76

Aggregatfunktionen... werden häufig auf eine Datengruppe angewendet.... können auf die gesamte Tabelle angewendet werden.... ermitteln einen Wert in Bezug auf eine bestimmte Spalte.... fassen eine Sammlung von Werten zu einem Wert zusammen. NULL-Werte werden nicht berücksichtigt.... können nur in SELECT- oder HAVING-Anweisungen genutzt werden. OpenOffice 10.06.08 Folie 77 SQL nutzen 21.05.08 Seite 77

Definierte Aggregatfunktionen Folgende Funktionen sind häufig definiert: Funktion COUNT() COUNT(DISTINCT) Count(*) AVG() MIN() MAX() SUM() Beschreibung Anzahl der Nicht-Null-Felder einer Spalte Anzahl der unterschiedlichen Nicht-Null-Felder Anzahl der aller Datensätze Durchschnittswert aller Nicht-Null-Felder Kleinster Wert eines Datenfeldes Größter Wert eines Datenfeldes Summe der Nicht-Null-Felder einer Spalte Standardmäßig sind nur die Aggregatfunktionen AVG, MIN, MAX und SUM definiert. Für die Aggregatfunktionen, bis auf COUNT(), werden nummerische Werte verarbeitet. OpenOffice 10.06.08 Folie 78 SQL nutzen 21.05.08 Seite 78

Anwendung auf eine Datengruppe Hier wird durch die GROUP BY die Anzahl der Objekte in einer bestimmten Gruppe gezählt. CREATE TABLE welt( kategorie VARCHAR(15), objektname VARCHAR(50), kontinent VARCHAR(20) ); SELECT kategorie, COUNT(objektname) FROM welt GROUP BY kategorie; SELECT kategorie, COUNT(objektname) FROM welt GROUP BY kategorie HAVING kontinent = 'Europa'; OpenOffice 10.06.08 Folie 79 SQL nutzen 21.05.08 Seite 79

Anwendung auf die gesamte Tabelle CREATE TABLE welt( kategorie VARCHAR(15), objektname VARCHAR(50), kontinent VARCHAR(20) ); SELECT COUNT(objektname) FROM welt; Eine Kombination von Datenfeldern und Aggregatfunktionen ist nicht erlaubt. Ausnahme: Die Datenfelder werden zu Gruppen zusammengefasst. Die Aggregatfunktion bezieht sich auf alle Datensätze in der angegebenen Tabelle. OpenOffice 10.06.08 Folie 80 SQL nutzen 21.05.08 Seite 80

Weitere eingebaute Funktionen... können Datenfelder einer Tabelle, konstante Werte oder Ergebnisse von Berechnungen übergeben bekommen.... liefern ein Ergebnis zurück.... gibt es für folgende Bereiche: Datums- und Zeitberechnungen. Trigometrische Funktionen. Stringfunktionen. etc. Deren Implementierung ist abhängig vom gewählten Datenbankprogramm. OpenOffice 10.06.08 Folie 81 SQL nutzen 21.05.08 Seite 81

Beispiele für MYSQL SELECT messungid, messwert, sin(messwert) FROM messung; SELECT bestellungid, kunde FROM bestellung WHERE length(bestellungid) > 5; SELECT kunde, ort FROM kunde WHERE substring(ort, 1, 5) = '38112'; INSERT INTO bestellung (kunde, artikel, menge, datum) VALUES('Meier', 'Banane', 5, CURRENT_DATE), ('Schmidt', 'Äpfel', 3, CURRENT_DATE); OpenOffice 10.06.08 Folie 82 SQL nutzen 21.05.08 Seite 82