2. sql-grundlagen ag dbis university of kaiserslautern ... · pdf...

32
Datenbankadministration 2. SQL-Grundlagen AG DBIS University of Kaiserslautern, Germany Karsten Schmidt [email protected] (Vorlage TU-Dresden) Wintersemester 2008/2009 K. Schmidt 2. SQL-Grundlagen

Upload: phamthu

Post on 07-Feb-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Datenbankadministration2. SQL-Grundlagen

AG DBISUniversity of Kaiserslautern, Germany

Karsten Schmidt [email protected]

(Vorlage TU-Dresden)

Wintersemester 2008/2009

K. Schmidt 2. SQL-Grundlagen

SQL

SQL (Structured Query Language)

deskriptive Anfragespracheangelehnt an die englische Umgangssprache

Enhalt

DQL (data query language): DatenbankanfrageDML (data manipulation language): DatenmanipulationDDL (data definition language): DatendefinitionDCL (data control language): Rechteverwaltung

SQL-Standard

SQL/86, SQL/89, SQL/92 (=SQL2), SQL/99, SQL:2003(=SQL3)Part 1: SQL/Framework (Aufbau des Standards)Part 2: SQL/FoundationPart 3: SQL/CLI (call level interface)Part 4: SQL/PSM (persistent storage modules)...

K. Schmidt 2. SQL-Grundlagen

DB2-Datenobjekte

Datentyp (TYPE)Defintionsbereich eines Attributesfest eingebaut (built-in) oder nutzerdefiniert (user-defined)

Relation (TABLE)ungeordnete Menge von Tupelnpermanent oder temporar

Sicht (VIEW)virtuelle Relationz. B. Vereinfachung von Anfragen, nutzerspezifischeDatendarstellung

Index (INDEX)primar oder sekundarDatenstruktur zum Ablegen / Auffinden von Datenauch: Sicherstellung der Eindeutigkeit, Vorsortierung

u.a. Datenbank (DATABASE), Tabellenbereiche (TABLESPACE),Schema (SCHEMA), Pufferspeicher (BUFFERPOOL)...

K. Schmidt 2. SQL-Grundlagen

K. Schmidt 2. SQL-Grundlagen

SQL

SQL - Datenbankabfragen (DQL)

K. Schmidt 2. SQL-Grundlagen

SELECT-Anweisung

SELECT-Anweisung

SELECT [DISTINCT] <attribute-list> → Projektion

FROM <table-name> [AS <alias>], ... → Kartesisches Produkt

WHERE <predicate-list> → Selektion auf Tupelebene

GROUP BY <attribute-list> → Gruppierung

HAVING <predicate-list> → Selektion a. Gruppenebene

ORDER BY <attribute> [ASC|DESC], ... → Sortierung

FETCH FIRST <k> ROWS ONLY → Top-k (Limit-Anweisung)

Beispiele fur Selektionsbedingungen

Mustersuche in ZeichenkettenWHERE R NAME [NOT] LIKE ’A%’BereichssucheWHERE R REGIONKEY [NOT] BETWEEN 1 AND 3NULL-WerteWHERE R COMMENT IS [NOT] NULL

K. Schmidt 2. SQL-Grundlagen

SELECT-Anweisung

Beispiel: Gesamtumsatz nach LandernSELECT N_NAME AS NAME, SUM(O_TOTALPRICE) AS TURNOVER

FROM ORDERS, CUSTOMER, NATION

WHERE O_CUSTKEY = C_CUSTKEY

AND C_NATIONKEY = N_NATIONKEY

GROUP BY N_NAME

HAVING SUM(O_TOTALPRICE) > 10000000

ORDER BY NAME

ErgebnisNAME TURNOVERARGENTINA 129997977.11CANADA 44510722.92CHINA 20213511.86EGYPT 66482178.24ETHIOPIA 12322553.22INDIA 16368711.10JORDAN 273941626.19MOROCCO 1093739712.60PERU 20573003.30SAUDI ARABIA 26104818.42

K. Schmidt 2. SQL-Grundlagen

Verbundoperationen

Innerer Verbund (inner join)

standardmaßige Verbundartnur Tupel mit Verbundpartner werden in ErgebnisaufgenommenBeispiel

SELECT MITARBEITER.Name, ABT.Name, ABT.Chef

FROM MITARBEITER, ABT

WHERE MITARBEITER.Abteilung = ABT.Name

MITARBEITER.Name ABT.Name ABT.ChefPaul Verwaltung PaulMaik Produktion Maik

MITARBEITERName Abteilung

Paul VerwaltungFritz NULL

Maik Produktion

ABTName Chef

Verwaltung PaulProduktion MaikIT NULL

K. Schmidt 2. SQL-Grundlagen

Verbundoperationen

Außerer Verbund (outer join)

auch Tupel ohne Verbundpartner werden aufgenommenAttribute der anderen Relation werden mit NULL-Werenaufgefullt

LEFT OUTER JOIN

alle Tupel der linken Relation erscheinen im Verbundergebnis

SELECT MITARBEITER.Name, ABT.Name, ABT.Chef

FROM MITARBEITER LEFT OUTER JOIN ABT

ON MITARBEITER.Abteilung = ABT.Name

MITARBEITER.Name ABT.Name ABT.ChefPaul Verwaltung PaulMaik Produktion MaikFritz NULL NULL

K. Schmidt 2. SQL-Grundlagen

Verbundoperationen

RIGHT OUTER JOIN

alle Tupel der rechten Relation erscheinen im Verbundergebnis

SELECT MITARBEITER.Name, ABT.Name, ABT.Chef

FROM MITARBEITER RIGHT OUTER JOIN ABT

ON MITARBEITER.Abteilung = ABT.Name

MITARBEITER.Name ABT.Name ABT.ChefPaul Verwaltung PaulMaik Produktion MaikNULL IT NULL

K. Schmidt 2. SQL-Grundlagen

Verbundoperationen

FULL OUTER JOIN

alle Tupel erscheinen im Verbundergebnis

SELECT MITARBEITER.Name, ABT.Name, ABT.Chef

FROM MITARBEITER FULL OUTER JOIN ABT

ON MITARBEITER.Abteilung = ABT.Name

MITARBEITER.Name ABT.Name ABT.ChefPaul Verwaltung PaulMaik Produktion MaikFritz NULL NULL

NULL IT NULL

K. Schmidt 2. SQL-Grundlagen

Mengenoperationen

Mengenoperationen

auf Relationen mit gleichem SchemaVereinigung (UNION), Subtraktion (EXCEPT), Schnittmenge(INTERSECT)Mengensemantik (z.B. UNION vs. Multimenge (UNION ALL)Beispiel

SELECT R_NAME FROM REGION

UNION

SELECT ’NORTH POLE’ FROM TABLE.TABLEDUMMY

1AFRICAAMERICAASIAEUROPEMIDDLE EASTNORTH POLE

K. Schmidt 2. SQL-Grundlagen

Fallunterscheidung

CASE-Ausdruck

Fallunterscheidungin SELECT-, WHERE- oder GROUP BY-Klausel verwendet

SELECT P_NAME,

CASE WHEN P_SIZE < 10 THEN ’SMALL’

WHEN P_SIZE < 20 THEN ’NORMAL’

ELSE ’BIG’

END AS SIZE

FROM PART

P NAME SIZEgoldenrod SMALLfrosted orange turquoise dim chocolate NORMALroyal lace plum spring coral BIG...

Achtung: Reihenfolge der Bedingungen beachten!

K. Schmidt 2. SQL-Grundlagen

Modularisieren von Anfragen

Modularisieren von AnfragenUnterabfrage (WHERE)Nested Table Expression (FROM)(Scalar Full Select (SELECT, WHERE, HAVING))

Unterabfrage (subquery)

liefert Relation als Ergebnisin WHERE-Klausel zur Existenzuberprufung verwendet

WHERE <expression> [NOT] IN|<|>|... [ALL|SOME|ANY] (<subquery>)

K. Schmidt 2. SQL-Grundlagen

Modularisieren von Anfragen

unkorrelierte UnterabfrageSELECT N_NAME FROM NATION WHERE N_REGIONKEY IN (

SELECT R_REGIONKEY FROM REGION WHERE R_NAME = ’EUROPE’)

N NAMEFRANCELGERMANYROMANIARUSSIA...

korrelierte UnterabfrageSELECT R_NAME FROM REGION WHERE R_REGIONKEY NOT IN (

SELECT N_REGIONKEY FROM NATION

WHERE N_REGIONKEY = R_REGIONKEY AND N_NAME LIKE ’A%’)

R NAMEASIAEUROPEMIDDLE EAST

K. Schmidt 2. SQL-Grundlagen

Modularisieren von Anfragen

Nested Table Expressionliefert Relation als Ergebnisin FROM-Klausel als Ergebnisrelation verwendetmuss benannt werden (AS)

SELECT N_NAME FROM NATION AS T1,

(SELECT R_REGIONKEY FROM REGION

WHERE R_NAME = ’EUROPE’) AS T2

WHERE T1.N_REGIONKEY = T2.R_REGIONKEY

N NAMEFRANCELGERMANYROMANIARUSSIAUNITED KINGDOM

K. Schmidt 2. SQL-Grundlagen

SQL - Erweiterung fur OLAPOnline Analytical Processing

K. Schmidt 2. SQL-Grundlagen

OLAP Funktionalitat

Online Analyitcal Processing (OLAP)Gemeinsamer Standardisierungsvorschlag von IBM und OracleUmfasst

Erweiterte GruppierungsfunktionalitatAnalytische Funktionen (analytic functions)

Ziel: Unterstutzung von Managemententscheidungen (decisionsupport)u.a. integriert in IBM DB2 und Oracle DBMS

K. Schmidt 2. SQL-Grundlagen

Einfache Gruppierung nach SQL-Standard

Gruppierung (GROUP BY)

Zusammenfassung von Tupeln mit gleichen Auspragungen inden Gruppierungsattributen zu einem neuen TupelAggregation fur NichtgruppierungsattributeIm SELECT-Teil durfen nur Gruppierungsattribute undAggregationen bzw. Konstanten auftretenAggregationsfunktionen: SUM(), MAX(), MIN(), COUNT(), AVG(),STDDEV()

RJahr Quartal Umsatz2004 1 102004 2 202004 3 102004 4 202005 1 30

SELECT Jahr, SUM(Umsatz)FROM RGROUP BY Jahr

ErgebnisJahr Summe2004 602005 30

K. Schmidt 2. SQL-Grundlagen

GROUPING SETS

Gruppierungsmengen (GROUPING SETS)

Gruppierung nach mehreren Kriterien gleichzeitig

GROUP BY GROUPING SET ((<attribute-list>), ...)

Angabe aller gewunschten Gruppierungskombinationennicht notwendigerweise disjunkt (Multimenge)leere Menge () entspricht keiner Gruppierung (Superaggregat)

RJahr Quartal Umsatz2004 1 102004 2 202004 3 102004 4 202005 1 30

SELECT Jahr,Quartal,SUM(Umsatz)FROM RGROUP BY GROUPING SETS ((), (Jahr) , (Jahr, Quartal)

)

ErgebnisJahr Quartal Summe

- - 902004 - 60

2005 - 30

2004 1 10

2004 2 20

2004 3 10

2004 4 20

2005 1 30

K. Schmidt 2. SQL-Grundlagen

CUBE

CUBE

Berechnung aller Teilmengen fur eine Menge vonGruppierungsattributen (Potenzmenge)GROUP BY CUBE (<attribute-list>)

Bei n Gruppierungsattributen alle 2n Gruppierungskombiniationen

RJahr Quartal Umsatz2004 1 102004 2 202004 3 102004 4 202005 1 30

SELECT Jahr,Quartal,AVG(Umsatz)FROM RGROUP BY CUBE ( Jahr , Quartal )

ErgebnisJahr Quartal AVG

- - 18- 1 20

- 2 20

- 3 10

- 4 20

2004 - 15

2005 - 30

2004 1 10

2004 2 20

2004 3 10

2004 4 20

2005 1 30

K. Schmidt 2. SQL-Grundlagen

ROLLUP

ROLLUP

Hierarchische multidimensionale GruppierungGROUP BY ROLLUP (<attribute-list>)

ROLLUP (A1, A2, ..., AN)= GROUPING SET ((), (A1), (A1, A2), ..., (A1, A2, ..., AN))Anwendung bei funktionaler Abhangigkeit zwischen Attributen

z.B. Land bestimmt den Kontinent eindeutig:ROLLUP (R_REGIONKEY, N_NATIONKEY)

RJahr Quartal Umsatz2004 1 102004 2 202004 3 102004 4 202005 1 30

SELECT Jahr,Quartal,SUM(Umsatz)FROM RGROUP BY ROLLUP ( Jahr , Quartal )

ErgebnisJahr Quartal Summe

- - 902004 - 60

2005 - 30

2004 1 10

2004 2 20

2004 3 10

2004 4 20

2005 1 30

K. Schmidt 2. SQL-Grundlagen

GROUPING-Funktion

GROUPING-Funktion

Unterscheidung von systemseitig generierten und in den Datenvorhandenen NULL-WertenRuckgabewert

0 Attribut ist an aktueller Gruppierung beteiligt1 Attribut ist nicht an aktueller Gruppierung beteiligt

RJahr Quartal Umsatz2004 1 102004 2 202004 3 102004 4 202005 1 302005 - 30

SELECT Jahr,Quartal,SUM(Umsatz),GROUPING(Jahr),GROUPING(Quartal)

FROM RROLLUP ( Jahr , Quartal )

ErgebnisJahr Quartal Summe

- - 120 1 12004 - 60 0 1

2005 - 60 0 1

2004 1 10 0 0

2004 2 20 0 0

2004 3 10 0 0

2004 4 20 0 0

2005 1 30 0 0

2005 - 30 0 0

NULL-Werte in den Daten

K. Schmidt 2. SQL-Grundlagen

DQL-Zusammenfassung

SQL (Structured Query Languag)deskriptive Anfragespracheangelehnt an die englische Umgangssprache

DQL (Data Query Languag)Sprache fur Datenbankabfragenfeste StrukturJoinsMengenoperationenAggregationsfunktionenOLAP-Erweiterungen

erweiterte Gruppierungsmoglichkeiten(Analytische Funktionen)

K. Schmidt 2. SQL-Grundlagen

SQL - Datenmanipulation (DML)SQL - Datendefinition (DDL)

K. Schmidt 2. SQL-Grundlagen

SQL-DML

Einfugen von TupelnINSERT INTO REGION VALUES (6,’NORTHPOLE’,’’)

INSERT INTO NATION (N_NATIONKEY, N_NAME, N_REGIONKEY)

SELECT NATIONKEY, NAME, 6 FROM NORTHPOLE_NATIONS

Verandern von TupelnUPDATE LINEITEM

SET L_DISCOUNT = L_DISCOUNT + 0.01

WHERE L_SUPPLEY = 12

Loschen von TupelnDELETE FROM REGION WHERE R_REGIONKEY > 5

K. Schmidt 2. SQL-Grundlagen

Definition von Datenbankobjekten

Definition von Datenbankobjekten (s. Folie 3)Erzeugen von Datenbankobjekten: CREATE-Statement

CREATE TABLE REGION (

R_REGIONKEY INTEGER NOT NULL PRIMARY KEY,

R_NAME CHAR(25) NOT NULL,

R_COMMENT VARCHAR(152)

)

Loschen von Datenbankobjekten: DROP-Statement

DROP TABLE REGION

Verandern von Datenbankobjekten: ALTER-Statement

ALTER TABLE REGION ADD COLUMN R_SIZE INT

K. Schmidt 2. SQL-Grundlagen

Sichten

Sicht (View)

virtuelle Relation zur Vereinfachung von Anfragen bzw.nutzerspezifischen Datendarstellungauch Datenschutz durch Ausblenden von Tupeln / AttributenSpezifikation des Inhaltes durch SQL-Anfrage

CREATE VIEW CUST_AMERICA AS

SELECT CUSTOMER.*

FROM CUSTOMER, NATION, REGION

WHERE C_NATIONKEY = N_NATIONKEY

AND N_REGIONKEY = R_REGIONKEY

AND R_NAME = ’AMERICA’

SELECT * FROM CUST_AMERICA

K. Schmidt 2. SQL-Grundlagen

Integritiatsbedingungen

Integritiatsbedingungen (constraints)Primarschlussel, Fremdschlussel, Disjunktheit (UNIQUE),wertebasiert (CHECK)ALTER TABLE <table-name> ADD CONSTRAINT

<constraint-name>

PRIMARY KEY (<attribute-list>)

FOREIGN KEY (<attribute-list>) REFERENCES

<table-nm>(<attr-list>)

UNIQUE (<attribute-list>)

CHECK (<predicate>)

BeispielALTER TABLE REGION

ADD CONSTRAINT MAX5 CHECK (R_REGIONKEY BETWEEN 1 AND 5)

K. Schmidt 2. SQL-Grundlagen

Datumsfunktionen

K. Schmidt 2. SQL-Grundlagen

Datumsfunktionen

Datumsfunktionenoft als Gruppierungsattribute verwendetanwendbar auf alle DATE, TIME und TIMESTAMP AttributeYEAR (<attribute>)

MONTH (<attribute>)

DAY (<attribute>)

HOUR (<attribute>)

MINUTE (<attribute>)

SECONS (<attribute>)

...

Beispiel:SELECT YEAR(o_orderdate), SUM(o_totalprice)

FROM ORDERS

GROUP BY YEAR(o_orderdate)

K. Schmidt 2. SQL-Grundlagen

Zusammenfassung

SQLStandardabfragesprache fur relationale DatenbanksystemeDDL, DQL, DML, DCLOLAP-ErweiterungenDatumsfunktionen

Datenbankobjekteverschiedene Komponenten einer Datenbank

Sichtenvirtuelle Relationen

Integritatsbedingungensichern die Integritat der Daten

K. Schmidt 2. SQL-Grundlagen