NATURAL-JOINS in SQL (NATURAL-JOINS in SQL), Lektion, Seite 722533
https://www.purl.org/stefan_ram/pub/natural_sql (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
SQL-Kurs

Natural Join

Aussprachehinweis
natural ˈnætʃ ɚ əl

Das folgende Skript legt zwei Tabellen an, die beide eine Spalte namens »LAND« enthalten.

Konsole (MySQL )

DROP SCHEMA S; CREATE SCHEMA S; USE S;

CREATE TABLE STADT
( STADT VARCHAR ( 255 ), BEZEICHNUNG VARCHAR ( 255 ), LAND VARCHAR ( 255 ));

INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '1', 'Paris', '1' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '2', 'Marseille', '1' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '3', 'Lyon', '1' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '4', 'Rom', '2' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '5', 'Mailand', '2' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '6', 'Neapel', '2' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '7', 'Tokio', '3' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '8', 'Yokohama', '3' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '9', 'Osaka', '3' );

CREATE TABLE LAND ( LAND VARCHAR ( 255 ), LANDESNAME VARCHAR ( 255 ));

INSERT INTO LAND ( LAND, LANDESNAME ) VALUES ( '1', 'Frankreich' );
INSERT INTO LAND ( LAND, LANDESNAME ) VALUES ( '2', 'Italien' );
INSERT INTO LAND ( LAND, LANDESNAME ) VALUES ( '3', 'Japan' );

Wir hatten bereits eine Verbindung solcher Tabellen mit Hilfe einer USING-Klausel erzeugt.

Konsole (MySQL )
SELECT * FROM STADT INNER JOIN LAND USING( LAND );
+------+-------+-------------+------------+
| LAND | STADT | BEZEICHNUNG | LANDESNAME |
+------+-------+-------------+------------+
| 1 | 1 | Paris | Frankreich |
| 1 | 2 | Marseille | Frankreich |
| 1 | 3 | Lyon | Frankreich |
| 2 | 4 | Rom | Italien |
| 2 | 5 | Mailand | Italien |
| 2 | 6 | Neapel | Italien |
| 3 | 7 | Tokio | Japan |
| 3 | 8 | Yokohama | Japan |
| 3 | 9 | Osaka | Japan |
+------+-------+-------------+------------+

Bei einer natürlichen Verbindung zweier Tabellen, werden die Zeilen angezeigt, bei denen alle gleichnamigen Spalten gleiche Werte enthalten.

Konsole (MySQL )
SELECT * FROM STADT NATURAL JOIN LAND;
+------+-------+-------------+------------+
| LAND | STADT | BEZEICHNUNG | LANDESNAME |
+------+-------+-------------+------------+
| 1 | 1 | Paris | Frankreich |
| 1 | 2 | Marseille | Frankreich |
| 1 | 3 | Lyon | Frankreich |
| 2 | 4 | Rom | Italien |
| 2 | 5 | Mailand | Italien |
| 2 | 6 | Neapel | Italien |
| 3 | 7 | Tokio | Japan |
| 3 | 8 | Yokohama | Japan |
| 3 | 9 | Osaka | Japan |
+------+-------+-------------+------------+

Die natürliche Verbindung ist eine sehr elegante Formulierung, die auch schon 1970 in dem Artikel von Codd  vorkommt, in dem das Konzept der relationalen Datenbanken vorgestellt wurde.

Es besteht aber das Risiko, daß zwei Tabellen versehentlich Spalten mit gleichen Namen haben könnten, und daß dann eine unerwünschte Gleichheitsbedingung verwendet wird.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722533 stefan_ram:722533 NATURAL-JOINS in SQL Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722533, slrprddef722533, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/natural_sql