Sie sind auf Seite 1von 2

1 MySQL

1.1 DDL Commands


DDL: Data Definition Language
1 CREATE TABLE P e r s o n s
2 (
3 P e r s o n I d i n t NOT NULL,
4 LastName v a r c h a r ( 2 5 5 ) NOT NULL,
5 FirstName v a r c h a r ( 2 5 5 ) ,
6 Age i n t CHECK ( Age > 0 ) ,
7 Address v a r c h a r ( 2 5 5 ) ,
8 CityCode v a r c h a r ( 2 5 5 ) ,
9 CONSTRAINT PK_PId PRIMARY KEY ( P e r s o n I d ) ,
10 CONSTRAINT AK_Name UNIQUE ( FirstName , LastName , Age ) ,
11 CONSTRAINT FK_CityCode FOREIGN KEY ( CityCode ) REFERENCES C i t i e s ( Code )
12 )

The primary key constraint can also include multiple attributes:


1 CONSTRAINT PK_PId PRIMARY KEY ( PersonId , LastName )

2 DML Commands
DML: Data Manipulation Language
Folgender Ausdruck:

πA,B (σp (R × S)) (1)

lautet in MySQL:
1 SELECT A, B
2 FROM R, S
3 WHERE p

Alles aus einer Tabelle auswählen:


1 SELECT ∗
2 FROM R

Vereinigung:
1 ( SELECT PrdNo , PrdDescr , Weight , P r i c e
2 FROM P r o d u c t s )
3 UNION
4 ( SELECT PrdNo , PrdDescr , Weight , P r i c e
5 FROM NewProducts )

Differenz: (Alle Kunden, die nichts bestellt haben)


1 ( SELECT CusNo
2 FROM Customers )
3 EXCEPT
4 ( SELECT CusNo
5 FROM Orders )

Join:
(1) Wir haben zwei Tabellen, Orders und Customers, die das Attribut CusNo enthalten:
1 SELECT OrdNo , Orders . CusNo , Qty , ShipDate , CusName
2 FROM Orders , Customers
3 WHERE Orders . CusNo = Customers . CusNo

Die letzte Zeile stellt sicher, dass wir einen Join und kein normales Kreuzprdoukt erhalten.
(2) Mit konkretem JOIN Befehl:

1
1 SELECT OrdNo , CusNo , Qty , ShipDate , CusName
2 FROM Orders
3 JOIN ( SELECT CusNo AS CusCusNo , CusName
4 FROM Customers ) C
5 ON Orders . CusNo = C . CusCusNo

Falls im Join eine neuen Tabelle aus einer alten erstellt wird (mit SELECT, FROM, etc.) muss
dieser Tabelle ein Name gegeben werden. (In diesem Fall ’C’.) Das Attribut CusNo aus Customers
muss umbenannt werden, da wir am Ende ein CusNo auswählen und es keine zwei mit gleichem
Namen geben darf!

Duplikate vermeiden:
1 SELECT DISTINCT A
2 FROM R

Vergleichs-Prädikate:
_: beliebiges Zeichen

%: beliebige Zeichenfolge
Kunden deren Name mit A beginnt oder Z endet:
1 SELECT ∗
2 FROM Customers
3 WHERE CusName LIKE ’A% ’ OR CusName LIKE ’%Z ’

Produkt die ’DVD’ in der Produktbeschreibung enthalten:


1 SELECT ∗
2 FROM P r o d u c t s
3 WHERE PrdDescr LIKE ’%DVD% ’

Produkte, die die Beschreibung ’P_A’ enthalten und mit einem beliebigen Zeichen enden: (der
Unterstrich steht nicht für ein beliebiges Zeichen!)
1 SELECT ∗ FROM PRODUCTS
2 WHERE PrdDescr LIKE ’%P\_A_’ ESCAPE ’ \ ’

Quantitative Prädikate:
Kunde(n) mit geringstem Rabatt:
1 SELECT ∗ FROM Customers
2 WHERE D i s c o u n t <= ALL ( SELECT D i s c o u n t FROM Customers )

Kunden, die nicht den geringsten Rabatt haben:


1 SELECT ∗ FROM Customers
2 WHERE D i s c o u n t > SOME ( SELECT D i s c o u n t FROM Customers )

Kunden, die eine Lieferung von vor 2014 erhielten:


1 SELECT ∗ FROM Customers
2 WHERE CusNo = ANY ( SELECT CusNo FROM Orders
3 WHERE S t a t u s = ’ 2 s h i p p e d ’
4 AND ShipDate < DATE ’ 2014−01−01 ’ )