Maison  >  Article  >  base de données  >  Comment insérer plusieurs éléments de données dans MySQL ?

Comment insérer plusieurs éléments de données dans MySQL ?

青灯夜游
青灯夜游original
2020-10-02 11:37:5222505parcourir

Méthode MySQL pour insérer plusieurs éléments de données : 1. Utilisez l'instruction "INSERT INTO table name field list VALUES (value 1) ..., (value n);" 2. Utilisez " INSERT INTO nom de la table SET Champ 1 = valeur 1, champ 2 = valeur 2,..." L'instruction insère des données.

Comment insérer plusieurs éléments de données dans MySQL ?

Une fois la base de données et la table créées avec succès, les données doivent être insérées dans la table de la base de données. Dans MySQL, vous pouvez utiliser l'instruction INSERT pour insérer une ou plusieurs lignes de données de tuple dans une table existante de la base de données.

Syntaxe de base

L'instruction INSERT a deux formes de syntaxe, à savoir l'instruction INSERT…VALUES et l'instruction INSERT…SET.

1) Instruction INSERT...VALUES

Le format de syntaxe d'INSERT VALUES est :

INSERT INTO <表名> [ <列名1> [ , … <列名n>] ]
VALUES (值1) [… , (值n) ];

La syntaxe est décrite ci-dessous.

  • 87031497877ef0fde159265152a1fea9 : Précisez le nom de la table sur laquelle opérer.

  • 97af8c213456911f226c06ffbbe12800 : spécifiez le nom de la colonne dans laquelle les données doivent être insérées. Si des données sont insérées dans toutes les colonnes de la table, tous les noms de colonnes peuvent être omis et INSERTccc43248daffbac9770dee47fdaff697VALUES(…) peut être utilisé directement.

Clause VALUES ou VALUE : Cette clause contient la liste des données à insérer. L'ordre des données dans la liste de données doit correspondre à l'ordre des colonnes.

2) Instruction INSERT...SET

Le format de syntaxe est :

INSERT INTO <表名>
SET <列名1> = <值1>,
        <列名2> = <值2>,
        …

Cette instruction permet de spécifier directement les valeurs correspondantes pour certaines colonnes de la table. La valeur de la colonne, c'est-à-dire le nom de la colonne des données à insérer, est spécifiée dans la clause SET col_name est le nom de la colonne spécifié et le signe égal est suivi des données spécifiées. colonnes, la valeur de la colonne sera spécifiée comme valeur par défaut de la colonne.

Cela peut être vu à partir des deux formes d'instruction INSERT :

  • Utilisez l'instruction INSERT...VALUES pour insérer une ligne de données ou plusieurs lignes de données dans le table;

  • Utilisez l'instruction INSERT…SET pour spécifier la valeur de chaque colonne dans la ligne insérée, ou vous pouvez spécifier la valeur de certaines colonnes ; >

    Instruction INSERT…SELECT Insère les données d'autres tables dans la table.
  • L'instruction INSERT…SET peut être utilisée pour insérer des valeurs de colonnes partielles dans le tableau, ce qui est plus flexible ;
  • INSERT… Instruction VALUES Plusieurs éléments de données peuvent être insérés en même temps.
  • Dans MySQL, le traitement de plusieurs insertions avec une seule instruction INSERT est plus rapide que l'utilisation de plusieurs instructions INSERT.
Lorsque vous utilisez une seule instruction INSERT pour insérer plusieurs lignes de données, il vous suffit de mettre chaque ligne de données entre parenthèses.

Ajoutez des valeurs à tous les champs du tableau

Créez une table d'informations sur le cours tb_courses dans la base de données test_db, y compris le numéro de cours course_id, le nom du cours course_name, les crédits de cours course_grade et notes de cours course_info, l'instruction SQL d'entrée et les résultats d'exécution sont les suivants.

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)

Il existe deux façons d'insérer des valeurs dans tous les champs du tableau : l'une consiste à spécifier tous les noms de champs ; l'autre consiste à ne pas spécifier de noms de champs du tout.

[Exemple 1] Insérez un nouvel enregistrement dans la table tb_courses, la valeur course_id est 1, la valeur course_name est "Network", la valeur course_grade est 3 et la valeur info est "Computer Network".

Avant d'effectuer l'opération d'insertion, affichez l'instruction SQL et les résultats d'exécution de la table tb_courses comme indiqué ci-dessous.

mysql> SELECT * FROM tb_courses;
Empty set (0.00 sec)

Le résultat de la requête montre que le contenu actuel de la table est vide et qu'il n'y a aucune donnée. Ensuite, insérez les données. L'instruction SQL d'entrée et le processus d'exécution sont les suivants.

mysql> INSERT INTO tb_courses
    -> (course_id,course_name,course_grade,course_info)
    -> VALUES(1,&#39;Network&#39;,3,&#39;Computer Network&#39;);
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)

Vous pouvez voir que l'enregistrement a été inséré avec succès. Lors de l'insertion de données, tous les champs de la table tb_courses sont spécifiés, donc de nouvelles valeurs seront insérées pour chaque champ.

L'ordre des noms de colonnes après l'instruction INSERT n'a pas besoin d'être l'ordre lorsque la table tb_courses est définie, c'est-à-dire que lors de l'insertion de données, il n'est pas nécessaire d'insérer dans l'ordre défini par la table. , tant que l'ordre des valeurs est le même que l'ordre des champs de la colonne.

[Exemple 2] Insérez un nouvel enregistrement dans la table tb_courses, la valeur course_id est 2, la valeur course_name est "Database", la valeur course_grade est 3 et la valeur info est "MySQL". L'instruction SQL d'entrée et les résultats de l'exécution sont présentés ci-dessous.

mysql> INSERT INTO tb_courses
    -> (course_name,course_info,course_id,course_grade)
    -> VALUES(&#39;Database&#39;,&#39;MySQL&#39;,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)

Lorsque vous utilisez INSERT pour insérer des données, la liste de noms de colonnes column_list peut être vide. À ce stade, la liste de valeurs doit spécifier une valeur pour chaque champ de la table et l'ordre des valeurs. ​​doit être le même que l'ordre dans lequel les champs sont définis dans la table de données.

[Exemple 3] Insérez un nouvel enregistrement dans la table tb_courses, la valeur course_id est 3, la valeur course_name est "Java", la valeur course_grade est 4 et la valeur info est "Jave EE". L'instruction SQL d'entrée et les résultats de l'exécution sont présentés ci-dessous.

mysql> INSERT INTO tb_courses
    -> VLAUES(3,&#39;Java&#39;,4,&#39;Java EE&#39;);
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)

Il n'y a pas de liste d'insertion spécifiée dans l'instruction INSERT, seulement une liste de valeurs. Dans ce cas, la liste de valeurs spécifie les valeurs insérées pour chaque colonne de champ, et les valeurs doivent être dans le même ordre que celui dans lequel les champs sont définis dans la table tb_courses.

注意:虽然使用 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(&#39;System&#39;,3,&#39;Operation System&#39;);
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视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn