Tabellen mit mehreren Spalten in SQL (MySQL) (Tabellen mit mehreren Spalten in SQL (MySQL)), Lektion, Seite 722946
https://www.purl.org/stefan_ram/pub/mehrere_spalten_sql (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
SQL-Kurs

Speicher für Tabellen mit mehreren Spalten in SQL  (MySQL )

Vorbereitungen

Konsole (MySQL )
DROP SCHEMA S; CREATE SCHEMA S; USE S;

Anlegen eines Speichers für Tabellen mit mehreren Spalten

Es ist auch möglich, einen Speicher für Tabellen mit mehreren Spalten anzulegen. Dazu können in den runden Klammern am Ende einer CREATE-TABLE-Anweisung mehrere Angaben zu einer Spalte hintereinandergemacht werden. Diese werden dann durch ein Komma »,« voneinander getrennt.

Konsole (MySQL, T92, C99, C03)
CREATE TABLE ZAHL ( NUMERALE VARCHAR ( 255 ), BEZEICHNUNG VARCHAR ( 255 ));
Angaben zur ersten Spalte
NUMERALE VARCHAR ( 255 )
Die in der CREATE-TABLE-Anweisung erste Spalte hat den Namen »NUMERALE« und den Typ »VARCHAR ( 255 )«.
Angaben zur zweiten Spalte
BEZEICHNUNG VARCHAR ( 255 )
Die in der CREATE-TABLE-Anweisung zweite Spalte hat den Namen »BEZEICHNUNG« und den Typ »VARCHAR ( 255 )«.

Es gibt keine Möglichkeit, die Wiederholung von »VARCHAR ( 255 )« zu vermeiden. Die Wiederholung von »VARCHAR ( 255 )« ist in den folgenden Lektionen besonders auffällig. Sie liegt aber nur daran, daß an dieser Stelle zur Vereinfachung zunächst immer  »VARCHAR ( 255 )« geschrieben wird. Später werden wir Alternativen dazu kennenlernen und verwenden, so daß »VARCHAR ( 255 )« dann nicht mehr so oft wiederholt werden wird. Aber selbst, wenn es nötig wäre, »VARCHAR ( 255 )« in einem bestimmten Fall beim Anlegen eines Tabellenspeichers mehrfach zu wiederholen, wäre dies keine große Belastung, da im Verlaufe der Arbeit mit einer Datenbank neue Tabellenspeicher nur selten angelegt werden.

Spaltenspezifikation

Spaltenspezifikation

.------------. .----------.
--->| Bezeichner |--->| Datentyp |--->
'------------' '----------'
Spaltenname

Tabellendefinitionsanweisung
     .------.      .-----.     .------------.     .-.         .----------------------.         .-.
--->( CREATE )--->( TABLE )--->| Bezeichner |--->( ( )---.--->| Spaltenspezifikation |--->.---( ) )--->
'------' '-----' '------------' '-' ^ '----------------------' | '-'
Tabellenname | .-. |
'-------------( , )--------------'
'-'

Der Name jeder Spalte einer Tabelle muß sich vom Namen aller anderen Spalten derselben Tabelle unterscheiden.

Einfügen und Anzeigen von Daten

Der Tabellenspeicher ist zunächst leer.

Konsole (MySQL, E92, C99, C03)
SELECT * FROM ZAHL;
Empty set (0.00 sec)

Eine Zeile kann nun eingefügt werden, indem in einem ersten Klammernpaar die kommagetrennten Namen der Spalten und in einem zweiten Klammernpaar die kommagetrennten Werte der Spalten für die einzufügende Zeile angegeben werden. Dabei gehört ein Spaltenwert zu dem Spaltennamen, welcher an derselben Stelle angegeben wurde. Der erste  Spaltenwert gehört also zu der Spalte mit dem zuerst  angegebenen Namen, der zweite  Spaltenwert zu dem zweiten  Namen, und so weiter.

Konsole (MySQL, E92, C99, C03)
INSERT INTO ZAHL ( NUMERALE, BEZEICHNUNG ) 
VALUES ( '1', 'EINS' );
Query OK, 1 row affected (0.00 sec)
Konsole (MySQL, E92, C99, C03)
SELECT * FROM ZAHL;
+----------+-------------+
| NUMERALE | BEZEICHNUNG |
+----------+-------------+
| 1 | EINS |
+----------+-------------+

Bei der folgenden INSERT-Anweisung wurde die Reihenfolge der Spaltennamen verändert. Entsprechend wird nun der erste  Wert der Bezeichnung und der zweite  Wert dem Numerale zugewiesen.

Konsole (MySQL, E92, C99, C03)
INSERT INTO ZAHL ( BEZEICHNUNG, NUMERALE )
VALUES ( 'ZWEI', '2' );
Query OK, 1 row affected (0.00 sec)
Konsole (MySQL, E92, C99, C03)
SELECT * FROM ZAHL;
+----------+-------------+
| NUMERALE | BEZEICHNUNG |
+----------+-------------+
| 1 | EINS |
| 2 | ZWEI |
+----------+-------------+

Weglassen der Spaltennamen

Der Verzicht auf die Liste von Spaltennamen ist zwar möglich, aber nicht empfehlenswert, weil dann Änderungen in der Struktur des Tabellenspeichers die Bedeutung der INSERT-Abfrage verändern können und die Bedeutung der INSERT-Abfrage dann von der in einer Tabelle eigentlich nicht festgelegten Reihenfolge der Spalten abhängen würde.

Konsole (MySQL, E92, C99, C03)
INSERT INTO ZAHL VALUES ( 'DREI', '3' );
Query OK, 1 row affected (0.00 sec)
Konsole (MySQL, E92, C99, C03)
SELECT * FROM ZAHL;
+----------+-------------+
| NUMERALE | BEZEICHNUNG |
+----------+-------------+
| 1 | EINS |
| 2 | ZWEI |
| DREI | 3 |
+----------+-------------+

Wenn man in einer Einfügeanweisung die Spaltennamen aufführt, so wird jeder Wert in die dadurch festgelegte Spalte eingefügt, ohne daß die Reihenfolge der Spalten in der Tabelle eine Rolle dabei spielt. Die folgende Einfügeanweisung fügt beispielsweise den Text »DREI« garantiert immer in die Spalte »BEZEICHNUNG« und den Text »3« garantiert immer in die Spalte »NUMERALE« ein, egal in welcher Reihenfolge diese Spalten in der Basistabelle angeordnet sind. (Im relationalen Modell gibt gibt es ohnehin keine Reihenfolge von Spalten).

Konsole (MySQL, E92, C99, C03)
INSERT INTO ZAHL ( BEZEICHNUNG, NUMERALE ) VALUES ( 'DREI', '3' );

Übungsaufgaben

/   Tabelle anlegen und sichten

Geben Sie Kommandos ein, die zu der folgenden Ausgabe führen.

(Die Reihenfolge, in welcher die einzelnen Zeilen und Spalten ausgegeben werden, spielt bei Tabellen normalerweise keine Rolle und ist daher egal.)

+------+------+------+
| I | DE | EN |
+------+------+------+
| 0 | NULL | ZERO |
| 1 | EINS | ONE |
+------+------+------+
Aussprachehinweis
zero ˈzɪroʊ

Einfügen mehrerer Zeilen mit einer einzigen Anweisung *

Es besteht auch wieder die Möglichkeit, mehrere Zeilen mit einer einzigen Anweisung einzufügen.

Konsole (MySQL, F92, F641-99, F641-03)
INSERT INTO ZAHL ( BEZEICHNUNG, NUMERALE )
VALUES ( 'VIER', '4' ),
( 'FUENF', '5' );
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
Aussprachehinweis
duplicate (n) ˈduːplɪkət
Mehrzeilige Einfuegeanweisung (vereinfacht) *
     .------.      .-----.     .------------.         .-.     .------------.     .-.          .------.          .-.         .--------.         .-.          .-.
--->( INSERT )--->( INTO )--->| Bezeichner |---.--->( ( )--->| Bezeichner |--->( ) )---.--->( VALUES )---.--->( ( )---.--->| Skalar |---.--->( ) )---.--->( ; )--->
'------' '-----' '------------' | '-' '------------' '-' ^ '------' ^ '-' ^ '--------' | '-' | '-'
Tabellenname | Spaltenname | | | | |
| | | | .-. | |
'---------------------------------------' | '-------( , )-----' |
| '-' |
| |
| .-. |
'--------------------( , )------------------'
'-'

Man beachte hierbei:

Fachbegriffe *

Die Anzahl der Spalten  einer Tabelle wird auch als Grad  oder Arität  der Tabelle bezeichnet.

Die Anzahl der Zeilen  einer Tabelle wird auch als Kardinalität  oder Mächtigkeit  der Tabelle bezeichnet.

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 stefanram722946 stefan_ram:722946 Tabellen mit mehreren Spalten in SQL (MySQL) Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722946, slrprddef722946, 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/mehrere_spalten_sql