Abfragen (Queries, Subqueries)

Ähnliche Dokumente
Übersicht der wichtigsten MySQL-Befehle

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

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

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

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

ACCESS SQL ACCESS SQL

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

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

Es geht also im die SQL Data Manipulation Language.

SQL als Zugriffssprache

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

Erzeugung und Veränderung von Tabellen

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis.

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

SQL-Sprachvielfalt. Peter Willadt (Ludwig-Erhard-Schule) SQL-Befehle / 47

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

Oracle 10g Einführung

SELECT dient dazu, aus einer vorhandenen Datenbank bestimmte Spalten und Zeilen auszugeben es handelt sich also um eine Auswahlabfrage.

Wiederholung VU Datenmodellierung

Datenmanipulation in SQL (1): Subselect:

SQL-Befehlsliste. Vereinbarung über die Schreibweise

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

Web-Technologien. Prof. Dr. rer. nat. Nane Kratzke SQL. Praktische Informatik und betriebliche Informationssysteme

Datenbanksysteme Teil 6 MySQL DML Die SELECT-Anweisung. Stefan Maihack Dipl. Ing. (FH) Datum:

5.8 Bibliotheken für PostgreSQL

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

Microsoft Access 2010 SQL nutzen

Sructred Query Language

Datenmanipulation in SQL. Select Anweisung

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

Professioneller Einstieg in Oracle Database 11g SQL

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

Lösungen der Übungsaufgaben von Kapitel 10

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

Datenbanksysteme Kapitel 5: SQL Data Manipulation Language

SQL - Datenbankdesign - Aufbau

Informatik Datenbanken SQL-Einführung

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

Datenbanken. Zusammenfassung. Datenbanksysteme

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

Daniel Warner SQL. Das Praxisbuch. Mit 119 Abbildungen. Franzis

Tabellen verknüpfen: Joins

SQL structured query language

SQL-Anweisungen. SELECT (SQL Data Query Language)

Übungsaufgaben mit Lösungen

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

SQL: Abfragen für einzelne Tabellen

Kapitel 6. Datenmalipulation (DML) d. h. insert, update, delete, select im Relationenmodell (in Oracle)

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

zwei verschiedene Darstellungsformen derselben Abfrage.

Datenbank und Tabelle mit SQL erstellen

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Unterabfragen (Subqueries)

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL. Abfragesprache Datenmanipulation - DML

Inhaltsverzeichnis. Inhalt. 1 Einführung in die Datenbanktechnologie

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

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

Labor 3 - Datenbank mit MySQL

ARBEITSBLATT ZUR SQL-BEFEHLEN

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

DBSP. Vorlesung. Prof. Dr. rer. nat. Nane Kratzke. Unit. Praktische Informatik und betriebliche Informationssysteme

10 SQL-Basics: Erweiterte Abfragen mit SELECT Im Mittelpunkt dieses Kapitels steht nicht nur die einfache Auswahl von Spalten, sondern auch die

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Rückblick. SQL bietet viele Möglichkeiten zur Anfrageformulierung

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

SQL Intensivpraktikum SS 2008

Übung PL/SQL Trigger Lösungen

Kapitel 3: Datenbanksysteme

Inhaltsverzeichnis. Einleitung

Einführung in SQL Datenbanken bearbeiten

Datenbankabfragen und Datenmanipulation

SQL. Datenmanipulation. Datenmanipulationssprache. Ein neues Tupel hinzufügen. Das INSERT Statement

Informatik 12 Datenbanken SQL-Einführung

Oracle Database 12c: Introduction to SQL (ORA-D80174)

Datenbanksysteme Kapitel 5: SQL Data Manipulation Language

Datenmanagement I SoSe 2006 Aufgabenblatt 4

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

IBM DB2 für Unix/Linux/Windows SQL Grundlagen

SQL. Allgemeines CREATE TABLE DROP TABLE ALTER TABLE INSERT INTO UPADTE DELETE SELECT

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

SQL: Weitere Funktionen

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

1. Einleitung. SQL-Abfragen. 3. Das ERM der Übungsdatenbank. 2. Grundstruktur von SQL-Abfragen

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

8 DML (1) Daten abfragen

Bibliografische Informationen digitalisiert durch

Inhaltsverzeichnis. jetzt lerne ich

CREATE TABLE-Syntax

[1] DBS-exercice

Transkript:

Abfragen (Queries, Subqueries) Grundstruktur einer SQL-Abfrage (reine Projektion) SELECT [DISTINCT] {* Spaltenname [[AS] Aliasname ] Ausdruck} * ; Beispiele 1. Auswahl aller Spalten SELECT * ; 2. Auswahl bestimmter Spalten SELECT Spaltenname1, Spaltenname2 ; 3. Auswahl bestimmter Spalten mit Definition von Aliasnamen SELECT Spaltenname1 as MeineSpalte1, Spaltenname2 as MeineSpalte2 ; 4. Verwendung von Ausdrücken SELECT Spaltenname1 + 100 / 26 as MeineBerechnung1 ; Hinweis: Spaltenname1 muss hierfür numerisch definiert sein. 5. Auswahl mit Unterdrückung von Doppelnennungen SELECT DISTINCT Spaltenname2 ; SQL-Abfragen mit Selektion SELECT [DISTINCT] {* Spaltenname [[AS] Aliasname ] Ausdruck} * WHERE Bedingungen; Hinweis: Eine Bedingung wird mit Hilfe von Vergleichsoperatoren definiert. Die gängigsten Vergleichsoperatoren sind: = > >= < <= <> IS NULL IS NOT NULL BETWEEN...AND... IN (Liste) und LIKE Mehrere Bedingungen werden über die logischen Operatoren AND, OR und NOT miteinander verknüpft.

Beispiele für die Bedingungen in der WHERE-Klausel Hinweis: der Where-Klausel steht ein SELECT FROM vor. 1. Auswahl der Zeilen, wo der Spaltenname1 null ist: WHERE Spaltenname1 is null; 2. Auswahl der Zeilen, wo die Spalteninhalte von Spaltenname1 und Spaltenname2 gleich sind: WHERE Spaltenname1 = Spaltenname2; 3. Auswahl der Zeilen, wo die Spalteninhalte von Spaltenname1 und Spaltenname2 gleich sind und der Wert von Spaltenname3 nicht null sein darf: WHERE Spaltenname1 = Spaltenname2 AND Spaltenname3 is not null; 4. Auswahl der Zeilen, wo die Spalteninhalte von Spaltenname1 und Spaltenname2 gleich sind oder der Wert von Spaltenname3 null ist: WHERE Spaltenname1 = Spaltenname2 OR Spaltenname2 is null; Verwendung von Sortierung SELECT [DISTINCT] {* Spaltenname [[AS] Aliasname ] Ausdruck} * [WHERE Bedingungen] [ORDER BY {Spaltenname}* Spaltenposition Ausdruck] [ASC DESC]; Hinweis: ASC aufsteigende Sortierung (DEFAULT) DESC absteigende Sortierung ORDER BY steht, wenn es verwendet wird, IMMER zuletzt im SQL-Statement! Die Spalte, nach der sortiert wird, muss nicht in der SELECT-Klausel vorkommen. Join s Equijoin FROM Tabelle1 TabellenAlias1, Tabelle2 TabellenAlias2 WHERE TabellenAlias1.Spalte1 = TabellenAlias2.Spalte1; oder alternativ: FROM (Tabelle1 TabellenAlias1 [INNER] JOIN Tabelle2 TabellenAlias2 ON TabellenAlias1.Spalte1 = TabellenAlias2.Spalte1) WHERE ( Bedingungen ) ;

Outerjoin FROM Tabelle1 TabellenAlias1, Tabelle2 TabellenAlias2 WHERE TabellenAlias1.Spalte1 [(+)] = TabellenAlias2.Spalte1 [(+)]; (+) steht bei der Tabellenspalte, wo die fehlende Information durch NULL ergänzt werden soll. oder alternativ: FROM (Tabelle1 TabellenAlias1 [LEFT RIGHT FULL OUTER] JOIN Tabelle2 TabellenAlias2 ON TabellenAlias1.Spalte1 = TabellenAlias2.Spalte1) WHERE ( Bedingungen ) ; Gruppenfunktionen SELECT Spaltenname1, Gruppenfunktion(Spaltenname2),... [WHERE Bedingung(en)] [GROUP BY Gruppenausdruck] [HAVING Gruppenbedingung] [ORDER BY {Spaltenname} Ausdruck Aliasname} [ ASC DESC ] ]; Hinweis: Gruppenfunktionen können nicht in der WHERE-Klausen verwendet werden, hierfür gibt es die HAVING-Klausel, sie verhält sich wie die WHERE-Klausel, nur auf Gruppen bezogen. Gruppenfunktionsübersicht Gruppenfunktion Bedeutung AVG (Gruppenelement) Ermittelt den Durchschnittswert SUM (Gruppenelement) Ermittelt die Summe des Gruppenelements MIN (Gruppenelement) Ermittelt den kleinsten Wert d. Gruppenelements MAX (Gruppenelement) Ermittelt den größten Wert d. Gruppenelements STDDEV (Gruppenelement) Ermittelt den Wert der Standardabweichung VARIANCE (Gruppenelement) Ermittelt den Wert f. d. Varianz COUNT (Gruppenelement) Zählt die Werte d. Gruppenelements COUNT DISTINCT (Gruppenelement) Ermittelt die Anzahl unterschiedlicher Werte d. Gruppenelements COUNT (*) Ermittelt die Anzahl Zeilen in einer Tabelle Gruppenelement := Spalte Ausdruck

Beispiele für die Verwendung von Gruppenfunktionen Zählt die Anzahl Zeilen in Tabelle Tabellenname: SELECT COUNT(*) ; Zählt die Anzahl Zeilen für jeden Wert in Spaltenname1 in Tabelle Tabellenname: SELECT Spaltenname1, COUNT(*) GROUP BY Spaltenname1; Bildet für jedes Wertpaar Spaltenname1, Spaltenname2 die Summe von Spaltenname3 SELECT Spaltenname1, Spaltenname2, SUM(Spaltenname3) GROUP BY Spaltenname1, Spaltenname2; Bildet die Summe von Spaltenname1, den Durchschnittswert für Spaltenname1 und den größten Wert von Spaltenname2 aus Tabelle Tabellenname: SELECT SUM(Spaltenname1), AVG(Spaltenname1), MAX(Spaltenname2) ; Für jeden Wert von Spaltenname1 wird die Anzahl Zeilen ermittelt. Allerdings nur dann, wenn der maximale Wert von Spaltenname1 grösser als 100 ist. Die Ausgabe wird nach Spaltenname4 sortiert: SELECT Spaltenname1, COUNT(*) 1 WHERE Spaltenname3 is not null GROUP BY Spaltenname1, Spaltenname2 HAVING MAX(Spaltenname1) > 100 ORDER BY Spaltenname4;

Subqueries / Unterabfragen Subqueries können in folgenden SQL-Klauseln verwendet werden: SELECT, FROM, WHERE, HAVING implizit auch in der GROUP BY und ORDER BY-Klausel, da sich dort auf einen Wert bezogen werden kann. Subquery [WHERE Bedingung(en)] [GROUP BY Gruppenausdruck] [HAVING Gruppenbedingung] [ORDER BY {Spaltenname} Ausdruck Aliasname} [ ASC DESC ] ]; WHERE Bedingungen Subqueries, die einen Wert zurückliefern WHERE Spaltenname Operation (Select-Statement) [ AND... ]; Subqueries, die mehrere Werte zurückliefern Operatoren: IN; ANY; ALL; EXISTS WHERE Spaltenname {{=,>,...} [ANY ALL] IN } (SELECT Spaltenname [ WHERE Bedingung(en) ] ); WHERE (Spaltenname1, Spaltenname2,... ) [= IN] (SELECT Spaltenname1, Spaltenname2,... [ WHERE Bedingung(en) ] ); WHERE EXISTS (SELECT... [ WHERE Bedingung(en) ] ); FROM-Klausel (Inline View) 1 Aliasname1, ( GROUP BY... ) Aliasname2 WHERE Aliasname1.Spaltenname1 = Aliasname2.Spaltenname2 [ AND... ];

Data Manipulation Language DML DML-Kommandos verändern die Inhalte in Tabellen. Sie erzeugen, ändern und löschen Datenzeilen. Insert - Einfügen neuer Datensätze INSERT INTO Tabellenname [(Spalten-Liste)] VALUES ( Werte-Liste ) ; Datensätze einer Tabelle in eine andere Tabelle kopieren. INSERT INTO Tabellenname1 [(Spalten-Liste)] ( 2 [WHERE Bedingung(en)] ); Update - Ändern von Datensätzen UPDATE Tabellenname SET Spaltenname1 = Wert1, [Spaltenname2 = Wert2,... ] [WHERE Bedingung(en)]; Ändern von Datensätzen basierend auf anderen Tabellen UPDATE Tabellenname1 SET Spaltenname1 = ( 2 [WHERE Bedingung(en)]), Spaltenname2 = ( 3 [WHERE Bedingung(en)]); Delete - Löschen von Datensätzen DELETE [FROM] Tabellenname [WHERE Bedingung(en)] ; bzw. DELETE [FROM] Tabellenname WHERE Spaltenname= ( [WHERE Bedingung(en)] ); Truncate Table Tabellen löschen mit Speicherfreigabe TRUNCATE TABLE Tabellenname;

Data Definition Language DDL DDL-Kommandos erzeugen, ändern und löschen Datenbankobjekte. Weiterhin dienen sie dem Verwalten von Rechten. Create Table Tabellen erzeugen CREATE TABLE Tabellenname (Spaltenname1 Datentyp [DEFAULT Ausdruck] [, Spaltenname2 Datentyp [DEFAULT Ausdruck],... ]); Alter Table Tabellen verändern ALTER TABLE Tabellenname {ADD MODIFY} (Spaltenname1 Datentyp1 [DEFAULT Ausdruck] [, Spaltenname2 Datentyp2 [DEFAULT Ausdruck],... ]); ALTER TABLE Tabellenname DROP COLUMN Spaltenname1; Drop Table Tabellen löschen DROP TABLE Tabellenname; Transaktionssteuerung Anweisung COMMIT SAVEPOINT name ROLLBACK ROLLBACK TO SAVEPOINT name Bedeutung Beendet die akt. Transaktionund schreibt Datenänderungen fest. Markiert einen Savepoint innerhalt einer Transaktion Beendet die akt. Transaktion und verwirft alle durchgeführten Änderungen Beendet die Transaktion und verwirft alle durchgeführten Änderungen bis zum Savepoint Beispiel das Insert wird Rückgängig gemacht UPDATE ; SAVEPOINT update_done; -- Savepoint created INSERT ; ROLLBACK TO update_done; -- Rollback complete