Beruflich Dokumente
Kultur Dokumente
Inforamtionssysteme - SQL PDF
Inforamtionssysteme - SQL PDF
Seite22
Kapitel 2:2SQL2I
Kompakte Wiederholung ausgewhlter Aspekte
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
Inhalt
2.12 Vorbemerkung
2.2 Datenunabhngigkeit von2Anwendungsprogrammen
2.32 BeispielQTabellen,2ERQModell2und2LegoTrailerQTeilebersicht
2.4 DBQAnfragen
2.5 Systematische Konstruktion von2JoinQAnfragen
2.6 DBQManipulationsoperationen
2.7 DBQSchemaQOperationen
2.8 Indexe
2.9 Abschlieende Bemerkungen
Seite23
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.11Vorbemerkungen
Lernziele
! Dieses2Kapitel2ist2ein2Auszug2aus2dem2korrespondierenden2 DatenbankQKapitel2
der2Vorlesung2Programmierung1von1Systemen2(PvS)
! Es2dient2in2kompakter2Form2der1Auffrischung1im1Selbststudium1der2fr2das2
Folgende2 relevanten2SQL<Kenntnissed2 das2entsprechende2 Wissen2wird2im2
Folgenden2 als2bekannt2vorausgesetzt
! An2einigen2Stellen2haben2wir2kleinere2Ergnzungen vorgenommen,2die2wir2
entsprechend2als2solche2gekennzeichnet2haben
! Ergnzende Hinweise
! Fr2die2Beispiele2sowie2bungen2 zu2diesem2Kapitel2verwenden2wir2Derby mit2
einer2vereinfachten2Version2der2LegoTrailerQDatenbank2 (Schema2Simple)
! Fr2die2Realisierung2prozessorientierter IS2werden2wir2spter2ebenfalls2Derby mit2
dem2SQL1Explorer1als2graphisches2Interface2verwendend2hier2werden2wir2mit2
einer2erweiterten2Version2der2LegoTrailerQDatenbank2arbeiten2
! Derby2verwendet2im2Wesentlichen2die2StandardQSQLQSyntaxd2auf2einige2
Unterschiede2wird2im2Folgenden2 hingewiesen2
!
Seite24
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
Inhalt
2.12 Vorbemerkung
2.2 Datenunabhngigkeit von2Anwendungsprogrammen
2.32 BeispielQTabellen,2ERQModell2und2LegoTrailerQTeilebersicht
2.4 DBQAnfragen
2.5 Systematische Konstruktion von2JoinQAnfragen
2.6 DBQManipulationsoperationen
2.7 DBQSchemaQOperationen
2.8 Indexe
2.9 Abschlieende Bemerkungen
Seite25
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.21Datenunabhngigkeit von1Anwendungsprogrammen
Entsprechung in1relationalen DBMS
virtuelle2Relationen,2Sichten
(CREATE2VIEW2)
logisches2Schema
(CREATE2TABLE2)
ANSI/SPARC13<Schema<Architektur
Festlegung/nderung2 der
phys.2Speicherungsform2fr2
Relation
CREATE2INDEX2
CREATE2TABLESPACE2
Seite26
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
Inhalt
2.12 Vorbemerkung
2.2 Datenunabhngigkeit von2Anwendungsprogrammen
2.32 BeispielQTabellen,2ERQModell2und2LegoTrailerQTeilebersicht
2.4 DBQAnfragen
2.5 Systematische Konstruktion von2JoinQAnfragen
2.6 DBQManipulationsoperationen
2.7 DBQSchemaQOperationen
2.8 Indexe
2.9 Abschlieende Bemerkungen
Seite27
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.31Beispiel<Tabellen,1ER<Modell1und1LegoTrailer<Teilebersicht
Seite28
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
Inhalt
2.12 Vorbemerkung
2.2 Datenunabhngigkeit von2Anwendungsprogrammen
2.32 BeispielQTabellen,2ERQModell2und2LegoTrailerQTeilebersicht
2.4 DBQAnfragen
2.5 Systematische Konstruktion von2JoinQAnfragen
2.6 DBQManipulationsoperationen
2.7 DBQSchemaQOperationen
2.8 Indexe
2.9 Abschlieende Bemerkungen
Seite29
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen:1Inhalt
2.4.12Basisbaustein:2SELECTQFROMQWHEREQBlock
2.4.22IntegerQ und2RealQArithmetik
2.4.32StringQFunktionen
2.4.42Bedingte Ausgaben (CASEQAusdrcke)
2.4.52Joins
2.4.62Vereinigung,2Differenz,2Durchschnitt
2.4.72Subqueries
2.4.82GruppierungsQ und2Aggregationsfunktionen
Seite210
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
2.4.11Basisbaustein:1 SELECT<FROM<WHERE<Block1 (einfache2alte2Form2(SQL86/SQL89))
ALL11
DISTINCT
SELECT
FROM
Attributliste
AttrName bzw.2Ri.AttrName
oder
*22bzw.22Ri.*22(=2alle)
(Eindeutigkeit2gefordert!)
R1,2R2,2,2Rn
WHERE Prdikat
ORDER1BY
Attr1
Bedeutung SFW:1
ASC
DESC
Attributliste
Prdikat
,2Attr2
(R1
ASC
DESC
1 R
,2
kartesisches1Produkt!
Auswertungsreihenfolge (logisch):
FROM<Klausel >11WHERE<Klausel >11SELECT<Klausel >11ORDER<BY<Klausel
!
Seite211
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
!
S1:1Gib1alle1Lieferanten1aus,1die1aus1'Ulm'1kommen
SELECT1 LiefNr,2LiefName,2LiefStadt,2Bewertung SELECT *
FROM111111111Lieferanten
FROM
Lieferanten
WHERE111111LiefStadt =2'Ulm'
WHERE
LiefStadt =2'Ulm'
mit2expliziter2Attributangabe
mittels2Kurzform
S2:1Gib1alle1Lieferanten1mit1Lieferantennummer1 15601aus
SELECT *
FROM
Lieferanten
WHERE
LiefNr >=2560
Seite212
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
!
Weitere Vergleichsoperatoren
2LiefNr BETWEEN 4002AND 6002222
(ist quivalent zu:22...2TnNr >=24002AND2TnNR <=2600)
...2LiefNr NOT1BETWEEN14002AND 600
...2LiefNr IN (100,2200,2130,2400)
...2LiefNr NOT1IN1(100,2200,2130,2400)
2NOT ( LiefNr IN (100,2200,2130,2400)2)
Anmerkung zu IN:
! Nach2IN kommt2immer2eine2Menge2atomarer2Werte2
(die2Menge2kann2auch2einQelementig oder2leer2sein)
! Die2INQMenge2kann2auch2durch2eine2Subquery erzeugt2werden2(siehe2spter)
Seite213
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen:1Integer< und1Real<Arithmetik
Operatoren:22+,2Q,2*,2/22mit2der2blichen2Semantik
! Von2vielen2DBMS2(so2auch2Derby)2wird2darber2hinaus2praktisch2die2ganze2Palette2an2
blichen2numerischen2Operatoren2und2Funktionen2angeboten:
mod(x),2power(x,y),2sin(x),2cos(x),2sqr(x),2...2
!
TeileID,2Bestand,2MinBestand,2
(MinBestand Q Bestand)2*2KalkKosten AS Auffllkosten
Teile
Bestand2<2MinBestand
Seite214
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen:1String<Funktionen
SQL2sieht2eine2Reihe2von2(gngigen)2 Stringfunktionen vor2
! StringQFunktionen2in2Apache2Derby2(Auswahl)
!
LOWER(string)
string in2Kleinbuchstaben
UPPER(string)
string in2Grobuchstaben
LENGTH(string)
LOCATE(suchstr,2string)
LEFT(string,2anz),2RIGHT(string,2anz)
SUBSTR(string,2start [,2lnge])
TRIM(string)
Entfernen2von2Blanks
CHAR(numerischerWert)
CHAR(123)2 '123'2(als2String)
Seite215
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
SELECT LiefNr,2LiefName,2LiefStadt,
CASE
WHEN Bewertung2 =
Q2
WHEN Bewertung2 =
Q1
WHEN Bewertung2 =
0
WHEN Bewertung2 =
+1
WHEN Bewertung2 =
+2
ELSE '????'
END AS Bewertung
FROM Lieferanten
THEN
THEN
THEN
THEN
THEN
'sehr2schlecht'
'schlecht'
'neutral'
'gut'
'sehr2gut'
Seite216
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen:1Joins
!
Alte1(SQL86/89)1syntaktische1 Grundstruktur1(immer2noch2gltig!)
SELECT
FROM
WHERE
ALL
DISTINCT
Attributliste
Rel1,2Rel2,2,2Reln
Reli.Attributname =2Relj.Attributname
AND
Relk.Attributname =2Rell.Attributname
AND
Siehe2JoinQDefinition:2Kartesisches2Produkt2+2Selektion
Seite217
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
!
Mit1SQL921wurden1explizite1Join<Operatoren1eingefhrt
2M.2Reichert,2P.2Dadam |2Universitt Ulm2|2SS22015
Seite218
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
!
(Condition)1Join
SELECT
FROM
[2WHERE
select7list
table1:[ AS t1 ] JOIN table2 [ AS t2 ] ON join7condition1
JOIN table3 [ AS t3 ] ON join7condition2
JOIN1
111111111111 ]
Anmerkungen
! Der2ConditionQJoinQAusdruck2wird2von2links2nach2rechts2interpretiert
! d.h.2join7condition1 kann2nur2Attribute2referenzieren,2die2im2Scope von2table1
oder2table2 auftreten,2nicht2jedoch2solche2aus2table3
! join7condition2 kann2auf2alle2Attribute2der2zuvor2spezifizierten2Tabellen2(linke2
Seite)2sowie2die2von2table3 zugreifen.
! Diese2JoinQForm2macht2insbesondere2dann2Sinn,2wenn2die2JoinQSpalten2
verschiedene2Namen2haben2 und/oder2andere2JoinQBedingungen2 als2"="2
ausgedrckt2werden2sollen
2M.2Reichert,2P.2Dadam |2Universitt Ulm2|2SS22015
Seite219
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
!
p.TeileID,2t.TeileName,2f.FarbeText,2p.Preis
Preisliste2AS p2JOIN Teiletypen2AS t2ON p.TeileID =2t.TeileID
JOIN Farbcodes2AS f2ON p.Farbe =2f.Farbcode
Seite220
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
!
Outer Join
SELECT selectQlist
FROM
table1 LEFT1OUTER1JOIN1table2 ON1...
SELECT selectQlist
FROM
table1 RIGHT1OUTER1JOIN1table2 ON1...
SELECT selectQlist
FROM
table1 FULL1OUTER1JOIN1table2 ON1...
Seite221
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
!
S6:1Gib1alle1Teiletypen1mit1ihren1Preisen1lt.1Preisliste1(soweit1vorhanden)1 aus
Formuliert mittels LEFT1OUTER1JOIN:
SELECT
FROM
t.TeileID,2t.TeileName,2p.Farbe,2p.Preis
Teiletypen AS t2LEFT OUTER JOIN
Preisliste AS p2ON t.TeileID =2p.TeileID
Seite222
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen:1Vereinigung,1Differenz,1Durchschnitt
!
Ergnzender1Hinweis:
Darauf1achten,1dass1die1Spalten1der1
Tabellen1nicht1nur1typmig passen,
sondern1auch1gleich1heien1(ggf.1mit
AS1umbenennen),1 sonst1vergeben1 DBMS
in1der1Resultattabelle1Spaltennummern
als1Attributnamen
Syntaktische1 Grundstruktur
SFWQAusdruck
TABLE1Relationsname
Tabellenausdruck
TABLE1Tabellenausdruck
UNION
EXCEPT11
INTERSECT
[1ALL1]1
SFWQAusdruck
TABLE1Relationsname
Tabellenausdruck
TABLE1Tabellenausdruck
[11ORDER1BY1Attributliste ]
Seite223
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
!
Seite224
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen:1Subqueries
Variante21
SELECT Attributliste
FROM
Rel1,2Rel2,2...,2Reln
WHERE [1NOT1]11EXISTS11(Tabellenausdruck)
SELECT Attributliste
FROM
Rel1,:Rel2,:...,:Reln
WHERE
Reli.Attributname
(Reli.Attributname,2Rj.Attributname)
SELECT Attributliste
FROM
Rel1,2Rel2,2,2Reln
WHERE
Reli.Attributname
(Reli.Attributname,2Rj.Attributname)
=
<>
<
<=
>=
>
Variante22
ANY
ALL
(Tabellenausdruck)
Variante23
[ NOT1] IN11(Tabellenausdruck)
Seite225
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
!
S8:1Gib1alle1Kunden1 aus,1die1uns1aktuell1Auftrge1erteilt1haben
Formuliert1mit1Subquery<Variante11
SELECT Attributliste
FROM
Rel1,2Rel2,2...,2Reln
WHERE [1NOT1]11EXISTS11(Tabellenausdruck)
SELECT
FROM
WHERE
*
Kunden AS1k
EXISTS
(SELECT
FROM
WHERE
*
Auftraege AS1a
a.KdNr =1k.KdNr)
Seite226
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
!
S8:1Gib1alle1Kunden1 aus,1die1uns1aktuell1Auftrge1erteilt1haben
Formuliert1mit1Subquery<Variante12
SELECT Attributliste
FROM
Rel1,:Rel2,:...,:Reln
WHERE
Reli.Attributname
(Reli.Attributname,2Rj.Attributname )
SELECT
FROM
WHERE
*
Kunden
KdNr = ANY
(SELECT
FROM
KdNr
Auftraege)
=
<>
<
<=
>=
>
ANY
ALL
(Tabellenausdruck)
Kurzform2wird2in2Derby
nicht2untersttztd
ggf.2mit2SubqueryQVariante21
formulieren
Seite227
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
!
S8:1Gib1alle1Kunden1 aus,1die1uns1aktuell1Auftrge1erteilt1haben
Formuliert1mit1Subquery<Variante13
SELECT Attributliste
FROM
Rel1,2Rel2,2,2Reln
WHERE
Reli.Attributname
(Reli.Attributname,2Rj.Attributname)
SELECT
FROM
WHERE
*
Kunden
KdNr IN
(SELECT
FROM
[ NOT1] IN11(Tabellenausdruck)
KdNr
Auftraege)
Seite228
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen:1Gruppierungs< und1Aggregationsfunktionen
!
Funktion
Bedeutung
COUNT(*)
Anzahl2der2Tupel2in2der2Relation
COUNT1(1[1DISTINCT1] Attributname:)
Anzahl2der2[unterschiedlichen]2Attributwerte
MAX( Attributname )
Maximum2der2Attributwerte
MIN( Attributname )
Minimum2der2Attributwerte
AVG(1[1DISTINCT1] Attributname )
Durchschnittswert2der2[unterschiedlichen]2
Attributwerte
SUM(1[1DISTINCT1] Attributname )
Summe2der2[unterschiedlichen]2Attributwerte
Seite229
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
Funktion
Bedeutung
COUNT(*)
Anzahl2der2Tupel in2der2Relation
COUNT1(1[1DISTINCT1] Attributname:)
Anzahl2der2[unterschiedlichen]2Attributwerte
MAX( Attributname )
Maximum2der2Attributwerte
MIN( Attributname )
Minimum2der2Attributwerte
AVG(1[1DISTINCT1] Attributname )
Durchschnittswert2der2[unterschiedlichen]2Attributwerte
SUM(1[1DISTINCT1] Attributname )
Summe2der2[unterschiedlichen]2Attributwerte
S9:1Gib1die1Anzahl1aller1Lieferanten1aus
SELECT
COUNT(*)
FROM
Lieferanten
S10:1Gib1die1Anzahl1aller1Lieferanten1aus1Ulm1aus
SELECT
COUNT(*)
FROM
Lieferanten
WHERE
LiefStadt =2'Ulm'
S11:1Gib1das1durchschnittliche1Gehalt1aller1Mitarbeiter1aus
SELECT
AVG(Gehalt)
FROM
Mitarbeiter
oder2mit2DECIMAL(AVG(Gehalt), 8,12)
2M.2Reichert,2P.2Dadam |2Universitt Ulm2|2SS22015
Seite230
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
ALL
SELECT222222222222222222222222
Attributliste
DISTINCT
FROM
Tabellenausdruck
[2WHERE
Nebenbedingung2 2]
[2GROUP2BY2
Gruppierungsattribut(e)2]
[2HAVING
Gruppierungsbedingung2 ]
[2ORDER2BY
Attributliste2]
Unterschied2zwischen2
WHERE2und2HAVING:
WHERE eliminiert2Zeilen
HAVING eliminiert2Gruppen
Anmerkungen
!
!
!
GROUP2BY2bewirkt2(interne)2Teilmengenbildung2 (Gruppierung)2der2ErgebnisQRelation2
entsprechend2dem2Gruppierungsattribut2bzw.2den2Qattributen2(Menge1von1Mengen)
Die2Aggregationsfunktionen2 werden2jeweils2auf2diese2Teilmengen2 angewandt
Eventuelle2Joins werden2vor2Anwendung2 der2Gruppierungsfunktion2ausgefhrt2
Reihenfolge2 jetzt2also:2FROM1>1WHERE1>1GROUP1BY>1HAVING1>1SELECT1>1
ORDER1BY
In2der2SELECTQKlausel2knnen2 bei2Angabe2von2GROUP2BY2 neben2AggregatQ
Funktionen2auch2normale1Attribute stehen,2wenn1nach1diesen1(ebenfalls)1
gruppiert1wurde
Gruppierungsnebenbedingungen2 werden2mittels2HAVINGQKlausel2ausgedrcktd2
HAVING1kann1nur1in1Verbindung1mit1GROUP1BY1auftreten
2M.2Reichert,2P.2Dadam |2Universitt Ulm2|2SS22015
Seite231
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
!
S12:1Gib1zu1allen1Bestellungen1(BestNr,1LiefNr,1BestDatum)1die1Anzahl1der1
Bestellpositionen1 aus
SELECT b.BestNr,2b.LiefNr,2b.BestDatum,2COUNT(*)1AS1AnzahlBestPos
FROM
Bestellungen2AS1b2JOIN1BestellPos AS1p2ON1b.BestNr =2p.BestNr
GROUP1BY1b.BestNr,2b.LiefNr,2b.BestDatum
Seite232
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.41DB<Anfragen
!
S13:1Gib1alle1Lieferanten1(LiefNr,1LiefName,1Anzahl_Teile)1aus,1die1nicht1mehr1
als121Teile1liefern1knnen
SELECT
l.LiefNr,2l.LiefName,2COUNT(*)1AS Anzahl_Teile
FROM
Lieferanten2AS l2JOIN Liefert2AS lf ON l.LiefNr =2lf.LiefNr
GROUP1BY
l.LiefNr,2LiefName
HAVING1COUNT(*) <=22
Seite233
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
Inhalt
2.12 Vorbemerkung
2.2 Datenunabhngigkeit von2Anwendungsprogrammen
2.32 BeispielQTabellen,2ERQModell2und2LegoTrailerQTeilebersicht
2.4 DBQAnfragen
2.5 Systematische Konstruktion von2JoinQAnfragen
2.6 DBQManipulationsoperationen
2.7 DBQSchemaQOperationen
2.8 Indexe
2.9 Abschlieende Bemerkungen
Seite234
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
S14:1Gib1aus,1welche1Teile1(TeileID,1Farbe)1mit1TeileName =1Klotz1xxx1von1
welchen1Lieferanten1(LiefNr)1geliefert1werden
Gewnschtes2Resultat:
Seite235
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
S14:1Gib1aus,1welche1Teile1(TeileID,1Farbe)1mit1TeileName =1Klotz1xxx1von1
welchen1Lieferanten1(LiefNr)1geliefert1werden
Systematische2Konstruktion2des2Joins:
Relevante2Relationen:
1. SELECTQ +2WHEREQKlauselQAttribute2bestimmen2
TeileTypen(TeileID,2TeileName)
2. Potenziell2relevante2EntityQRelationen2bestimmen
Teile(TeileID,2Farbe,2...)
3. JoinQPfade2mit2JoinQAttributen2bestimmen
Lieferanten(LiefNr,2LiefName,2...)
4. Optional:2Abwahl2der2nicht2bentigten2 Entities
Liefert(LiefNr,2TeileID,2Farbe,2)
Zu21: TeileID,2Farbe,2TeileName,2LiefNr
Zu22: TeileTypen,2Teile,2Lieferanten
Zu23: TeileTypen
TeileID
Teile22(TeileID,Farbe)22Liefert22LiefNr Lieferanten
Seite236
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
Auftraege(AuftrNr,2KdNr,2AuftrDatum)
Kunden(KdNr,2KdName,2KdStadt,2Bonitaet)
Bestellungen(BestNr,2LiefNr,2BestDatum)
BestellPos(BestNr,2BestPos,2TeileID,2
Farbe,2Anzahl)
TeileID
Preis
ListenPreis
hat
TeileTyp
liefert
Preis
Teilename
Bewertung
Pos
AuftragsPos
ordert
Anzahl
LiefStadt
gehrt2zu
LiefNr
Teile
erhlt
Lieferant
LiefName
Farbe
BestDatum
Bestand
AuftrNr
Auftrag
Bestellung
KalkKosten
AuftrDatum
BestNr
MinBestand
erteilt
KdNr
KdStadt
bestellt
Kunde
besteht2aus
BestellPos
KdName
Bonitaet
Anzahl
BestPos
Seite237
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
S14:1Gib1aus,1welche1Teile1(TeileID,1Farbe)1mit1TeileName =1Klotz1xxx1von1
welchen1Lieferanten1(LiefNr)1geliefert1werden
Zu21:
Zu22:
Zu23:
Zu24:
TeileID,2Farbe,2TeileName,2LiefNr
TeileTypen,2Teile,2Lieferanten
TeileTypen TeileID Teile22(TeileID,Farbe)22Liefert22LiefNr Lieferanten
Lieferanten2(da2LiefNr bereits2durch2die2LiefertQRelation2geliefert2wird)
Umsetzung:
SELECT
FROM
WHERE
ty.TeileID,2t.Farbe,2ty.TeileName,2lf.LiefNr
TeileTypen AS ty JOIN Teile2AS t2ON ty.TeileID =2t.TeileID
JOIN Liefert2AS lf ON (t.TeileID,2t.Farbe)2=2(lf.TeileID,2lf.Farbe)
ty.TeileName LIKE 'Klotz%'
Seite238
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
Inhalt
2.12 Vorbemerkung
2.2 Datenunabhngigkeit von2Anwendungsprogrammen
2.32 BeispielQTabellen,2ERQModell2und2LegoTrailerQTeilebersicht
2.4 DBQAnfragen
2.5 Systematische Konstruktion von2JoinQAnfragen
2.6 DBQManipulationsoperationen
2.7 DBQSchemaQOperationen
2.8 Indexe
2.9 Abschlieende Bemerkungen
Seite239
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.61DB<Manipulationsoperationen: Inhalt
2.6.11Einfgen1von1Tupeln
2.6.21Lschen von1Tupeln
2.6.31ndern von1Tupeln
Seite240
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.61DB<Manipulationsoperationen:1Einfgen von1Tupeln
!
Syntax
INSERT1INTO11Relationsname2[2(2Attributliste2)2]
VALUES (wert11,2wert12,2,2wert1n)2[,2(wert21,2wert22,2,2wert2n)22]
SFWQAusdruck
Anmerkungen
! Sollen2nur2einige2Attribute2des2einzufgenden2 Tupels2mit2Werten2gefllt2werden,2
so2knnen2diese2explizit2aufgezhlt2werden.2Die2nicht2spezifizierten2Attribute2
werden2mit2Nullwerten2oder2dem2Defaultwert (falls2im2Schema2hinterlegt)2gefllt.
! Es2knnen2daher2nur2solche2Attribute2ausgeblendet2 werden,2fr2die2Nullwerte2
erlaubt2sind2oder2Defaultwerte spezifiziert2wurden.
! Die2Einfgewerte knnen2als2Konstante2mittels2VALUESQKlausel2oder2ber2eine2
Query2bereitgestellt2werden.
! Anzahl2und2Typ2der2mittels2VALUEQKlausel2oder2Query2bereitgestellten2Werte2
mssen2mit2den2implizit2(keine2Attributliste2angegeben)2 oder2explizit2
spezifizierten2Attributen2harmonieren
2M.2Reichert,2P.2Dadam |2Universitt Ulm2|2SS22015
Seite241
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.61DB<Manipulationsoperationen
!
I01:1Der1Klotz1'K18'1kann1in1den1Farben111und121ab1sofort1auch1von1Lieferant1
5281bezogen1werden,1die1Preise1stehen1im1Moment1noch1nicht1fest
Variante 1:2(expliziter Nullwert)
INSERT1INTO Liefert
VALUES (528,2'K18',21,2NULL),2(528,2'K18',22,2NULL)2
Variante 2:2(impliziter Nullwert)
INSERT1INTO Liefert(LiefNr,2 TeileID,2Farbe)
VALUES (528,2'K18',21),2(528,2'K18',22)
Tipp:
Grund:2
Seite242
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.61DB<Manipulationsoperationen
!
I02:1Angenommen,1wir1fertigen1alle1unsere1farbigen1Artikel1ab1sofort1auch1in1
grner1Farbe1(Farbcode =13).1Alle1Lieferanten,1welche1Teile1in1blauer1Farbe1
liefern,1knnen1 auch1in1grner1Farbe1liefern.1Die1Preise1fr1die1grnen1Teile1
liegen1um110%1ber1denen1 der1blauen1Teile.1 Die1Liefert<Relation1ist1
entsprechend1 zu1ergnzen.
INSERT1INTO Liefert
SELECT LiefNr,2TeileID,23,2Preis2*21.1
FROM
Liefert
WHERE
Farbe2=22
Seite243
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.61DB<Manipulationsoperationen:1Lschen von1Tupeln
!
Syntax
DELETE
FROM
Relationsname
[2WHERE Bedingung ]
Anmerkung
! Lscht2alle2Tupel,2welche2die2WHEREQBedingung2 erfllen,2aus2der2
angegebenen2 Relation
! Ist2keine2WHEREQBedingung2 angegeben,2 werden2alle Tupel2der2Relation2
gelscht
! Die2Relation2selbst2bleibt2jedoch2in2jedem2Fall2(ggf.2als2leere2Menge)2bestehen
Seite244
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.61DB<Manipulationsoperationen
!
D01:1Lsche1alle1Tupel1in1der1Relation1'Sonderpreise'
DELETE
FROM
Sonderpreise
D02:1Lsche1alle1Tupel1in1der1Relation1'Sonderpreise',1die1keine1Preisangabe
enthalten
DELETE
FROM
Sonderpreise
WHERE
Preis IS1NULL
D03:1Lsche1alle1Lieferanten1mit1Bewertung1=1<21aus1der1Liefert<Relation
DELETE
FROM
Liefert
WHERE
LiefNr IN1
(SELECT LiefNr
FROM
Lieferanten
WHERE
Bewertung2=2Q2 )
Seite245
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.61DB<Manipulationsoperationen:1ndern von1Tupeln
!
Syntax
Form21:
UDPATE
SET
[2WHERE
Relationsname22[2Korrelationsvariable2]
Attr12=2Ausdruck12[,2Attr22=2Ausdruck2,22]
Bedingung2 ]
Form22:
UPDATE
Relationsname22[2Korrelationsvariable2]
SET
Attr
( Attr1,2Attr2,2,2Attrn )
[2WHERE
!
=22(2SFWQAusdruck2)
Bedingung2 2]
Anmerkung
Die2Wertnderung2wird2fr2alle2Tupel2durchgefhrt,2die2die2WHEREQBedingung2
erfllen
Seite246
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.61DB<Manipulationsoperationen
!
U01:1Erhhe1alle1Preise1in1der1Preisliste1um15%
UPDATE
SET
Preisliste
Preis2=2Preis2*21.05
U02:1Erhhe1die1kalkulatorischen1 Kosten1in1der1Teile<Tabelle1bei1allen1intern1
bezogenen1 Teilen1um110%
UPDATE
SET
WHERE
Teile
Preis2=2Preis2*21.1
(TeileID,2Farbe)1IN1
(SELECT TeileID,2Farbe
FROM
Liefert
WHERE
LiefNr =20)
Seite247
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.61DB<Manipulationsoperationen
!
U03:1Ergnze1in1der1Relation1'Sonderpreise'1 die1noch1fehlenden1Preise.1
Gewhre1fr1diese1Teile1einen1Rabatt1von115%1auf1die1Normalpreise
UPDATE
SET
WHERE
Sonderpreise AS1s
s.Preis = (SELECT
FROM
WHERE
)
s.Preis IS1NULL
Preis2*20.85
Preisliste2AS1p
(s.TeileID,1s.Farbe)1=1(p.TeileID,1p.Farbe)
Diese2Kurzform2wird2von2Derby2nicht2untersttzt
anstatt2dessen2daher:
Seite248
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
Inhalt
2.12 Vorbemerkung
2.2 Datenunabhngigkeit von2Anwendungsprogrammen
2.32 BeispielQTabellen,2ERQModell2und2LegoTrailerQTeilebersicht
2.4 DBQAnfragen
2.5 Systematische Konstruktion von2JoinQAnfragen
2.6 DBQManipulationsoperationen
2.7 DBQSchemaQOperationen
2.8 Indexe
2.9 Abschlieende Bemerkungen
Seite249
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.71DB<Schema<Operationen: Inhalt
2.7.11Erzeugen1und1Lschen1 von1Relationen
2.7.21Integrittsbedingungen1 I:1Festlegen1des1Primrschlssels
2.7.31Integrittsbedingungen1 II:1Festlegen1von1Fremdschlsseln
2.7.41Integrittsbedingungen1 III:1Festlegen1 von1Fremdschlssel<Bedingungen
2.7.51ndern1einer1Relation
2.7.61Definition1von1Sichten1(Views)
Seite250
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.71DB<Schema<Operationen:1Erzeugen1und1Lschen1von1
Relationen
CREATE TABLE
Attribut1
Attribut2
Attributn
Relationsname2(
Datentyp1,
Datentyp2,
Minimalform
Datentypn)
Datentyp
Spezifikation
Erluterung
Integer
INTEGER
Real
FLOAT
Dezimal
DECIMAL(g[,k])
insgesamt2g Stellen,2davon2k:
Nachkommastellen
Zeichenkette
CHAR(Lnge)
feste2Lnge,2 max.22542Zeichen
Zeichenkette
VARCHAR(Lnge)
variable2Lnge,2max.24.0002Zeichen
Zeichenkette
LONG1VARCHAR
variable2Lnge,2max.232.9002Zeichen
Zeichenkette
CLOB
variable2Lnge,2max.222GB
Bytestrings
fr2Binrdaten2 (z.B.2Graphik)
Datum
DATE
2M.2Reichert,2P.2Dadam |2Universitt Ulm2|2SS22015
Seite251
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.71DB<Schema<Operationen
!
Beispiel
CREATE TABLE Preisliste2(
TeileID
VARCHAR(8),
Farbe222
INTEGER,
Preis222
DECIMAL(8,2)
)
Wirkung
! Es2wird2eine2Relation2'Preisliste'2angelegt2und2dem2DefaultQSchema2und2dem2
DefaultQTablespace (siehe2spter)2zugeordnet.
! Die2Relation2hat232Attribute:2TeileID,2Farbe,2Preis
! Fr2alle2drei2Attribute2sind2Nullwerte1zugelassen1 (dies2ist2der2Default)2
! Das2Zulassen2von2Nullwerten2htten2wir2auch2explizit2festlegen2knnen:
TeileID
VARCHAR(8)
NULL,
Farbe
INTEGER
NULL,
Preis
DECIMAL(8,2)
NULL )
2M.2Reichert,2P.2Dadam |2Universitt Ulm2|2SS22015
Seite252
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.71DB<Schema<Operationen
!
Lschen1 einer1Relation
DROP1TABLE1Relationsname
Wirkung
! Lscht2die2angegebene2 Relation2samt2Inhalt2
! Entfernt2die2Relation2mit2allen2Verweisen2und2zugehrigen2Hilfsdaten2(z.B.2
Indexen)2aus2dem2DBQKatalog
Seite253
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.71DB<Schema<Operationen:
Integrittsbedingungen1I:1Festlegen1des1Primrschlssels
CREATE1TABLE11Relationsname2(
Attribut1
Datentyp1 NOT1NULL1PRIMARY1KEY,
2)
alternativ:
CREATE1TABLE1Relationsname2(
Attribut1
Datentyp1 NOT1NULL,
2
,
PRIMARY1KEY1(Attribut1))
bzw.2bei2zusammengesetzten2Primrschlsseln:
CREATE1TABLE1Relationsname2(
Attribut1
Datentyp1 NOT1NULL,
Attribut2
Datentyp2 NOT1NULL,
,
PRIMARY1KEY1(Attribut1,2Attribut2))
Ergnzende2 Hinweise:
Alle2Constraints erhalten2beim
Anlegen2einen2Identifier.2Diesen
kann2der2Benutzer2auch2selbst
festlegen:
CONSTRAINT name
PRIMARY
FOREIGN
Seite254
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.71DB<Schema<Operationen
!
Beispiele
CREATE1TABLE Lieferanten2(
LiefNr
INTEGER2NOT1NULL1PRIMARY1KEY,
LiefName
VARCHAR(30)2NOT1NULL,
LiefStadt
VARCHAR(30)2NOT1NULL,
Bewertung22
INTEGER
)
CREATE2TABLE2Teile2(
TeileID
Farbe
KalkKosten
Bestand22222
MinBestand
CONSTRAINT
)
VARCHAR(8)2NOT1NULL,
INTEGER2NOT1NULL,
DECIMAL(6,2),
INTEGER,
INTEGER,
teilePrimeKey PRIMARY KEY(TeileID,2Farbe)
Seite255
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.71DB<Schema<Operationen:
Integrittsbedingungen1II:1Festlegen1von1Fremdschlsseln
CREATE1TABLE1Relationsname1 (
,
Attribx
22 [1NULL1|1NOT1NULL1]11
REFERENCES Relationsname2 [(Attrname)]2,
2
)
alternativ2(bzw.2bei2zusammengesetztem2Fremdschlssel2zwingend):
CREATE1TABLE1Relationsname1 (
,
Attribx
22 [1NULL1|1NOT1NULL1],
Attriby
222 [1NULL1|1NOT1NULL1],
FOREIGN1KEY1(Attribx,2Attriby)
REFERENCES Relationsname2 [(Attrib1,2Attrib2)]2
)
Seite256
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.71DB<Schema<Operationen
!
Beispiel
CREATE1TABLE1TeileTypen (
TeileID
VARCHAR(8)2
NOT1NULL1PRIMARY1KEY,
TeileName
VARCHAR(50)2 NOT1NULL1UNIQUE
)
CREATE1TABLE1Farbcodes2(
Farbcode
INTEGER2
NOT1NULL1PRIMARY1KEY,
FarbeText
VARCHAR(10)2 NOT1NULL1UNIQUE
)
CREATE1TABLE1Teile2(
TeileID
VARCHAR(8)2
NOT1NULL1REFERENCES1TeileTypen,
Farbe
INTEGER2
NOT1NULL1
REFERENCES Farbcodes(Farbcode),
Anmerkung:
KalkKosten
DECIMAL(6,2),
Wie2man2hier2sieht,2knnen2die2
Bestand
INTEGER,
Attribute2des2Primrschlssels2
MinBestand
INTEGER,
gleichzeitig2auch2
PRIMARY1KEY1(TeileID,2Farbe)
Fremdschlssel2sein.
)
2M.2Reichert,2P.2Dadam |2Universitt Ulm2|2SS22015
Seite257
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.71DB<Schema<Operationen:1Integrittsbedingungen1III:1Festlegen1
von1Fremdschlssel<Bedingungen
CREATE2TABLE2Relationsname (
REFERENCES2 ON2DELETE
RESTRICT
CASCADE
SET1NULL
Erluterungen
! CASCADE2propagiert2die2Operation2(Lschen2von2Tupeln oder2Update2des2
Primrschlssels)2in2der2VaterQRelation2(!)2auf2die2hier2betrachtete2Relation,2
sofern2diese2Operation2hier2zulssig2ist.
! Die2LschQ bzw.2UpdateQOperation2 kann2sich2kaskadierend ber2mehrere2
Relationen2hinweg2auswirken,2wenn2zwischen2diesen2entsprechende2ReferenzQ
Bedingungen2 deklariert2wurden.
! Die2Operation2(incl.2Kaskadierung)2wird2entweder2komplett2oder2gar2nicht2
ausgefhrt.
! DELETE22SET2NULL2setzt2die2Fremdschlsselattribute2in2der2abhngigen2
Relation2auf2NULL,2sofern2fr2diese2Nullwerte2zugelassen2sind.
Anmerkung:2Es2gibt2jeweils2noch2die2Variante2NO2ACTION,2die2in2den2meisten2Fllen2
aber2wie2RESTRICT2wirkt.
!
Seite258
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
Auszug
[2COLUMN ]2columnQdefinition
ADD
uniqueQconstraint
referentialQconstraint
checkQconstraint
ALTER1COLUMN columnQname22columnQalteration
PRIMARY KEY
DROP
RESTRICT
CASCADE
2M.2Reichert,2P.2Dadam |2Universitt Ulm2|2SS22015
Seite259
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.71DB<Schema<Operationen
!
Beispiel
ALTER1TABLE1Lieferanten
ADD Plz DECIMAL(5)2
ADD Strasse VARCHAR(30)
Anmerkungen
! ADD1COLUMN
Neue2Spalten2werden2stets2hinten2angehngt.2
Sofern2die2Relation2bereits2Tupel2enthlt,2werden2die2neuen2Attribute2mit2
Nullwerten2gefllt.
NOT2NULLQKlausel2daher2nur2bei2leeren Relationen2 mglich.
! DROP1COLUMN
Per2Default2werden2alle2von2diesem2Attribut2abhngigen2 Indexe,2Views,2
Trigger2etc.2ebenfalls2gelscht2(CASCADE).2Bei2Angabe2der2RESTRICTQ
Klausel2wird2die2Anweisung2zurckgewiesen,2wenn2(noch)2eine2solche2
Abhngigkeit2existiert
! Ingesamt ein2sehr2mchtiges2Statement2mit2vielfltigen2nderungsoptionen
2M.2Reichert,2P.2Dadam |2Universitt Ulm2|2SS22015
Seite260
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.71DB<Schema<Operationen
Auszug1aus1DB21V91Manual
DB22Version292for2Linux,2UNIX,2and2
Windows2SQL2Reference2Volume22
Seite261
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.71DB<Schema<Operationen:1Definition1von1Sichten (Views)
Sichtenkonzept von1relationalen1DBMS1ein1sehr1wichtiges1Mittel1zur
Erhhung1der1Datenunabhngigkeit1 von1Anwendungsprogrammen!
! Zweck:22Realisierung2virtueller2(abgeleiteter)2Relationen
! Ausblenden2von2Attributen2(DatenschutzQ,2Vertraulichkeitsaspekte)
! (Versteckte)2Vorformulierung2von2Anfragen
! Verstecken2von2physischen2Details2vor2den2Anwendungsprogrammen,2 wie2z.B.2
Aufspaltung2in2Relation2in2zwei2Relationen
! Syntax
!
Seite262
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.71DB<Schema<Operationen
!
V01:1Erzeuge1eine1virtuelle1Relation1TeileIDFarbe (TeileID,1Farbe,1Farbcode)
Hinweis:2Es2existiert2eine2Relation2Farbcodes(Farbcode,2FarbeText)
CREATE2VIEW2TeileIDFarbe AS
SELECT t.TeileID,2f.FarbeText AS2Farbe,2t.Farbe AS2FarbCode
FROM
Teile2AS2t2JOIN22Farbcodes2AS2f2ON2t.Farbe =2f.FarbCode
V02:1Erzeuge1eine1virtuelle1Relation1BestellWerte(Bestellung,1Lieferant,1
BestellPos), mit1Bestellung1=1BestNr,1Lieferant1=1LiefNr und1BestellPos =1
Anzahl1jeweiligen1Bestellpositionen
Anstelle2der2Attributumbenennung2 mittels2AS:
CREATE1VIEW1BestellungenPositionen (Bestellung,2Lieferant,2BestellPos)2AS
SELECT b.BestNr,2b.LiefNr,2COUNT(*)
FROM
Bestellungen2AS b2
JOIN BestellPos AS p2ON2b.BestNr =2p.BestNr
GROUP1BY b.BestNr,2b.LiefNr
Seite263
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.71DB<Schema<Operationen
!
Ergnzende1Erluterungen1zu1Views
! Views2sind2ein2mchtiges2Konzept,2um2den2Anwendungsentwicklern2
mageschneiderte2(virtuelle)2Relationen2fr2ihre2Implementierungsarbeit2
anbieten2zu2knnen
! Sie2knnen2helfen,2die2redundante2 Speicherung2von2Daten2zu2vermeiden,2indem2
man2mehrere2logische2Relationen2auf2technischer2Ebene2zu2einer Relation2
zusammenfassen2und2logischen2Relationen2mittels2geeigneter2Views2realisiert2
(siehe2nchstes2Kapitel)
! Viele2DBMS2untersttzen2darber2hinaus2sogar2updateable views
(Derby1leider1nicht)
! Bei2einfachen2Sichten1 sind2dann2sogar2INSERTQ,2UPDATEQ,2DELETEQ
Operationen2 ber2diese2View2mglich
2und2mittels2INSTEADQOFQTRIGGERN2 kann2man2diese2Limitation2z.T.2
aufheben
keine2komplexen2Joins,2UNION,2GROUP2BY,2..)2und2geeigneter2Definition2 der2BasisQRelation
(DEFAULTQWerte2im2Kontext2von2NOT2NULL)2
1
Seite264
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
Inhalt
2.12 Vorbemerkung
2.2 Datenunabhngigkeit von2Anwendungsprogrammen
2.32 BeispielQTabellen,2ERQModell2und2LegoTrailerQTeilebersicht
2.4 DBQAnfragen
2.5 Systematische Konstruktion von2JoinQAnfragen
2.6 DBQManipulationsoperationen
2.7 DBQSchemaQOperationen
2.8 Indexe
2.9 Abschlieende Bemerkungen
Seite265
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.81Indexe
!
Syntax
Anlegen:
CREATE1[1UNIQUE1]1INDEX Indexname2ON
Relationsname2(2Attr1 [,2Attr2,2]2)
Lschen:
DROP1INDEX1Indexname
Beispiele
CREATE1UNIQUE1INDEX TeileTyp_Index ON Teiletypen2(TeileID)
CREATE1UNIQUE1INDEX Teile_Index ON Teile(TeileID,2Farbe)
CREATE1INDEX LiefStadt_Index ON Lieferanten(LiefStadt)
Seite266
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
Inhalt
2.12 Vorbemerkung
2.2 Datenunabhngigkeit von2Anwendungsprogrammen
2.32 BeispielQTabellen,2ERQModell2und2LegoTrailerQTeilebersicht
2.4 DBQAnfragen
2.5 Systematische Konstruktion von2JoinQAnfragen
2.6 DBQManipulationsoperationen
2.7 DBQSchemaQOperationen
2.8 Indexe
2.9 Abschlieende Bemerkungen
Seite267
Informationssysteme2|2Kapitel 2:2SQL2I:2Kompakte2Wiederholung2ausgewhlter2Aspekte
2.91Abschlieende Bemerkungen
!
!
!
!
!
(SQLQ)Datenbanken2 sind2aus2dem2heutigen2Wirtschaftsleben2nicht2mehr2weg2zu2
denken
Diese2Rekapitulation2von2SQL2beschrnkte2sich2auf2diejenigen2Aspekte,2die2im2
Rahmen2dieser2Vorlesung2sowie2der2bungen2 dazu2direkt2bentigt2werden
Diese2Stoffauswahl2stellt2in2gewisser2Weise2gleichzeitig2auch2das2absolute2Minimum2
an2SQLQWissen2dar,2was2man2als2Informatiker/in2drauf2haben2 sollte
Fr2einen2wirklich2professionellen2Einsatz2reicht2das2aber2nicht2aus!!
In2Kapitel232werden2wir2auf2weiterfhrende2Konzepte2eingehen,2 die2in2der2PvSQ
Vorlesung2nur2gestreift2bzw.2nicht2behandelt2wurden,2die2aber2fr2die2Realisierung2von2
Informationssystemen2ebenfalls2von2hoher2Bedeutung2 sind