DML - Beuth Hochschule für Technik Berlin

Werbung
Datenmanipulation
Datenmanipulation
Daten einfügen
direktes Einfügen mit und ohne Spaltennamen
insert into person (knr,nachname,vorname,konto)
values (3395,'Brenner','Karl',-4913.00)
insert into person
values (3390,'Heigert','Maria',-2.19)
Zeilen einfügen aus einer anderen Tabelle
insert into person
select knr, nachname, vorname, konto
from kunde
where konto < 0
Daten einfügen, ändern, löschen
Die Sprachkonzepte von SQL kommen in geeigneter Weise in den Änderungskommandos wieder vor.
insert into kunde (knr,anrede,nachname,vorname,plz,ort,konto)
values (3914,'Herr','Fehrbach','Karl',22359,'Hamburg',0.00)
update kunde
set plz = 70441, ort = 'Stuttgart'
where knr = 3390
delete from kunde
Daten lesen: Spaltenauswahl
Durch Aufzählen der gewünschten Spalten in der ersten Zeile erhält man die Ergebnistabelle mit den
zugehörigen Spalten in derselben Anordnung.
select nachname, vorname
from kunde
select vorname, nachname
from kunde
select * from kunde
Daten lesen: Zeilenauswahl
Die Zeilenauswahl geschieht durch eine Wertebedingung in der WHERE-Zeile.
select anrede, vorname, nachname, ort
from kunde
where ort = 'Muenchen'
select nachname, ort, konto
from kunde
where konto = 0.0
select nachname, ort
from kunde
where konto is null
TFH Berlin/Steyer
3-1
Datenmanipulation
Daten lesen: Sortieren/doppelte Zeilen
select distinct ort
from kunde
order by ort desc
Daten lesen: logische Verknüpfungen
Die Zeilenauswahl kann durch Logik im WHERE-Teil beeinflusst, z.B. verschärft werden.
select vorname, nachname, ort, konto
from kunde
where ort = 'Muenchen' or konto > 0
select vorname, nachname, ort, konto
from kunde
where ort = 'Muenchen' and konto > 0
=
GLEICH
<
KLEINER ALS
<=
KLEINER ODER GLEICH
>
GRÖSSER ALS
>=
GRÖSSER ODER GLEICH
<>
UNGLEICH
für mehrere Bedingungen
AND, OR
für Werte in einem Bereich
BETWEEN x AND y
für Werte in einer Menge
IN (x,y,z)
für Vergleich mit einem Teilwert LIKE '%abc% oder LIKE '_a_'
für verneinte Bedingungen
NOT
Klammernsetzung ist möglich
Daten lesen: Arithmetik
Arithmetische Ausdrücke sind an zwei Stellen möglich: In der WHERE-Bedingung dienen sie zur flexibleren
Zeilenauswahl: in der Ausgabeliste und in der WHERE-Bedingung
select hname, ort, preis
from hotel
where preis*7 < 500
select hname, ort, preis, preis+preis, preis*7
from hotel
Daten lesen: Tabellenverknüpfung
select buchung.bnr, kunde.nachname, buchung.von_dat, bis_dat
from kunde, buchung
where kunde.nachname = 'Barth' and kunde.knr=buchung.knr;
Die Verknüpfung der beiden Kundennummern erfolgt über zwei identische Spalten, im WHERE-Teil.
Weitere Operatoren:
TFH Berlin/Steyer
=
<
<=
<>
>
>=
(gleich)
(kleiner)
(kleiner oder gleich)
(ungleich)
(grösser)
(grösser oder gleich)
3-2
Datenmanipulation
Inner Join:
SELECT *
FROM mitarbeiter, abteilung
WHERE wohnort = stadt
m_nr m_name
m_vorname
abt_nr wohnort
abt_nr abt_name
stadt
---------------------------------------------------------------------------------------------------------------------------2581 Kaufmann
Brigitte
a2
München
a2
Diagnose
München
25348 Keller
Hans
a3
München
a1
Beratung
München
2581 Kaufmann
Brigitte
a2
München
a1
Beratung
München
25348 Keller
Hans
a3
München
a2
Diagnose
München
(4 rows affected)
Outer Join:
SELECT mitarbeiter.*, abteilung.abt_nr
FROM mitarbeiter, abteilung
WHERE wohnort *= stadt
m_nr m_name
m_vorname
abt_nr wohnort
abt_nr
---------------------------------------------------------------------------------------------25348 Keller
Hans
a3
München
a1
25348 Keller
Hans
a3
München
a2
2581 Kaufmann
Brigitte
a2
München
a1
2581 Kaufmann
Brigitte
a2
München
a2
29346 Probst
Andreas
a2
Augsburg
NULL
9031 Maier
Rainer
a2
Augsburg
NULL
10102 Huber
Petra
a3
Landshut
NULL
28559 Mozer
Sybille
a1
Ulm
NULL
18316 Müller
Gabriele
a1
Rosenheim
NULL
(9 rows affected)
Subselects
An der Stelle von Werten können (in Klammern) untergeordnete Selects stehen, die diese Werte erst
ermitteln.
delete from bestellt where kundennr = (select kundennr from kunde where nachname = 'Müller') and
artikelnr = (select artikelnr from artikel where artikelname = 'Rahmen');
Daten lesen: V ereinigung von Ergebnismengen
select hname, ort, preis, 'UEBER 100'
from hotel
where preis > 100.00
union
select hname, ort, preis, 'UNTER 100'
from hotel
where not preis > 100.00
order by 1, 2
Die Teile müssen vereinigungsverträglich sein.
TFH Berlin/Steyer
3-3
Datenmanipulation
Mengenoperationen für die ganze Tabelle
select sum(gehalt) from Person
Mengenoperationen gruppenweise
select sum(gehalt) from Person group by wohnort
Mengenoperationen gruppenweise nur für bestimmte Gruppen
select sum(gehalt) from Person group by wohnort having sum(gehalt) < 5000
Trigger
Es gibt eine Tabelle person (nr integer, pname char(12))
Insert-Protokoll:
create table insprot (nr integer, pname char(12))
create trigger insertprotokoll
on person
for insert
as insert into insprot values (222,'Emil')
insert into person ...
select * from insprot
nr
pname
----------- -----------222
Emil
(1 row(s) affected)
Update-Protokoll:
create table updprot (nr integer, pname char(12))
create trigger updateprotokoll
on person
for update
as insert into updprot values (99,'xaver')
update person ... und select * from updprot
Delete-Protokoll:
create table delprot (nr integer, pname char(12))
create trigger deleteprotokoll
on person
for delete
as insert into delprot values (99,'xaver')
delete from person ... und select * from delprot
TFH Berlin/Steyer
3-4
Herunterladen