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



Ähnliche Dokumente
Informatik 12 Datenbanken SQL-Einführung

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

Datenbanken Microsoft Access 2010

Abfragen: Grundbausteine

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

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

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

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

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

Labor 3 - Datenbank mit MySQL

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

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

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

Berechnungen in Access Teil I

WinWerk. Prozess 6a Rabatt gemäss Vorjahresverbrauch. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

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!.

Professionelle Seminare im Bereich MS-Office

Fachhochschule Deggendorf Platzziffer:...

MS Excel 2010 Kompakt

Dokument Lob erstellen

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

Datenexport aus JS - Software

1 Mathematische Grundlagen

Bedienungsanleitung Rückabwicklungsrechner

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

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

Erwin Grüner

Die Statistiken von SiMedia

Zwischenablage (Bilder, Texte,...)

Auswahlabfragen mit ACCESS

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

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

Inventur. Bemerkung. / Inventur

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

Info-Veranstaltung zur Erstellung von Zertifikaten

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

5. Übung: PHP-Grundlagen

Beispiel 1: Filmdatenbank

Fallbeispiel: Eintragen einer Behandlung

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

Waimea Phone Monitor. Handbuch. Anzeige von eingehenden Anrufen auf Telefonanlagen mit TAPI-Interface

Hinweise zur Datensicherung für die - Prüfmittelverwaltung - Inhalt

07. Kapitel: Abfragen erstellen Geschätzter Zeitaufwand: 45 Minuten

Das Modul ARTIKEL-BARCODE ermöglicht den Druck von Barcode-Etiketten der EAN-Codes 8 und 13.

teamsync Kurzanleitung

Dokumentation IBIS Monitor

Im Original veränderbare Word-Dateien

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

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

Einführung in die Algebra

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

Anleitung für die Online-Bewerbung über LSF auf Lehrveranstaltungen aller Lehramtsstudiengänge

Erstellen von x-y-diagrammen in OpenOffice.calc

4. BEZIEHUNGEN ZWISCHEN TABELLEN

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

Datenbanken Kapitel 2

Anleitung zur Erstellung einer Gefährdungsbeurteilung

Lehrer: Einschreibemethoden

Mandant in den einzelnen Anwendungen löschen

Antolin-Titel jetzt automatisch in WinBIAP kennzeichnen

MMS - Update auf Version 4.4

Beispiele für Datenbank-Struktur-Probleme

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Beispiel(unten ist der Spielfeldrand):

Webalizer HOWTO. Stand:

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

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

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

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

Welche Lagen können zwei Geraden (im Raum) zueinander haben? Welche Lagen kann eine Gerade bezüglich einer Ebene im Raum einnehmen?

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Hilfedatei der Oden$-Börse Stand Juni 2014

Leere Zeilen aus Excel-Dateien entfernen

Tag der Mathematik 2012

104 WebUntis -Dokumentation

Internet online Update (Mozilla Firefox)

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

Enigmail Konfiguration

Lieferschein Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

EMC SourceOne TM für Microsoft SharePoint 7.1 Archivsuche Kurzreferenz

Statuten in leichter Sprache

Excel Pivot-Tabellen 2010 effektiv

Schnelleinstieg in die (cs) AuftragPro

Rundung und Casting von Zahlen

6 Bilder und Dokumente verwalten

Anleitung, WebRecherche

Anleitung über den Umgang mit Schildern

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

Zur drittletzten Zeile scrollen

Abfrage-Befehle in MySQL -diverse Funktionen -

Repetitionsaufgaben Wurzelgleichungen

Beispiel des Zusammenführens der APV- Tabellen Stammdaten und Verlaufsdaten mithilfe von Access

Vorabversion. Schulung am Homepage Administration und Pflege

Elektrische Logigsystem mit Rückführung

Übungsaufgaben Tilgungsrechnung

MIN oder MAX Bildung per B*Tree Index Hint

AutoTexte und AutoKorrektur unter Outlook verwenden

myfactory.go! - Verkauf

Transkript:

SELECT - Der Grundbefehl zur Auswahl von Daten Die SELECT-Anweisung fragt Daten aus einer Datenbank ab und stellt diese in einer virtuellen Tabelle zur Verfügung. Diese virtuelle Tabelle, eine Menge von Datensätzen existiert zunächst nur temporär im Arbeitsspeicher und wird nach dem Ende der Befehlsausführung verworfen. Die Ausgabe kann aber auch mit SELECT... INTO... FROM in eine neue Tabelle kopiert oder mit INSERT INTO... SELECT... zu einer bestehenden Tabelle hinzugefügt werden. Grundlegender Syntax [Befehle in eckigen Klammern sind optional] SELECT [DISTINCT] < Spaltenname> <Konstante> <Berechnung> <einer der obigen Ausdrücke> AS Spaltenalias FROM <Tabellenname> AS Tabellenalias [WHERE...] [GROUP BY...] [HAVING...] [ORDER BY <Spaltenname> [ASC DESC] ] Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY. Die Beispiele unten behandeln nur den Abschnitt zwischen SELECT und FROM. SELECT <Spaltenname... - wie oben > [INTO <neue Tabelle>] FROM <Tabellenname> AS Tabellenalias Seite 1 von 7

Beispiele: 1 SELECT A_NR, A_NAME, A_PREIS FROM ARTIKEL; 2 SELECT A.A_NR, A.A_NAME, A.A_PREIS ORDER BY A.A_PREIS; 3 SELECT A_NR, A_PREIS AS Netto, 0.19 AS MwSt, FROM ARTIKEL A_PREIS * 1.19 AS Brutto ORDER BY A_PREIS DESC; Einfache, kommagetrennte Auflistung der gewünschten Spalten, die im Tabellen-Ausdruck vorkommen. Ohne Alias für die Tabelle. Dasselbe wie im ersten Beispiel, aber mit Aliasname A für die Tabelle und Sortierung nach der Spalte A_PREIS. Es werden Alias-Ausdrücke für die Spaltennamen verwendet - das Ergebnis gibt drei Spalten Netto, MwSt und Brutto aus. MwSt enthält einen konstanten Wert, in Brutto wird der Inhalt von A_PREIS multipliziert mit einer Konstanten. Die Ausgabe wird nach A_PREIS absteigend sortiert. 4 SELECT A.* ORDER BY A.A_NAME ASC, A.A_PREIS DESC; 5 SELECT DISTINCT A.A_NAME ; Hier wird für die Tabelle ein Alias A verwendet und mithilfe von * alle Spalten ausgewählt. Das Ergebnis wird aufsteigend nach Artikel-Name und absteigend nach Artikel-Preis sortiert. Das Schlüsselwort DISTINCT entfernt alle mehrfach vorkommenden Zeilen mit Ausnahme einer. Die Abfrage liefert deshalb nur drei Zeilen zurück, eine Zelle mit dem Wert 'Oberhemd' wurde entfernt. 6 SELECT V.* INTO KOPIEVONVERTRETER FROM VERTRETER AS V; INTO speichert die virtuelle Tabelle in ein reales neues Tabellenobjekt. Es wird die neue Tabelle 'KOPIEVONVERTRETER' erstellt und mit den Zeilen gefüllt, die von der SELECT-Anweisung zurückgegeben wurden. Bemerkungen Verwenden Sie Alias-Namen für Tabellen, damit die Spalten einfacher identifiziert werden. Wenn der Spalten-, Alias- oder Tabellenname Sonderzeichen, etwa ein Leerzeichen oder Minus (-) enthält, so schließen Sie den Ausdruck in eckige Klammern ein. Beispiel: Select A.A_PREIS * 1.19 AS [Aktueller Bruttopreis] FROM ARTIKEL Soll ein konstanter Text angegeben werden, so setzen Sie diesen in einfache Hochkommata. Beispiel: SELECT A.A_NAME, 'aktuell' AS Info Seite 2 von 7

Mit WHERE einzelne Datensätze nach Bedingungen aus der Datenbank auswählen Die SELECT-Anweisung liefert eine virtuelle Tabelle, bestehend aus Zeilen und Spalten zurück. Der nach FROM folgende WHERE-Abschnitt kann Spaltennamen verwenden, um Bedingungen festzulegen. Für jede Zeile wird geprüft, ob die durch den Spaltennamen festgelegte Zelle die Bedingung erfüllt. Falls dies der Fall ist, wird die Zeile zur Ausgabe hinzugefügt. Syntax SELECT... FROM... WHERE <Bedingung 1> [<logischer Operator> <Bedingung 2>] Es können mehrere Bedingungen angegeben und mit logischen Operatoren (NOT, AND, OR) miteinander verknüpft werden. Zulässige Vergleichsoperatoren: = Gleichheit <> verschieden < kleiner > größer <= kleiner oder gleich >= größer oder gleich IS NULL prüft, ob die Zelle leer ist IS NOT NULL prüft, ob die Zelle einen Wert enthält BETWEEN zwischen zwei Werten liegend IN prüft, ob der linke Ausdruck in einem der rechten vorkommt LIKE vergleicht Strings EXISTS prüft, ob die folgende Unterabfrage mindestens eine Zeile zurückliefert Zulässige logische Operatoren: NOT der folgende Ausdruck darf nicht erfüllt sein AND beide Bedingungen müssen erfüllt sein OR mindestens eine Bedingung muss erfüllt sein Beispiele: 1 Select A.* WHERE A.A_NR = 11; 2 Select A.* WHERE NOT A.A_NR = 11; Wählt die Zeile aus, bei welcher die Zelle A_NR den Wert 11 hat. Wählt alle Zeilen aus, deren A_NR verschieden von 11 aber auch nicht leer (Not Null) ist Beachten Sie: gleichwertig zu WHERE A.A_NR <> 11 Seite 3 von 7

3 Select A.* WHERE A.A_PREIS IS NULL; 4 Select A.* WHERE A.A_NAME = 'Oberhemd' AND A.A_PREIS < 40.00; 5 Select A.* WHERE A.A_NAME = 'Oberhemd' OR A.A_PREIS > 40.00; 6 Select A.* WHERE A.A_PREIS BETWEEN 39.8 AND 100.00; 7 Select A.* WHERE 39.8 <= A.A_PREIS AND A.A_PREIS <= 100; 8 Select A.* WHERE A.A_NAME IN ('Hose', 'Mantel', 'Strümpfe'); 9 SELECT V.* FROM VERTRETER AS V WHERE V.V_NAME LIKE 'Me_er, Franz' WHERE V.V_NAME LIKE 'Me%' WHERE V.V_NAME CONTAINS 'Me'; 10 SELECT A.A_NR WHERE EXISTS (SELECT B.UMSATZ_NR FROM UMSATZ AS B WHERE B.A_NR = A.A_NR); Bemerkungen Wählt die Zeilen ohne Preis aus. Beachten Sie: Zelle mit dem Zahlenwert 0 ist nicht leer Zelle mit Zeichenkette "" ist nicht leer Wählt die Zeilen aus, bei denen sowohl der Wert in A_NAME gleich 'Oberhemd' als auch der Wert in A_PREIS kleiner als 40.00 ist. Wählt die Zeilen aus, bei denen der Wert in A_NAME gleich 'Oberhemd' oder der Wert in A_PREIS größer als 40.00 ist. Wählt die Zeilen aus, deren Preis zwischen 39.8 und 100.00 liegt. Die Randwerte werden mitgezählt. Beachten Sie: Das AND gehört zum BETWEEN und hat hier keine logische Bedeutung. Diese Version ist gleichwertig zur vorherigen Version. Vergleicht den Zelleninhalt mit jedem der in der Klammer angegebenen Werte. Stimmt er mit einem überein, so wird die Zeile ausgegeben. Es können Konstante, berechnete Werte oder das Ergebnis einer Abfrage angegeben werden. Beachten Sie: Der Ausdruck ist gleichwertig zu WHERE A.A_NAME = 'Hose' OR A.A_NAME = 'Mantel' OR A.A_NAME = 'Strümpfe' Mit LIKE werden Textmuster geprüft. Unterstrich _ ist Platzhalter für ein einzelnes Zeichen. Prozentzeichen % ist Platzhalter für kein oder mehrere Zeichen. CONTAINS prüft, ob eine Zeichenkette im Feldinhalt enthalten ist. EXISTS prüft, ob eine Unterabfrage Werte enthält. EXISTS bricht ab, wenn eine Zeile gefunden wurde. Zur Suche nach ganzen Zahlen werden diese direkt notiert. Für Dezimalzahlen ist der Punkt das Trennzeichen. Texte werden in Hochkommata (') gesetzt. Operatorreihenfolge: Ein Vergleich mit = bindet am stärksten, so dass ein Ausdruck A_NAME = 11 OR A_PREIS > 100 so interpretiert wird: (A_NAME = 11) OR (A_PREIS > 100) Verwenden Sie verschiedene logische Operatoren in einem WHERE-Ausdruck, so nutzen Sie am besten Klammern. Seite 4 von 7

JOIN - Normalisierte Tabellen für eine Abfrage wieder zusammenführen Eine Datenbank wurde normalisiert, also der Datenbestand in verschiedene Tabellen aufgeteilt. Sollen nun Daten aus verschiedenen Tabellen einander zugeordnet werden. leistet das die JOIN-Verknüpfung. Ein JOIN fügt zwei Tabellen zu einer neuen, virtuellen Tabelle zusammen. Syntax Komma-Version FROM <Tabellenname>, <Tabellenname> Besser! Einfachste Form des INNER JOIN FROM <Tabellenname> INNER JOIN <Tabellenname> ON <Spaltenname1> OPERATOR < Spaltenname2> Eine Tabelle kann auch zweimal angegeben werden, man spricht von einer Selbstverknüpfung, da Zeilen der Tabelle zu anderen Zeilen der Tabelle in Beziehung gesetzt werden Beispiele 1 SELECT A.*, U.*, UMSATZ AS U WHERE U.A_NR = A.A_NR; 2 SELECT A.A_NR, A.A_NAME, A.A_PREIS,U.DATUM, U.A_STUECK, A.A_PREIS * U.A_STUECK AS Preis FROM UMSATZ AS U INNER JOIN ARTIKEL AS A ON U.A_NR = A.A_NR; Bemerkungen Der Join kombiniert jede Zeile der Tabelle ARTIKEL mit jeder Zeile der Tabelle UMSATZ und gibt das Ergebnis aus 4 * 9 = 36 Zeilen vollständig aus also sinnlos. Durch WHERE werden dann nur relevante Datensätze angezeigt. Dies ist die einfachste und am häufigsten genutzte Form des JOIN. Durch die in der ON-Klausel festgelegte Bedingung werden die Datensätze gefiltert. Falls Sie Tabellen verknüpfen, so sollten Sie im Regelfall die 'alte' Technik, welche die Klammerversion nutzt und die ON-Klausel in die WHERE-Bedingung verschiebt vermeiden. Vergleichen Sie die beiden folgenden Darstellungen: SELECT A.*, U.*, UMSATZ AS U WHERE A.A_NR = U.A_NR AND A.A_NR < 13; SELECT A.*, U.* INNER JOIN UMSATZ AS U ON A.A_NR = U.A_NR WHERE A.A_NR < 13; Seite 5 von 7

Mit Aggregat-Funktionen und GROUP BY Daten auswerten Rückgabe einer einzelnen Zelle - einfache Aggregation SELECT <Aggregatfunktion(Spaltenname) As Spaltenname> FROM... [WHERE...] [WHERE...] GROUP BY Spaltenname, Beispiele 1 SELECT COUNT(U.DATUM) AS ZAHLDERUMSÄTZE FROM UMSATZ AS U; 2 SELECT U.DATUM, COUNT(U.DATUM) AS ZAHLDERUMSÄTZEPROTAG FROM UMSATZ As U GROUP BY U.DATUM; 3 SELECT MAX(A.A_PREIS) AS TEUERSTERARTIKEL FROM ARTIKEL As A; Sind alle Zellen einer Tabelle belegt, so ist es unerheblich, welche Spalte Sie verwenden. Alle nichtleeren Zellen werden gezählt. Sie erhalten als Ergebnis zwei Zeilen, für jede der unterschiedlichen Datumsangaben eine Zeile. Jede Zeile enthält die zusätzliche Zelle 'ZAHLDER- UMSÄTZEPROTAG'. Dies liefert Ihnen den Preis des teuersten Artikels (360.00). Tabellen im Anhang Seite 6 von 7

Beispieldatenbank aus drei Tabellen bestehend Artikel A_NR A_NAME A_PREIS 12 Oberhemd 39,80 22 Mantel 360,00 11 Oberhemd 44,20 13 Hose 110,50 Vertreter V_NR V_NAME V_ANSCH V_PROV V_KONTO 8413 Meyer, Emil Wendeweg 10, 2800 Bremen 0,07 725,15 5016 Meier, Franz Kohlstr. 1, 2800 Bremen 0,05 200,00 1215 Schulze, Fritz Gemüseweg 3, 2800 Bremen 0,06 50,50 Umsatz UMSATZ_NR V_NR A_NR A_STUECK DATUM 1 8413 12 40 24.06.99 2 5016 22 10 24.06.99 3 8413 11 70 24.06.99 4 1215 11 20 25.06.99 5 5016 22 35 25.06.99 6 8413 13 35 24.06.99 7 1215 13 5 24.06.99 8 1215 12 10 24.06.99 9 8413 11 20 25.06.99 Seite 7 von 7