ホームページ  >  記事  >  データベース  >  mysqlに複数のデータを挿入するにはどうすればよいですか?

mysqlに複数のデータを挿入するにはどうすればよいですか?

青灯夜游
青灯夜游オリジナル
2020-10-02 11:37:5222487ブラウズ

Mysql で複数のデータを挿入する方法: 1. 「INSERT INTO テーブル名フィールド リスト VALUES (値 1) ..., (値 n);」ステートメントを使用してデータを挿入します。 2. 「」を使用します。 INSERT INTO テーブル名 SET フィールド 1 = 値 1、フィールド 2 = 値 2、...」ステートメントはデータを挿入します。

mysqlに複数のデータを挿入するにはどうすればよいですか?

#データベースとテーブルが正常に作成されたら、データをデータベース テーブルに挿入する必要があります。 MySQL では、INSERT ステートメントを使用して、タプル データの 1 行以上をデータベース内の既存のテーブルに挿入できます。

基本構文

INSERT ステートメントには、INSERT…VALUES ステートメントと INSERT…SET ステートメントという 2 つの構文形式があります。

1) INSERT...VALUES ステートメント

INSERT VALUES の構文形式は次のとおりです。

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

構文は次のように説明されます。 。

  • d9c3f208c735dc19d50c4f24e2d3872e: 操作対象のテーブル名を指定します。

  • dbbf19904bed3b90013ba2fcce963ac6: データを挿入する必要がある列名を指定します。テーブル内のすべての列にデータを挿入する場合、すべての列名を省略でき、INSERTVALUES(…) を直接使用できます。

VALUES または VALUE 句: この句には、挿入されるデータのリストが含まれます。データ リスト内のデータの順序は、列の順序に対応している必要があります。

2) INSERT...SET ステートメント

構文形式は次のとおりです:

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

このステートメントは、対応する値を直接指定するために使用されます。テーブル内の特定の列の場合。列の値、つまり、挿入されるデータの列名が SET 句で指定されます。col_name は指定された列名であり、等号の後に指定されたデータが続きます。列の場合、列の値は列のデフォルト値として指定されます。

これは、INSERT ステートメントの 2 つの形式からわかります。

  • INSERT...VALUES ステートメントを使用して、1 行または複数行のデータをtable;

  • INSERT…SET ステートメントを使用して、挿入された行の各列の値を指定するか、一部の列の値を指定します;

  • INSERT…SELECT ステートメント 他のテーブルのデータをテーブルに挿入します。

  • INSERT…SET ステートメントを使用すると、一部の列の値をテーブルに挿入でき、より柔軟になります。

  • INSERT…VALUES 文 一度に複数のデータを挿入できます。

MySQL では、複数の INSERT ステートメントを使用するよりも、単一の INSERT ステートメントで複数の挿入を処理する方が高速です。

単一の INSERT ステートメントを使用して複数行のデータを挿入する場合、必要なのはデータの各行をかっこで囲むことだけです。

テーブル内のすべてのフィールドに値を追加します

test_db データベースに、コース番号 course_id、コース名 course_name、コース クレジットを含むコース情報テーブル tb_courses を作成します。 course_gradeとコースノートcourse_info、入力したSQL文と実行結果は以下のとおりです。

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)

テーブル内のすべてのフィールドに値を挿入するには 2 つの方法があります: 1 つはすべてのフィールド名を指定する方法、もう 1 つはフィールド名をまったく指定しない方法です。

[例 1] tb_courses テーブルに新しいレコードを挿入します。course_id 値は 1、course_name 値は「Network」、course_grade 値は 3、info 値は「Computer Network」です。

挿入操作を実行する前に、次のように tb_courses テーブルの SQL ステートメントと実行結果を確認します。

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

クエリの結果は、現在のテーブルの内容が空でデータが存在しないことを示しています。次に、データの挿入操作を実行します。入力 SQL 文と実行プロセスは次のとおりです。

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)

レコードが正常に挿入されたことがわかります。データを挿入する場合、tb_courses テーブルのすべてのフィールドが指定されるため、フィールドごとに新しい値が挿入されます。

INSERT ステートメント後の列名の順序は、tb_courses テーブルが定義されているときの順序ではない可能性があります。つまり、データを挿入するときに、テーブルで定義された順序で挿入する必要はありません。値の順序が列フィールドの順序と同じである限り。

[例 2] tb_courses テーブルに新しいレコードを挿入します。course_id 値は 2、course_name 値は「Database」、course_grade 値は 3、info 値は「MySQL」です。入力したSQL文と実行結果を以下に示します。

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)

INSERT を使用してデータを挿入する場合、列名リスト column_list は空にすることができます。このとき、値リストではテーブルの各フィールドの値と値の順序を指定する必要があります。データテーブルでフィールドが定義されている順序と同じである必要があります。

[例 3] tb_courses テーブルに新しいレコードを挿入します。course_id 値は 3、course_name 値は「Java」、course_grade 値は 4、info 値は「Jave EE」です。入力したSQL文と実行結果を以下に示します。

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)

INSERT ステートメントは挿入リストを指定せず、値リストのみを指定します。この場合、値リストは各フィールド列の挿入値を指定し、値は 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视频教程

以上がmysqlに複数のデータを挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。