SQL-Einführung Teil 2

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

SQL Intensivpraktikum SS 2008

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

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

Die Datenmanipulationssprache SQL

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

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

Art der Info: Technische Background Info Teil 3 (April 2002)

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

Oracle Analytic Functions

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

SQL-Befehlsliste. Vereinbarung über die Schreibweise

ACCESS SQL ACCESS SQL

SQL. Structured Query Language

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

Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL.

Sructred Query Language

SQL structured query language

Art der Info: Technische Background Info Teil 1 (April 2002)

Lösungen der Übungsaufgaben von Kapitel 10

Trigger schreiben. Überblick über Trigger. Datenbank Trigger: Beispiel. Aufbau eines Triggers

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

Microsoft Access 2010 SQL nutzen

SQL-Loader. Prof. Dr. Waldemar Rohde Dipl.-Ing. Jörg Höppner

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

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

SQL: Abfragen für einzelne Tabellen

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

Datenmanipulation in SQL. Select Anweisung

SQL. Komplexe Abfragen. SQL-Komplexe Abfragen. SQL-Komplexe Abfragen. Komplexe Abfragen verknüpfen mehrere Tabellen miteinander.

Vorlesung Datenbankmanagementsysteme

Informatik Datenbanken SQL-Einführung

Access Grundkurs. M. Eng. Robert Maaßen

Die SQL-Syntax für den Befehl CREATE TABLE sieht folgendermassen aus:

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

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

Einleitung. ROLLUP, CUBE und GROUPING. Markus Jägle Art der Info Technische Background Info (April 2002)

Informatik 12 Datenbanken SQL-Einführung

Wirtschaftsinformatik. SQL Abfragen und QBE. Unterrichtsskript. Version: 2.0

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

Labor 3 - Datenbank mit MySQL

INFORMATIONSUNTERLAGEN. Grundzüge der SQL-Programmierung. Vag 09/2005

Structured Query Language (SQL) 1

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

Analytische Funktionen erfolgreich eingesetzt

27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services

IV. Datenbankmanagement

CREATE TABLE-Syntax

Einführung in SQL mit Oracle

DATENBANKEN I. Einführung in Datenbanken Semester: IV. Semester 4. Mitgeschrieben von: Isabel Drost, If99w1

5.3 Datenänderung/-zugriff mit SQL (DML)

Einführung in die Wirtschaftsinformatik Kapitel 4: Relationale Datenbanksprachen: SQL

SQL. Abfragesprache Datenmanipulation - DML

SQL Intensivpraktikum SS 2008

Einführung in SQL Datenbanken bearbeiten

ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen

Teil 2: Einführung in das Relationale Modell und SQL

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

105.3 SQL-Datenverwaltung

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

5.8 Bibliotheken für PostgreSQL

Objektorientierte PL/SQL-Programmierung für RDBMS

Marcus Throll, Oliver Bartosch. Einstieg in SQL. Verstehen, einsetzen, nachschlagen. Galileo Press

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

SQL. Was ist SQL? SQL- Standards Grundregeln Die DDL Datenbanken erstellen Tabellen erstellen und ändern Spalten definieren Schlüssel definieren - 2 -

UEB. Übungen zum Seminar 4053

Oracle 10g Flashback. Andrea Held

Bibliografische Informationen digitalisiert durch

ARBEITSBLATT ZU SQL-BEFEHLEN

Views in SQL. 2 Anlegen und Verwenden von Views 2

Structured Query Language (SQL) als standardisierte Anfragesprache für relationale Datenbanken

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

Inhaltsverzeichnis. jetzt lerne ich

Kapitel 3: Datenbanksysteme

Unterabfragen (Subqueries)

Nähern wir uns der ersten SQL-Anweisung, indem wir die Möglichkeiten und einfache Anwendungen der Anweisung betrachten.

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

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Grundkonzepte von SQL

MySQL: Einfaches Rechnen.

2) Nennen Sie die Namen der 3 Ebenen des 3-Ebenen-Modells, und geben Sie an, was in jeder Ebene dargestellt wird.

SQL,Teil 3: Unterabfragen, Views & Berechnungen

Erste Schritte, um selber ConfigMgr Reports zu erstellen

Grober Überblick zu Datendefinitionsanweisungen in SQL

CARL HANSER VERLAG. Christopher Allen. Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank

zwei verschiedene Darstellungsformen derselben Abfrage.

Datenbankanfragen und -operationen mittels SQL

Einführung in die Wirtschaftsinformatik Akademisches Jahr 2006/07 Prof. Andreas Meier Assistentin: Andreea Ionas. SQL-Grundlagen

5. SQL: Erstellen von Tabellen. Erzeugen und Löschen von Tabellen. Umgang mit Bedingungen (Constraints) Einfügen und Löschen von Daten

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

SQL-Anweisungen. SELECT (SQL Data Query Language)

Online-Kurs 'Datenbanken und Datenmodellierung'

DB2 for z/os. Übungen zur Schulung

Transkript:

SQL-Einführung Teil 2 Prof. Dr. Waldemar Rohde Dipl.-Ing. Jörg Höppner 19.10.2006 1

Datenmanipulationssprache (DML) Select DML ermöglicht es Daten mit SELECT abzurufen UPDATE zu verändern Delete DML Update INSERT hinzuzufügen DROP zu löschen Insert (19.10.2006) 2

Anweisungselemente : SELECT FROM WHERE GROUP BY HAVING ORDER BY selektiert Spalten definiert die Tabelle/Tabellen selektiert aufgrund einer Suchbedingung bestimmte Zeilen der Tabelle(n) gruppiert Zeilen auf Basis gleicher Spaltenwerte selektiert nur Gruppen, die der HAVING-Bedingung genügen bestimmt die Reihenfolge der Zeilen obligatorisch obligatorisch optional optional optional optional (19.10.2006) 3

Syntax: <SELECT [ALL DISTINCT ] <Spaltenausdruck> [, <Spaltenausdruck>...] FROM Tabellenname [Abkürzung] [, Tabellenname [Abkürzung]]... [WHERE <Suchbedingung>] [GROUP BY Spaltenname [, Spaltenname]...] [HAVING <Suchbedingung > ] [ORDER BY <Sortierung> [, <Sortierung>]... ] (19.10.2006) 4

Spaltenausdrücke : Konstanten (numerisch oder Zeichen) z.b.: 5 oder `Weihnachtsmann` Attribute der beteiligten Tabellen einfache Beschreibung eindeutige Beschreibung z.b.: ename (einfach) oder emp.ename (eindeutig) Verknüpfungen von Konstanten und Attributwerte z.b.: 12*sal, (jahres_brutto-jahres_netto)/12 Funktionen von Attributwerten z.b.: round(sal) oder upper(ename) Gruppenfunktionen z.b.: avg(sal), max(sal), usw. (19.10.2006) 5

FROM Klausel: spezifiziert die Tabellen, aus denen die Attribute berechnet werden Um Tabellen mit einzubeziehen, die in anderen Schemata liegen, ist dem dem Tabellennamen das Schema voranzustellen z.b.: select ename from user_grp1_hbx.emp Zur Vereinfachung können Aliase eingesetzt z.b.: select e.ename from emp e; hier wird z.b. die Tabelle emp mit e abgekürzt. (19.10.2006) 6

FROM Klausel (Beispiel): SELECT * FROM emp; selektiert alle Attribute der Tabelle emp SELECT DISTINCT job FROM emp; alle verschiedenen Berufe werden angezeigt SELECT ename, hiredate, sal, comm FROM emp; die Spalten ename, hiredate, sal, comm werden angezeigt SELECT 10*sal FROM emp; das Attribut sal wird mit 10 faktorisiert angezeigt SELECT Mein Name ist ename und ich verdiene to_char(sal) Euros im Monat FROM emp; das Ergebnis ist eine Zeichenkette in Kombination mit Attributen (19.10.2006) 7

WHERE Klausel: definiert Filtern- oder Suchkriterien mit kleiner bis großer Komplexität mehrere Suchkriterien sind durch (AND, OR, NOT, Klammern) logisch verknüpfbar Vergleichsoperatoren (=,>,<...) Einschränkungen durch Aufzählungen von Werten (z.b. IN) Einschränkungen durch Bereichsfestlegungen (BETWEEN AND ) Zeichenketten-Vergleichsoperatoren mit Schablonen (z.b. LIKE) (19.10.2006) 8

WHERE Klausel (Syntax): WHERE-Komponente := WHERE <Suchbedingung> <Suchbedingung> := { <Ausdruck> <Vergleichsoperator> <Ausdruck> <Ausdruck> [NOT] BETWEEN <Ausdruck> AND <Ausdruck> <alphanumerischer Ausdruck> [NOT] LIKE <Schablone> <Ausdruck> IS [NOT] NULL <Ausdruck> [NOT] IN (Konstante [, Konstante]...) NOT < Kriterium > < Kriterium > AND < Kriterium > < Kriterium > OR < Kriterium > ( < Kriterium >) } Vergleichsoperatoren (<,>,=,>=,<=, etc) Schablonen ( %, _ ) (19.10.2006) 9

WHERE Klausel (Beispiel): SELECT ename,deptno,job FROM emp WHERE deptno<=20; Selekiert Ename, deptno und job, wo deptno gleich oder kleiner 20 ist SELECT empno,ename,hiredate,comm,deptno FROM emp WHERE (job= MANAGER OR job= CLERK ) AND (deptno IN (10,20); Zeigt die gewählten Attribute, wenn job=manager oder CLERK ist und der Mitarbeiter gleichzeitig in der Abteilung (deptno) 10 oder 20 arbeitet. SELECT * FROM emp WHERE sal BETWEEN 2500 AND 3000; Alle Mitarbeiterdaten deren Gehalt (sal) zwischen 2500 und 3000 liegt SELECT * FROM emp WHERE ename LIKE K% ; oder SELECT * FROM emp WHERE ename LIKE KIN_ ; % alle Kombinationen beliebiger Länge _ alle einstelligen Zeichen werden eingesetzt. (19.10.2006) 10

ORDER BY Klausel: Zeilensortierung bei Abfrageergebnissen alphanumerisch (0-9, A-Z) numerisch ([-] unendlich bis [+]unendlich) Sortierreihenfolge aufsteigend ASC(ending) (voreingestellt) absteigend DESC(ending) Sortierung nach Spaltenname Spaltennummer Für die Sortierung können mehrere Spalten hinzugezogen werden Priorität geht von links nach rechts (19.10.2006) 11

ORDER BY Klausel (Beispiel): SELECT deptno,ename,job FROM emp ORDER BY deptno, ename; das Ergebnis der Abfrage wird zunächst nach deptno sortiert. Bei gleicher deptno erfolgt die Sortierung nach ename. SELECT deptno,ename,job FROM emp ORDER BY 1, 2; das Ergebnis der Abfrage wird zunächst nach 1. Attribut aufsteigend sortiert. Bei gleichen Werten der ersten Spalte erfolgt die weitere Sortierung nach dem 2. Attribut. SELECT deptno,ename,job FROM emp ORDER BY deptno ASC, ename DESC; das Ergebnis der Abfrage wird zunächst nach deptno aufsteigend sortiert. Bei gleicher deptno erfolgt die absteigendene Sortierung nach ename. (19.10.2006) 12

GROUP BY Klausel: Gruppiert Abfrageergebnisse nach Attributen Spaltenname Spaltennummer Gruppenfunktionen können auf die Tabellenzeilen angewandt werden Filterkriterien (über Having-Klausel) können Gruppenergebnisse einschränken (19.10.2006) 13

GROUP BY Klausel (Gruppenfunktionen): Funktion COUNT(Ausdruck) SUM(Ausdruck) AVG(Ausdruck) MAX(Ausdruck) MIN(Ausdruck) Bedeutung Anzahl der Werte z.b. in einer Spalte Summe der Werte z.b. in einer Spalte Mittelwert z.b. der Spalte größter Wert z.b. der Spalte kleinster Wert z.b. der Spalte (19.10.2006) 14

GROUP BY Klausel (Beispiel): SELECT deptno AS Abteilungsnummer, COUNT(ename) AS Anzahl FROM emp GROUP BY deptno; Liefert als Ergebnis Abteilungsnummern mit der Anzahl der dort beschäftigten Mitarbeiter Ergebnis: FIRMENNUMMER ANZAHL 10 3 20 5 30 6 SELECT deptno, AVG(sal),MAX(sal),MIN(sal),SUM(sal) Anzahl FROM emp GROUP BY deptno; Liefert als Ergebnis Abteilungsnummern mit berechneten Durchschnitts-, Maximal-, Minimal- und Summenwerten der Mitarbeitereinkünfte (sal) Ergebnis: DEPTNO AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL) 10 2916,66667 5000 1300 8750 20 2175 3000 800 10875 30 1566,66667 2850 950 9400 (19.10.2006) 15

HAVING Klausel: Schränkt Gruppenergebnisse ein Weggelassene Having Klausel bewirkt die Anzeige aller Gruppen Der Ausdruck für die Bedingung dar keine Unterabfrage sein Beispiel: SELECT deptno AS Abteilungsnummer, COUNT(ename) AS Anzahl FROM emp GROUP BY deptno HAVING COUNT(ename)>5 ; Liefert als Ergebnis Abteilungsnummern mit der Anzahl der dort beschäftigten Mitarbeiter mit der Einschränkung, dass mehr als 5 Mitarbeiter dort arbeiten. Ergebnis: FIRMENNUMMER ANZAHL 30 6 (19.10.2006) 16

JOIN: Notwendigkeit Informationen sind auf mehreren Tabellen verteilt ist eine regelbasierte Beziehung zwischen einer oder zwei Tabellen) I.d.R. werden Primärschlüssel der Parenttabelle und Fremdschlüssel der Childtabelle herangezogen Mehrere Attribute können für die Beziehungsregel verwendet werden die Attribute, über die die Beziehung definiert wird, müssen vom gleichen Datenyp sein Join über n-tabellen benötigt n-1 Beziehungen Ausprägungen sind: Equi-, Non-Equi-, Self- und Outer-Join jeder Operator (=,<,>,=<,=>, ) ist für das Join-Kriterium erlaubt in einer SELECT-Anweisung können Attribute aus allen verknüpften Tabellen abgerufen werden. Die Eindeutigkeit der Spalten ist Bedingung (19.10.2006) 17

JOIN (Beispiel): Das Datenmodell beinhaltet 2 Entitäten: EMP(Mitarbeiter) und DEPT(Abteilungen) EMP trägt als Fremdschlüssel den Primärschlüssel (DEPTNO) der Tabelle (DEPT) Die Kardialität ist 1 : n 1 Abteilung beschäftigt keinen, einen oder mehrere Mitarbeiter 1 Mitarbeiter gehört aber nur zu einer Abteilung (19.10.2006) 18

JOIN (Beispiel Equi-Join): SELECT ename, job, dname, loc FROM emp, dept WHERE emp.deptno=dept.deptno; Alle Angestellten, die in einer Abteilung arbeiten, werden angezeigt. (emp.deptno hat eine Entsprechung in dept.deptno). Hat eine Abteilung keine Mitarbeiter, so wäre diese Abteilung nicht sichtbar Man spricht auch von einen Inner-Join. ENAME JOB DNAME LOC ---------- --------- -------------- ------------- CLARK MANAGER ACCOUNTING NEW YORK KING PRESIDENT ACCOUNTING NEW YORK MILLER CLERK ACCOUNTING NEW YORK SMITH CLERK RESEARCH DALLAS ADAMS CLERK RESEARCH DALLAS FORD ANALYST RESEARCH DALLAS SCOTT ANALYST RESEARCH DALLAS JONES MANAGER RESEARCH DALLAS ALLEN SALESMAN SALES CHICAGO BLAKE MANAGER SALES CHICAGO MARTIN SALESMAN SALES CHICAGO JAMES CLERK SALES CHICAGO TURNER SALESMAN SALES CHICAGO WARD SALESMAN SALES CHICAGO (19.10.2006) 19

JOIN (Beispiel Outer-Join): SELECT ename, job, dname, loc FROM emp, dept WHERE emp.deptno(+)=dept.deptno; Alle Abteilungen werden zunächst mit Ihren Mitarbeitern aufgelistet. Hier hat beispielsweise die Abteilung Operations keine Mitarbeiter und so werden die Ergebnisspalten mit Nullwerten aufgefüllt, so dass trotzdem die Abteilung sichtbar wird. ENAME JOB DNAME LOC ---------- --------- -------------- ------------- CLARK MANAGER ACCOUNTING NEW YORK KING PRESIDENT ACCOUNTING NEW YORK MILLER CLERK ACCOUNTING NEW YORK SMITH CLERK RESEARCH DALLAS ADAMS CLERK RESEARCH DALLAS FORD ANALYST RESEARCH DALLAS SCOTT ANALYST RESEARCH DALLAS JONES MANAGER RESEARCH DALLAS ALLEN SALESMAN SALES CHICAGO BLAKE MANAGER SALES CHICAGO MARTIN SALESMAN SALES CHICAGO JAMES CLERK SALES CHICAGO TURNER SALESMAN SALES CHICAGO WARD SALESMAN SALES CHICAGO OPERATIONS BOSTON Das (+) kennzeichnet die Tabelle, deren Attribute mit Nullwerten aufgefüllt werden (19.10.2006) 20

JOIN (Beispiel Self-Join): SELECT Mitarbeiter.ename Mitarbeitername, Chef.ename Chefname FROM emp Mitarbeiter, emp Chef WHERE Mitarbeiter.mgr=Chef.empno(+); Die Tabelle emp wird zweimal angesprochen, demnach mit sich selbstverknüpft. Dieses ist realisierbar durch die zwei Alias-Namen Mitarbeiter und Chef. King ist Geschäftsführer und hat keinen Chef Mitarbeitername Chefname ---------- ---------- SCOTT JONES FORD JONES ALLEN BLAKE WARD BLAKE JAMES BLAKE TURNER BLAKE MARTIN BLAKE MILLER CLARK ADAMS SCOTT JONES KING CLARK KING BLAKE KING SMITH FORD KING Mitarbeiter logisches Modell Chef (19.10.2006) 21

Insert Anweisung Syntax: INSERT INTO Tabellenname [(Spaltenname [,Spaltenname] )] {VALUES (Konstante [, Konstante] ) <SELECT-Anweisung> } Die INSERT-Anweisung fügt Daten in eine Tabelle ein. Bedingung Die Anzahl, die Datentypen und die Reihenfolge der zu befüllenden Spalten müssen mit der Konstantenfolge bzw. mit dem Resultat der SELECT-Anweisung übereinstimmen. Fehlen die Spaltennamen, so müssen die Konstanten, der Menge und der Reihenfolge nach, der physikalischen Tabellenstuktur entsprechen. Selbiges gilt für die SQL-Anweisung Es dürfen keine Schlüsselverletzungen vorliegen. (19.10.2006) 22

Insert Anweisung Beispiel: INSERT INTO emp (empno,deptno,ename,job) VALUES (9999,40, Rohde, DOZENT ); 9999 -> empno; 40 -> deptno; Rohde ->ename und DOZENT -> job INSERT INTO emp VALUES (9999,40, Rohde, DOZENT, KING, 01.01.2004,3000,0); die Konstanten werden in die Tabelle überführt, ohne dass die Spaltennamen explizit aufgelistet werden müssen. INSERT INTO emp_sicherung SELECT * FROM emp; die Tabelle emp_sicherung wird mit dem Ergebnis der SELECT-Anweisung befüllt. (19.10.2006) 23

Update Anweisung Syntax: UPDATE Tabellenname SET <Wertzuweisung> [, <Wertzuweisung> )] [WHERE <Suchbedingung>] <Wertzuweisung> := Spaltenname = { <Ausdruck> NULL } Die Update-Anweisung verändert Daten in Tabellen. Bedingung Bei der Wertzuweisung müssen die Datentypen passen Es dürfen sich bei Änderungen keine Schlüsselverletzungen ergeben. Mit der WHERE-Klausel werden die Datensätze festgelegt, die von der Änderung betroffen sind. ACHTUNG!!! Wird die WHERE-Klausel weggelassen, so werden alle Datensätze geändert. Dieses ist nicht immer im Interresse des Anwenders. (19.10.2006) 24

Update Anweisung Beispiel: UPDATE emp SET sal = sal * 1,05; alle Mitarbeiter erhalten eine 5% Gehaltserhöhung UPDATE emp SET sal = sal * 1,05 WHERE deptno = 20; alle Mitarbeiter der Abteilung 20 erhalten eine 5% Gehaltserhöhung UPDATE emp SET deptno = 20 WHERE deptno = 10 AND job = CLERK ; alle Mitarbeiter der Abteilung 10 mit dem Job CLERK müssen nun in die Abteilung 20 umziehen (19.10.2006) 25

Delete Anweisung Syntax: DELETE FROM Tabellenname [WHERE <Suchbedingung>] Die Delete-Anweisung dient dem Löschen von Datensätzen aus Tabellen. Tabellenstrukturen bleiben hiervon unbeeinflusst. Bedingung Es darf kein Fremdschlüssel auf den zu löschenden Datensatz zeigen (19.10.2006) 26

Delete Anweisung Beispiel: DELETE FROM emp; alle Mitarbeiter werden gelöscht DELETE FROM emp WHERE deptno = 20; alle Mitarbeiter der Abteilung 20 werden gelöscht DELETE FROM emp WHERE ename LIKE S% ; alle Mitarbeiter deren Name mit S beginnt werden gelöscht (19.10.2006) 27