Einfügen einer Zeile mit MySQL
Vorbereitung
Als Vorbereitung auf Eingaben zum Einfügen von Daten legen wir hier zunächst ein Schema und eine Tabelle an.
- Skript (MySQL )
DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE LISTE ( I VARCHAR ( 255 ));
Einfügen von Daten
- Konsole (MySQL, E92, C99, C03)
INSERT INTO LISTE ( I ) VALUES ( '1' );
Query OK, 1 row affected (0.00 sec)
Durch »INSERT INTO« wird ein Wert in einen Tabellenspeicher eingefügt. Dabei wird zunächst der Name des Tabellenspeichers (hier »LISTE«) angegeben. Es folgt die Angabe der Spalte in runden Klammern (hier »( I )«) und dann hinter dem feststehenden Worte »VALUES« der einzufügenden Wert (hier »( '1' )«. Der Wert wird dabei in Apostrophen »'« angeführt.
Auch bei Verwendung von »INSERT INTO« sollte in MySQL nach dem Namen des Tabellenspeichers ein Leerzeichen folgen, damit dieser immer richtig erkannt wird.
- Einfuegeanweisung (vereinfacht)
.------. .-----. .------------. .-. .------------. .-. .------. .-. .--------. .-. .-.
--->( INSERT )--->( INTO )--->| Bezeichner |---.--->( ( )--->| Bezeichner |--->( ) )---.--->( VALUES )--->( ( )--->| Skalar |--->( ) )--->( ; )--->
'------' '-----' '------------' | '-' '------------' '-' ^ '------' '-' '--------' '-' '-'
Tabellenname | Spaltenname |
| |
'---------------------------------------'
Ein Skalar ist eine in Apostrophen eingeschlossene Zeichenfolge.
Die Anweisung bezieht sich auf eine Tabelle, die unter dem angegebenen Namen in demjenigen Schema zu finden ist, welches zuletzt mit »USE« eingestellt wurde, also in »S«.
Anzeige von Daten
Wir wollen uns den veränderten Tabellenspeicher »LISTE« nun ansehen.
- Konsole (MySQL, E92, C99, C03)
SELECT * FROM LISTE;
+------+
| I |
+------+
| 1 |
+------+1 row in set (0.00 sec)
In der Ausgabe vom MySQL ist das »I« über der Linie der Titel der ausgegebenen Spalte. Der eigentliche Inhalte des Tabellenspeichers findet sich erst darunter.
Nach der Ausgabe des Inhalts des Tabellenspeichers folgt eine Statistik wie beispielsweise »1 row in set (0.00 sec)«. Diese Ausgabe ist für uns oft nicht interessant; sie wird daher im folgenden nicht immer mit abgedruckt oder kommentiert werden.
Da die Tabelle im Tabellenspeicher »LISTE« genau eine Zeile und genau eine Spalte hat, handelt es sich übrigens um eine skalare Tabelle.
Permanenz
Die einmal in dem Tabellenspeicher gespeicherten Werte bleiben dort auch dann gespeichert, wenn der Klient (Monitor) beendet und der das Datenbanksystem und der Rechner ordnungsgemäß nach unten gefahren wird und stehen beim nächsten Zugriff auf die Datenbank dann wieder zur Verfügung.
Weglassen des Spaltennamens
Für das folgende Beispiel legen wir zunächst erst einmal wieder einen neuen, leeren Tabellenspeicher »LISTE« an.
- Vorbereitung (MySQL )
DROP SCHEMA S; CREATE SCHEMA S; USE S; CREATE TABLE LISTE ( I VARCHAR ( 255 ));
Nun zeigen wir das Einfügen eines Wertes ohne Angabe des Spaltennamens. Im Vergleich zu früher fehlt hier das » ( I )« hinter »LISTE«.
- Konsole (MySQL, E92, C99, C03)
INSERT INTO LISTE VALUES ( '10' );
Query OK, 1 row affected (0.00 sec)
- Zum Vergleich das früher verwendete Kommando.
INSERT INTO LISTE ( I ) VALUES ( '1' );
- Konsole (MySQL, E92, C99, C03)
SELECT * FROM LISTE;
+------+
| I |
+------+
| 10 |
+------+
Wie man sieht, ist es ebenfalls möglich, einen Wert ohne Angabe einer Spalte in einen Tabellenspeicher einzufügen. Da dies jedoch zu Problemen führen kann, wie später begründet werden wird, werden wir diese Möglichkeit fürderhin nicht nutzen. Es wird hier also davon abgeraten, den Spaltennamen wegzulassen, obwohl dies anscheinend manchmal möglich ist.
Übungsfrage
? Ausgabe vorhersagen
Die Eingabe der folgenden vier Zeilen führt zur daruntenstehenden Ausgabe, in der aber zwei Teile hier durch Fragezeichen verdeckt wurden.
Nun sollen ohne tatsächliche Eingabe der vier Zeilen die beiden folgenden Fragen beantwortet werden:
- Was erscheint an Stelle des ersten Fragezeichens?
- Was erscheint an Stelle des zweiten Fragezeichens?
DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE A ( B VARCHAR ( 255 ));
INSERT INTO A ( B ) VALUES ( 'C' );
SELECT * FROM A;+------+
| ? |
+------+
| ? |
+------+
Übungsaufgabe
Hinweis Mehrere aufeinanderfolgende Kommandos können zunächst in einem Texteditor bearbeitet werden und dann in den Monitor kopiert werden. Dies erlaubt es bei Fehlern in den Kommandos, diese im Editor zu überarbeiten, ohne daß sie alle erneut eingegeben werden müssen. So können die Kommandos auch zum späteren Nachlesen gespeichert bleiben.
Hinweis Orientieren Sie sich zur Lösung dieser Übungsaufgabe an den obigen, im Kurs bereits verwendeten Kommandos.
/ Tabellenspeicher anlegen und sichten
Geben Sie Kommandos ein, die zu der folgenden Ausgabe führen.
+------+
| COL |
+------+
| 3 |
+------+
Zitate *
Datenänderungsanweisungen *
- 4.33.2.3 SQL-data change statements (gekürzt) *
- The following are the SQL-data change statements:
- — <insert statement>.