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



Ähnliche Dokumente
Informatik 12 Datenbanken SQL-Einführung

Abfragen: Grundbausteine

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

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

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

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

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

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

Abfrage-Befehle in MySQL -diverse Funktionen -

SQL - Übungen Bearbeitung der Datenbank Personal (1)

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

Berechnungen in Access Teil I

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

Leichte-Sprache-Bilder

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

7. Übung - Datenbanken

Die Bundes-Zentrale für politische Bildung stellt sich vor

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

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

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

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

IBIS Professional. z Dokumentation zur Dublettenprüfung

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

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Zeichen bei Zahlen entschlüsseln

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

105.3 SQL-Datenverwaltung

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

Datenexport aus JS - Software

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Abbildung 1: Das ERM. Nun zu den Tabellen: Zunächst wird aus jeder Entity eine Tabelle, d.h. wir erhalten:

Blumen-bienen-Bären Academy. Kurzanleitung für Google Keyword Planer + Google Trends

Leitfaden Online Shopping 1. Gastgeberinnen-Portal und Online-Einladungen 2. Online Plus 3. Klassisches Online Shopping (Einzelbestellung)

Webalizer HOWTO. Stand:

Datenbanken Microsoft Access 2010

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Anleitung: Wie unterschreibe ich die Petition im Internet?

Anwendungsbeispiele Buchhaltung

Antrag für ein Schlichtungs-Verfahren

Handreichung für Lehrer

SQL structured query language

Seco Online Store! Einkauf per Mausklick!

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Professionelle Seminare im Bereich MS-Office

Informationen zum Ambulant Betreuten Wohnen in leichter Sprache

Das Persönliche Budget in verständlicher Sprache

Wie können Sie Publikationen in leicht verständlicher Sprache bestellen?

1 BEDIENUNGSANLEITUNG

Anleitung OpenCms 8 Webformular Auswertung

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

Handbuch. Adressen und Adressenpflege

Access [basics] Rechnen in Berichten. Beispieldatenbank. Datensatzweise berechnen. Berechnung im Textfeld. Reporting in Berichten Rechnen in Berichten

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

Lehrer: Einschreibemethoden

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

Was meinen die Leute eigentlich mit: Grexit?

Was ist Sozial-Raum-Orientierung?

-Inhalte an cobra übergeben

Die Post hat eine Umfrage gemacht

* Leichte Sprache * Leichte Sprache * Leichte Sprache *

SMS-Versand in MACS Einrichtung des SMS-Versand Verwendung des SMS-Versandes Der SMS-Versand Empfängerfeld Empfänger-Rufnummer Inhalt der SMS

Datenbanken Kapitel 2

Kurzanleitung Schneider Online Shop

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

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Praktikum Datenbanken. 1. Erstellen Sie eine Abfrage, die die gesamte Tabelle PC ausgibt

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Erklärung zum Internet-Bestellschein

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

So funktioniert das online-bestellsystem GIMA-direkt

s zu Hause lesen

SQL Aufgaben zur eigenen Leistungskontrolle

Das Leitbild vom Verein WIR

Bitte genau durchlesen.

Auswertung erstellen: Liste mit -

Catherina Lange, Heimbeiräte und Werkstatträte-Tagung, November

Excel Pivot-Tabellen 2010 effektiv

7DVWH.HOOQHU. Kassensystem SANYO (X&D6RIWKapitel 42

Fachhochschule Deggendorf Platzziffer:...

my.ohm Content Services Autorenansicht Rechte

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

How to do? Projekte - Zeiterfassung

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

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

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Dossier: Rechnungen und Lieferscheine in Word

Inhaltsverzeichnis. 1. Empfängerübersicht / Empfänger hinzufügen 2. Erstellen eines neuen Newsletters / Mailings 3. Versand eines Newsletters

Schritt 1 - Registrierung und Anmeldung

euro-bis Import von Bestellungen aus Buch- und Aboauskunft Stand

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Internationales Altkatholisches Laienforum

Was ich als Bürgermeister für Lübbecke tun möchte

So erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Erstellen einer Datenbank. Datenbankabfragen

Word 2010 Schnellbausteine

ACHTUNG. Bitte lesen Sie GANZ GENAU die Anweisungen! Nur so ist sichergestellt, dass Sie nichts falsch machen und vergessen!!!

Transkript:

Datenbankabfragen (Query) mit SQL (Structured Query Language) 1 Aufbau des SELECT-Befehls Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. SQL-Syntax: SELECT spaltenliste FROM tabellenname [WHERE Auswahlbedingung] [GROUP BY spaltenliste] [HAVING Auswahlbedingung] [ORDER BY spaltenliste]; Mit FROM geben Sie die Tabelle an, in der sich diese Spalten befinden. Mit WHERE können Sie die Suche einschränken. Sie legen den Wert einer Spalte fest, der nötig ist, damit die anderen gesuchten Werte des Datensatzes angezeigt werden. Sie können Werte mit GROUP BY zu Gruppen zusammenfassen, um spezielle Berechnungen durchzuführen. Dabei können Sie die Gruppen mit HAVING einschränken. Mit ORDER BY lassen Sie sich die Ergebnisse sortiert anzeigen. Probieren Sie die folgenden Abfragen und lösen die Aufgaben: Alle Spalten einer Tabelle ausgeben: SELECT * ; Spalten auswählen: SELECT name, vorname, strasse, plz, ort ; Select mit Bedingung (WHERE): SELECT name, vorname WHERE ort = 'Bonn'; SELECT name, vorname, strasse, plz, ort WHERE ort = 'Hamburg' OR ort = 'Bonn'; SELECT name, vorname, strasse, plz, ort WHERE name = 'Kaufmann' AND vorname = 'Andreas'; SELECT name, vorname, email, strasse, plz, ort WHERE email IS NOT NULL AND plz STARTING WITH '50'; Übungen (die Lösungstabellen befinden sich unter oder neben der Frage) : 1. Listen Sie alle Artikel der Tabelle artikel auf, deren Nettopreis höher als 100 liegt....

Datenbankabfragen (Query) mit SQL (Structured Query Language) 2 2. Listen Sie alle Mitarbeiter auf, die in der Abteilung 2 beschäftigt sind. 3. Listen Sie alle Artikel auf, die zur Kategorie Grafikkarten (Kategorienr. 3) gehören. 4. Geben Sie alle Kunden aus, deren Kundennummer größer als 50 ist und die nicht in Köln wohnen ('nicht' wird in SQL mit!= ausgedrückt).... Vergleichsoperatoren: SELECT * WHERE name IN ('Maier', 'Mayer', 'Meier', 'Meyer'); SELECT * WHERE name LIKE 'M er'; SELECT * WHERE name IS NOT NULL; SELECT * FROM mitarbeiter WHERE gehalt BETWEEN 2000 AND 3000; SELECT * FROM mitarbeiter WHERE gehalt >= 2000 AND gehalt <=3000; SELECT * WHERE name BETWEEN 'C' AND 'M'; Alle Datensätze im Feld name,die mit a oder A beginnen Alle Datensätze, die mit a enden Alle Datensätze, die ein a beinhalten Datensätze mit der Buchstabenkombination d,(egal),na select * from personen where name like a% ; select * from personen where name like %a ; select * from personen where name like %a% ; select * from personen where name like d_na% ; 5. Lassen Sie die Daten eines Kunden anzeigen, dessen Namen Sie nicht mehr genau wissen, nur so viel: Die Anfangsbuchstaben lauten 'Sc' letzter Buchstabe 'i'.

Datenbankabfragen (Query) mit SQL (Structured Query Language) 3 6. Lassen Sie die Kundendaten der Kunden anzeigen, die im PLZ-Bereich zwischen 3000 und 4100 wohnen. 7. Geben Sie die Kundennummer und das Bestelldatum aus der Tabelle 'Bestellungen' an, wo das Bestelldatum zwischen dem 02.01.2006 und 04.01.2006 liegt. 8. Geben Sie alle Spalten der Artikel an, dessen Nettopreis zwischen 200 und 250 liegt. 9. Lassen Sie alle Informationen der Artikel anzeigen, in dessen Bezeichnung das Wort 'Stylus' vorkommt. Ausgabe sortieren (ORDER BY): SELECT * ORDER BY ort desc, plz; SELECT * ORDER BY ort asc, plz; Feld 'ort' beginnend mit größtem Wert (erster Buchstabe im Alphabet) descending(absteigend), oder beginnend mit kleinstem Wert (letzter Buchstabe im Alphabet) ascending (aufsteigend) SELECT name, vorname WHERE name = 'Hecht' OR name = 'Martin' ORDER BY name DESC, vorname; SELECT name, vorname, strasse, plz, ort WHERE ort = 'Hamburg' OR ort = 'Bonn' ORDER BY ort DESC, name, vorname; Übungen: 10. Listen Sie alle Artikel in der Reihenfolge der Kategorie und dann alphabetisch auf. 11. Listen Sie alle Mitarbeiter nach ihrem Gehalt und dann der Abteilung auf. Das Gehalt soll absteigend sortiert werden. 12. Listen Sie alle Kunden, die per Nachname (N) bezahlen, nach Postleitzahlenbezirken auf.

Datenbankabfragen (Query) mit SQL (Structured Query Language) 4 Aggregatfunktionen Die Funktion Count(*) zählt Datensätze: SELECT COUNT(*) ; Wird ein zweites Feld ausgegeben, werden die Datensätze gezählt, die zu diesem Feld gehören. Dieses zweite Feld muss zusammen gefasst (Gruppiert) werden. SELECT count(*) as Wohnen_in, ort GROUP BY ort; mit 'as' können die Feldnamen der Ergebnistabelle bestimmt werden es werden nicht mehr alle Datensätze der Tabelle 'kunde' gezählt, sondern die, die zum Feld 'ort' passen!... Exkurs: Wird eine Funktion in der Select-Abfrage eingesetzt, müssen alle ausgegebenen Felder, der ergebnistabelle gruppiert werden. Ohne eine Gruppierung gibt es von jedem DBMS eine Fehlermeldung, ausser bei 'phpmyadmin': Es soll gezählt werden, wie viele Kunden aus einem Ort kommen. Angezeigt werden sollen der Ort und die entsprechende Anzahl pro Ort. Falsch: SELECT ort, count(*) as Anzahl from kunde Richtig: SELECT ort, count(*) as Anzahl from kunde group by ort Die gesamte Bestellmenge (die Summe) pro Ort soll angezeigt werden. Falsch: SELECT ort, SUM(Bestellmenge) as Bestellungen from kunde Richtig: SELECT ort, SUM(Bestellmenge) as Bestellungen from kunde group by ort

Datenbankabfragen (Query) mit SQL (Structured Query Language) 5 Having: Das Ergebnis einer Berechnung kann durch 'having' eingeschränkt werden. Having folgt immer dem group by. Count() wird wie ein Spaltenname verwendet. SELECT ort, COUNT(*) GROUP BY ort HAVING COUNT(*) >= 10; 13. Sorgen Sie bei der letzten Abfrage der Beispielfirma für eine sortierte Ausgabe der Städte nach der Anzahl der dort lebenden Kunden. Die Stadt mit den meisten Kunden soll dabei zuerst ausgegeben werden. 14. Lassen Sie die Städte nach der Anzahl der dort lebenden Kunden ausgeben (wie Aufgabe 13.). Bei gleicher Anzahl der Kunden soll die Ausgabe der Städte alphabetisch erfolgen. 15. Lassen Sie die Anzahl der Artikel pro Kategorie ausgeben, die teurer als 50 sind. 16. Lassen Sie sich die Bestellnummern von allen Bestellungen aus der Tabelle posten ausgeben, bei denen 5 Artikel oder mehr bestellt wurden. Sorgen Sie für eine Ausgabe der Größe nach. Weitere Aggregatfunktionen SELECT kategorie AS Kategorie, COUNT(*) AS Anzahl_der_Artikel, SUM(nettopreis) AS Summe_aller_Preise, AVG(nettopreis) AS Durchschnittspreis, MAX(nettopreis) AS hoechster_preis, MIN(nettopreis) AS niedrigster_preis FROM artikel GROUP BY kategorie; SELECT bestellnr, SUM(liefermenge) FROM posten GROUP BY bestellnr; SELECT AVG(nettopreis) AS durchschnittlicher_preis FROM artikel; SELECT SUM (bestand) FROM artikel WHERE kategorie = 1; SELECT SUM (bestand) AS vorhandene_monitore FROM artikel WHERE kategorie = 1; SELECT MAX(gehalt) AS hoechstes_gehalt FROM mitarbeiter; SELECT min(bestelldatum) FROM bestellung;

Datenbankabfragen (Query) mit SQL (Structured Query Language) 6 17. Wie hoch ist der Durchschnittsverdienst der Angestellten pro Abteilungen? 18. Ermitteln Sie das Eintrittsdatum des Mitarbeiters, der zuletzt zur Firma gekommen ist. Mit first 1 feldname kann man die Ausgabe in der Ergebnistabelle begrenzen. 19. Wie groß ist die höchste Bestellmenge in der Tabelle posten? 20. Wie viel wird im Durchschnitt pro Artikel bestellt? 21. Welcher Kunde steht alphabetisch am Anfang der Liste? Mathematische, Zeichenketten und Datums Funktionen: SELECT bezeichnung, nettopreis * 1.19 AS Endpreis FROM artikel; SELECT name, CHAR_LENGTH(name) FROM mitarbeiter; SELECT COUNT(*) FROM bestellung WHERE EXTRACT(MONTH FROM bestelldatum) = 1 AND EXTRACT(YEAR FROM bestelldatum) = 2006; 22. Einer der Geschäftsführer der Beispielfirma hat gehört, dass Artikel, deren Bezeichnung mehr als 17 Buchstaben lang ist, von Kunden ungern gekauft werden. Er möchte daher wissen, welche Artikelnamen länger als 17 Zeichen sind. 23. Wie können Sie feststellen, wie viele Bestellungen bisher insgesamt am zweiten Tag eines Monats eingegangen sind? 24. Welche Kunden haben E-Mail-Adressen von on-line.de?

Datenbankabfragen (Query) mit SQL (Structured Query Language) 7 Abfragen über mehrere Tabellen Der SQL-Syntax von Seite 1 bleibt gleich, hinzu kommt die Tabellenverknüpfung. Dazu muss man wissen, wie die Tabellen untereinander verknüpft sind: 25. Wie viele Produkte von den einzelnen Herstellern sind im Angebot? Listen Sie den Herstellernamen und die Anzahl ihrer Produkte (die Bezeichnungen müssen gezählt werden). Die Schlüssel: Tabelle Artikel: Hersteller Falsch: ohne Tabellenverknüpfung: Tabelle Hersteller: Herstellernr Richtig: mit Tabellenverknüpfung: 26. Geben Sie zu jedem Mitarbeiter die Bezeichnung seiner Abteilung an. Die Tabellen mitarbeiter und abteilung sind über die Abteilungsnummer miteinander verknüpft. 27. Um festzustellen, ob die Beispielfirma irgendwelche Ladenhüter in ihrem Lager beherbergt, listen Sie für alle Artikel auf, wie viele von ihnen bestellt wurden. Der innere Verbund (INNER JOIN) Der innere Verbund gibt nur Datensätze aus, die in beiden Tabellen vorhanden sind. Wenn alle Kunden mit ihren Bestellungen aufgelistet werden sollen, werden nur die Kunden aufgeführt, die schon etwas bestellt haben man erhält dasselbe Ergebnis wie mit der WHERE-Bedingung. SQL-Syntax: Ganz allgemein sieht die Verknüpfung über WHERE so aus:

Datenbankabfragen (Query) mit SQL (Structured Query Language) 8 SELECT spaltenliste FROM tabellenliste WHERE tabellenname1.primärschlüssel = tabellenname2.fremdschlüssel; Der Aufbau des INNER JOIN entspricht dem allgemeinen Befehl: SELECT spaltenliste FROM tabellenname1 [INNER] JOIN tabellenname2 ON tabellenname1.primärschlüssel = tabellenname2. Fremdschlüssel [INNER] JOIN tabellenname3 ON tabellenname2. primärschlüssel = tabellenname3.fremdschlüssel ; Beispiel: Die Geschäftsführung der Beispielfirma möchte wissen, wann welcher Kunde etwas bestellt hat. Die dazu benötigten Tabellen kunde und bestellung sind über die Kundennummer miteinander verknüpft. SELECT kunde.name, kunde.vorname, bestellung.bestelldatum INNER JOIN bestellung ON kunde.kundennr = bestellung.kundennr; Der äußere Verbund (LEFT JOIN / RIGHT JOIN) Es sollen alle Kunden und ihre Bestellungen aufgelistet werden, selbst wenn die Kunden nichts bestellt haben vielleicht weil sie gerade erst einen Katalog angefordert haben. In diesem Fall existiert zu diesem Kunden ein Datensatz in der Tabelle 'kunde' aber nicht in der Tabelle 'bestellungen'; trotzdem sollen alle Kunden angezeigt werden. Das ist weder mit WHERE noch mit INNER JOIN möglich. Dafür wird ein äußerer Verbund hergestellt, der OUTER JOIN. Hier können Sie angeben, welche der Tabellen alle Spalten angeben soll Bei LEFT JOIN werden alle Spalten der Tabelle angezeigt, die 'links' bzw. direkt hinter 'from' steht. SQL-Syntax: SELECT k.name, k.vorname, b.rechnungsbetrag AS k LEFT JOIN bestellung AS b ON k.kundennr = b.kundennr; Lösen Sie die Aufgaben 25 27 mit inner join. Aufgaben: