Database Reference
In-Depth Information
Die grundlegende Variante eines Joins ist der sog. innere Join . In der ein-
fachsten Form legen Sie zwei Spalten (eine aus jeder Tabelle), die miteinander
verglichen werden sollen, über das Schlüsselwort ON fest.
SELECT cities. * , country _ name
FROM cities INNER JOIN countries
ON cities.country _ code = countries.country _ code;
country _ code | name | postal _ code | country _ name
--------------+----------+-------------+---------------
us
| Portland | 97205
| United States
Der Join liefert eine einzelne Tabelle zurück, die alle Spaltenwerte der cities -
Tabelle zusammen mit dem passenden country _ name -Wert aus der countries -
Tabelle enthält.
Wir können Joins auch auf Tabellen wie cities anwenden, die einen zusam-
mengesetzten Primärschlüssel nutzen. Um einen zusammengesetzten Join
zu testen, wollen wir eine neue Tabelle mit einer Liste von Veranstaltungsor-
ten aufbauen.
Ein Veranstaltungsort existiert sowohl unter einer bestimmten Postleitzahl
( postal_code ) als auch in einem bestimmten Land ( country ). Der Fremdschlüs-
sel muss aus zwei Spalten bestehen, der beide cities - primary key -Spalten
berücksichtigt. ( MATCH FULL ist ein Constraint, der sicherstellt, dass beide
Werte existieren oder beide NULL sind.)
CREATE TABLE venues (
venue _ id SERIAL PRIMARY KEY ,
name varchar (255),
street _ address text ,
type char (7) CHECK ( type in ( 'public' , 'private' )) DEFAULT 'public' ,
postal _ code varchar (9),
country _ code char (2),
FOREIGN KEY (country _ code, postal _ code)
REFERENCES cities (country _ code, postal _ code) MATCH FULL
);
Die venue _ id -Spalte ist ein typischer Primärschlüssel: automatisch inkre-
mentierte Integerwerte (1, 2, 3, 4 und so weiter...). Wir erzeugen diesen
Identifier mit dem Schlüsselwort SERIAL (MySQL kennt ein vergleichbares
Konstrukt namens AUTO _ INCREMENT ).
INSERT INTO venues (name, postal _ code, country _ code)
VALUES ( 'Crystal Ballroom' , '97205' , 'us' );
Obwohl wir keinen venue _ id -Wert angegeben haben, wird er beim Anlegen
der Zeile automatisch erzeugt.
Search WWH ::




Custom Search