Code前端首页关于Code前端联系我们

MySQL 入门教程:将数据插入数据库表的 INSERT 语句

terry 2年前 (2023-09-26) 阅读数 43 #数据库

了解如何使用 MySQL INSERT 语句将数据插入数据库表。

1。简单的 MySQL 命令 INSERT

MySQL 命令 INSERT 允许您向表中插入一行或多行。命令 INSERT 的语法如下所示:

INSERT INTO table(column1,column2...)
VALUES (value1,value2,...);
SQL

首先是 ,然后是❀,然后是❀,然后是❀ 名称 名称TO INSERT 表 - 单独括号中的列列表。
然后,在关键字 VALUES 之后将相应列的值放在括号中,并用逗号分隔。

在执行插入命令之前,您必须拥有INSERT 权限才能执行INSERT 命令。 ? likes表,使用命令INSERT,如下:

INSERT INTO tasks(subject,start_date,end_date,description)
VALUES('Learn MySQL INSERT','2017-07-21','2017-07-22','Start learning..');
SQL执行此命令后将按数字报告消息 MySQL 执行此命令后将返回 SQL 行 这种情况,一行受到影响。 ? - 插入多行

如果您想一次向表中插入多行,您可以使用命令 INSERT,其语法如下:

INSERT INTO table(column1,column2...)
VALUES (value1,value2,...),
       (value1,value2,...),
...;
SQL

在此表单中列出每个行以逗号分隔。例如,要向表 tasks 中插入多行,请使用以下命令:

INSERT INTO tasks(subject,start_date,end_date,description)
VALUES ('任务-1','2017-01-01','2017-01-02','Description 1'),
       ('任务-2','2017-01-01','2017-01-02','Description 2'),
       ('任务-3','2017-01-01','2017-01-02','Description 3');
SQL

执行上述命令后,将返回 - ❙❙l ‶‶‶‶

任务表数据如下-

select * from tasks;
SQL

执行上述查询,得到以下结果-

+---------+--------------------+------------+------------+------------------+
| task_id | subject            | start_date | end_date   | description      |
+---------+--------------------+------------+------------+------------------+
|       1 | Learn MySQL INSERT | 2017-07-21 | 2017-07-22 | Start learning.. |
|       2 | 任务-1             | 2017-01-01 | 2017-01-02 | Description 1    |
|       3 | 任务-2             | 2017-01-01 | 2017-01-02 | Description 2    |
|       4 | 任务-3             | 2017-01-01 | 2017-01-02 | Description 3    |
+---------+--------------------+------------+------------+------------------+
4 rows in set
SQL

如果为表中的所有列指定了适当的列值,则可以忽略INSERT中的列列表,如下所示:

INSERT INTO table
VALUES (value1,value2,...);
SQL

或-

INSERT INTO table
VALUES (value1,value2,...),
       (value1,value2,...),
...;
SQL-递增列(如taskid) 列)指定一个值因为MySQL会自动生成自增列的值。

3。 MySQL INSERT 与 SELECT 子句

在 MySQL 中,INSERT 命令的值可以使用 SELECT 命令返回的列和值来填充。此功能非常方便,因为您可以使用子句 INSERTSELECT 复制整个表或部分表,如下所示: copy

任务表

是复制到表 tasks_bak

首先 通过复制结构 ❙tasks 创建一个名为 tasks_bak 的新表,如下所示: 步骤 2 ,使用以下命令INSERT将表tasks中的数据放入表❙❙❙❙❙❙❙❀tasks_bak❀第三步,检查数据在表tasks_bak中 查看表 tasks 中的副本是否实际完成。

mysql> select * from tasks;
+---------+--------------------+------------+------------+------------------+
| task_id | subject            | start_date | end_date   | description      |
+---------+--------------------+------------+------------+------------------+
|       1 | Learn MySQL INSERT | 2017-07-21 | 2017-07-22 | Start learning.. |
|       2 | 任务-1             | 2017-01-01 | 2017-01-02 | Description 1    |
|       3 | 任务-2             | 2017-01-01 | 2017-01-02 | Description 2    |
|       4 | 任务-3             | 2017-01-01 | 2017-01-02 | Description 3    |
+---------+--------------------+------------+------------+------------------+
4 rows in set
SQL

4。 MySQL INSERT 和 ON DUPLICATE KEY UPDATE

如果新行违反了 PRIMARY KEY 或 UNIQUE 约束,MySQL 将抛出错误。例如,如果执行以下命令:

INSERT INTO tasks(task_id,subject,start_date,end_date,description)
VALUES (4,'Test ON DUPLICATE KEY UPDATE','2017-01-01','2017-01-02','Next Priority');
SQL

MySQL 不满足并抛出错误消息:

Error Code: 1062. Duplicate entry '4' for key 'PRIMARY' 0.016 sec
SQL

因为主键❀列❙已存在于表中❙‶‶有一行的值为 4 ,因此该语句违反了约束

PRIMARY KEY

但是,如果您在INSERT命令中指定ON DUPLICATE KEY UPDATE选项,MySQL将插入新行或用新值更新原始行记录。

例如,以下命令将task_id4 的行更新为新的_id 和 。

INSERT INTO tasks(task_id,subject,start_date,end_date,description)
VALUES (4,'Test ON DUPLICATE KEY UPDATE','2017-01-01','2017-01-02','Next Priority')
ON DUPLICATE KEY UPDATE 
   task_id = task_id + 1, 
   subject = 'Test ON DUPLICATE KEY UPDATE';
SQL

执行上述命令后,MySQL将发送一条消息,表明第2行受到影响。现在我们看表tasks中的数据:

mysql> select * from tasks;
+---------+------------------------------+------------+------------+------------------+
| task_id | subject                      | start_date | end_date   | description      |
+---------+------------------------------+------------+------------+------------------+
|       1 | Learn MySQL INSERT           | 2017-07-21 | 2017-07-22 | Start learning.. |
|       2 | 任务-1                       | 2017-01-01 | 2017-01-02 | Description 1    |
|       3 | 任务-2                       | 2017-01-01 | 2017-01-02 | Description 2    |
|       5 | Test ON DUPLICATE KEY UPDATE | 2017-01-01 | 2017-01-02 | Description 3    |
+---------+------------------------------+------------+------------+------------------+
4 rows in set
SQL

新行没有插入,而是值为❙❝taskSQL的行 是更新上述语句 INSERT ON DUPLICATE KEY UPDATE 相当于以下 UPDATE 语句:

UPDATE tasks 
SET 
    task_id = task_id + 1,
    subject = 'Test ON DUPLICATE KEY UPDATE'
WHERE
    task_id = 4;
SQL

有关 INSERT KEY‶UPDATEICATE 语句的更多信息,请参阅 My SQL插入或更新教程。

在本教程中,我们向您展示了如何使用不同形式的 MySQL 命令INSERT 将数据插入表中。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门