So fügen Sie mehrere Daten in MySQL ein: 1. Verwenden Sie die Anweisung „INSERT INTO table name field list VALUES (value 1) ..., (value n);“ 2. Verwenden Sie „INSERT INTO table“. name SET field 1 = value 1, field 2 = value 2,..."-Anweisung fügt Daten ein.
Nachdem die Datenbank und die Tabelle erfolgreich erstellt wurden, müssen Daten in die Datenbanktabelle eingefügt werden. In MySQL können Sie die INSERT-Anweisung verwenden, um eine oder mehrere Zeilen mit Tupeldaten in eine vorhandene Tabelle in der Datenbank einzufügen.
Grundlegende Syntax
Die INSERT-Anweisung hat zwei Syntaxformen, nämlich die INSERT...VALUES-Anweisung und die INSERT...SET-Anweisung.
1) Das Syntaxformat der INSERT...VALUES-Anweisung
INSERT VALUES ist:
INSERT INTO <表名> [ <列名1> [ , … <列名n>] ] VALUES (值1) [… , (值n) ];
Die Syntaxbeschreibung lautet wie folgt.
VALUES- oder VALUE-Klausel: Diese Klausel enthält die Liste der einzufügenden Daten. Die Reihenfolge der Daten in der Datenliste sollte der Reihenfolge der Spalten entsprechen.
2) INSERT...SET-Anweisung
Das Syntaxformat lautet:
INSERT INTO <表名> SET <列名1> = <值1>, <列名2> = <值2>, …
Diese Anweisung wird verwendet, um die entsprechenden Spaltenwerte für bestimmte Spalten in der Tabelle, also den Spaltennamen, direkt anzugeben der einzufügenden Daten steht in der SET-Klausel. Geben Sie an, dass col_name der angegebene Spaltenname ist und auf das Gleichheitszeichen die angegebenen Daten folgen. Für nicht angegebene Spalten wird der Spaltenwert als Standardwert der Spalte angegeben.
Dies lässt sich an den beiden Formen der INSERT-Anweisung erkennen:
Verwenden Sie die INSERT...VALUES-Anweisung, um eine oder mehrere Datenzeilen in die Tabelle einzufügen;
Verwenden Sie INSERT...SET Anweisung, um den Wert jeder Spalte in der Spalte anzugeben, oder Sie können den Wert einiger Spalten angeben.
INSERT...SELECT-Anweisung fügt Daten aus anderen Tabellen in die Tabelle ein.
Die INSERT…SET-Anweisung kann verwendet werden, um Werte einiger Spalten in die Tabelle einzufügen, was flexibler ist;
INSERT…VALUES-Anweisung kann mehrere Daten gleichzeitig einfügen.
In MySQL ist die Verarbeitung mehrerer Einfügungen mit einer einzigen INSERT-Anweisung schneller als die Verwendung mehrerer INSERT-Anweisungen.
Wenn Sie eine einzelne INSERT-Anweisung zum Einfügen mehrerer Datenzeilen verwenden, müssen Sie nur jede Datenzeile in Klammern setzen.
Fügen Sie Werte zu allen Feldern in der Tabelle hinzu.
Erstellen Sie eine Kursinformationstabelle tb_courses in der Datenbank test_db, einschließlich der Kursnummer, des Kursnamens, des Kursnamens, der Kurspunkte, der Kursnote und der Kursnotizen, der eingegebenen SQL-Anweisung und der Ausführung Die Ergebnisse sind wie folgt dargestellt.
mysql> CREATE TABLE tb_courses -> ( -> course_id INT NOT NULL AUTO_INCREMENT, -> course_name CHAR(40) NOT NULL, -> course_grade FLOAT NOT NULL, -> course_info CHAR(100) NULL, -> PRIMARY KEY(course_id) -> ); Query OK, 0 rows affected (0.00 sec)
Es gibt zwei Möglichkeiten, Werte in alle Felder der Tabelle einzufügen: Die eine besteht darin, alle Feldnamen anzugeben, die andere darin, überhaupt keine Feldnamen anzugeben.
【Beispiel 1】Fügen Sie einen neuen Datensatz in die Tabelle tb_courses ein, der Wert von course_id ist 1, der Wert von course_name ist „Network“, der Wert von course_grade ist 3 und der Wert von info ist „Computer Network“.
Bevor Sie den Einfügevorgang ausführen, sehen Sie sich die SQL-Anweisung und die Ausführungsergebnisse der Tabelle tb_courses wie unten gezeigt an.
mysql> SELECT * FROM tb_courses; Empty set (0.00 sec)
Das Abfrageergebnis zeigt, dass der aktuelle Tabelleninhalt leer ist und keine Daten vorhanden sind. Führen Sie als Nächstes den Vorgang zum Einfügen von Daten aus. Die Eingabe-SQL-Anweisung und der Ausführungsprozess sind wie folgt.
mysql> INSERT INTO tb_courses -> (course_id,course_name,course_grade,course_info) -> VALUES(1,'Network',3,'Computer Network'); Query OK, 1 rows affected (0.08 sec) mysql> SELECT * FROM tb_courses; +-----------+-------------+--------------+------------------+ | course_id | course_name | course_grade | course_info | +-----------+-------------+--------------+------------------+ | 1 | Network | 3 | Computer Network | +-----------+-------------+--------------+------------------+ 1 row in set (0.00 sec)
Sie können sehen, dass der Datensatz erfolgreich eingefügt wurde. Beim Einfügen von Daten werden alle Felder der Tabelle tb_courses angegeben, sodass für jedes Feld neue Werte eingefügt werden.
Die Reihenfolge der Spaltennamen nach der INSERT-Anweisung muss nicht der Reihenfolge entsprechen, in der die Tabelle tb_courses definiert ist. Das heißt, beim Einfügen von Daten ist es nicht erforderlich, in der durch die Tabelle definierten Reihenfolge einzufügen Die Reihenfolge der Werte ist dieselbe wie die Reihenfolge der Spaltenfelder.
【Beispiel 2】Fügen Sie einen neuen Datensatz in die Tabelle tb_courses ein, der Wert von course_id ist 2, der Wert von course_name ist „Database“, der Wert von course_grade ist 3 und der Wert von info ist „MySQL“. Die Eingabe-SQL-Anweisung und die Ausführungsergebnisse werden unten angezeigt.
mysql> INSERT INTO tb_courses -> (course_name,course_info,course_id,course_grade) -> VALUES('Database','MySQL',2,3); Query OK, 1 rows affected (0.08 sec) mysql> SELECT * FROM tb_courses; +-----------+-------------+--------------+------------------+ | course_id | course_name | course_grade | course_info | +-----------+-------------+--------------+------------------+ | 1 | Network | 3 | Computer Network | | 2 | Database | 3 | MySQL | +-----------+-------------+--------------+------------------+ 2 rows in set (0.00 sec)
Wenn Sie INSERT zum Einfügen von Daten verwenden, darf die Spaltennamenliste columns_list leer sein. Zu diesem Zeitpunkt muss die Werteliste für jedes Feld der Tabelle einen Wert angeben und die Reihenfolge der Werte muss sein entspricht der Reihenfolge, in der die Felder in der Datentabelle definiert sind.
【Beispiel 3】Fügen Sie einen neuen Datensatz in die Tabelle tb_courses ein, der Wert von course_id ist 3, der Wert von course_name ist „Java“, der Wert von course_grade ist 4 und der Wert von info ist „Jave EE“. Die Eingabe-SQL-Anweisung und die Ausführungsergebnisse werden unten angezeigt.
mysql> INSERT INTO tb_courses -> VLAUES(3,'Java',4,'Java EE'); Query OK, 1 rows affected (0.08 sec) mysql> SELECT * FROM tb_courses; +-----------+-------------+--------------+------------------+ | course_id | course_name | course_grade | course_info | +-----------+-------------+--------------+------------------+ | 1 | Network | 3 | Computer Network | | 2 | Database | 3 | MySQL | | 3 | Java | 4 | Java EE | +-----------+-------------+--------------+------------------+ 3 rows in set (0.00 sec)
In der INSERT-Anweisung ist keine Einfügungsliste angegeben, sondern nur eine Werteliste. In diesem Fall gibt die Werteliste die eingefügten Werte für jede Feldspalte an, und die Werte müssen in derselben Reihenfolge sein, in der die Felder in der Tabelle tb_courses definiert sind.
注意:虽然使用 INSERT 插入数据时可以忽略插入数据的列名称,若值不包含列名称,则 VALUES 关键字后面的值不仅要求完整,而且顺序必须和表定义时列的顺序相同。如果表的结构被修改,对列进行增加、删除或者位置改变操作,这些操作将使得用这种方式插入数据时的顺序也同时改变。如果指定列名称,就不会受到表结构改变的影响。
向表中指定字段添加值
为表的指定字段插入数据,是在 INSERT 语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值。
【实例 4】在 tb_courses 表中插入一条新记录,course_name 值为“System”,course_grade 值为 3,course_info 值为“Operating System”,输入的 SQL 语句和执行结果如下所示。
mysql> INSERT INTO tb_courses -> (course_name,course_grade,course_info) -> VALUES('System',3,'Operation System'); Query OK, 1 rows affected (0.08 sec) mysql> SELECT * FROM tb_courses; +-----------+-------------+--------------+------------------+ | course_id | course_name | course_grade | course_info | +-----------+-------------+--------------+------------------+ | 1 | Network | 3 | Computer Network | | 2 | Database | 3 | MySQL | | 3 | Java | 4 | Java EE | | 4 | System | 3 | Operating System | +-----------+-------------+--------------+------------------+ 4 rows in set (0.00 sec)
可以看到插入记录成功。如查询结果显示,这里的 course_id 字段自动添加了一个整数值 4。这时的 course_id 字段为表的主键,不能为空,系统自动为该字段插入自增的序列值。在插入记录时,如果某些字段没有指定插入值,MySQL 将插入该字段定义时的默认值。
使用 INSERT INTO…FROM 语句复制表数据
INSERT INTO…SELECT…FROM 语句用于快速地从一个或多个表中取出数据,并将这些数据作为行数据插入另一个表中。
SELECT 子句返回的是一个查询到的结果集,INSERT 语句将这个结果集插入指定表中,结果集中的每行数据的字段数、字段的数据类型都必须与被操作的表完全一致。
在数据库 test_db 中创建一个与 tb_courses 表结构相同的数据表 tb_courses_new,创建表的 SQL 语句和执行过程如下所示。
mysql> CREATE TABLE tb_courses_new -> ( -> course_id INT NOT NULL AUTO_INCREMENT, -> course_name CHAR(40) NOT NULL, -> course_grade FLOAT NOT NULL, -> course_info CHAR(100) NULL, -> PRIMARY KEY(course_id) -> ); Query OK, 0 rows affected (0.00 sec) mysql> SELECT * FROM tb_courses_new; Empty set (0.00 sec)
【实例 5】从 tb_courses 表中查询所有的记录,并将其插入 tb_courses_new 表中。输入的 SQL 语句和执行结果如下所示。
mysql> INSERT INTO tb_courses_new -> (course_id,course_name,course_grade,course_info) -> SELECT course_id,course_name,course_grade,course_info -> FROM tb_courses; Query OK, 4 rows affected (0.17 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM tb_courses_new; +-----------+-------------+--------------+------------------+ | course_id | course_name | course_grade | course_info | +-----------+-------------+--------------+------------------+ | 1 | Network | 3 | Computer Network | | 2 | Database | 3 | MySQL | | 3 | Java | 4 | Java EE | | 4 | System | 3 | Operating System | +-----------+-------------+--------------+------------------+ 4 rows in set (0.00 sec)
推荐教程:mysql视频教程
Das obige ist der detaillierte Inhalt vonWie füge ich mehrere Daten in MySQL ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!