mysql insert返回值是什么

mysql中,insert语句的返回值是新增数据的ID。INSERT语句用于向数据库已有的表中插入一行或者多行元组数据,语法“INSERT INTO table(column1,column2…) VALUES (value1,value2,…);”;“INSERT INTO”子句后的括号内指定表名和逗号分隔列的列表。

mysql insert返回值是什么

本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。

insert插入的返回值是新增数据的ID。当然,前提是数据库支持自增的ID主键;如果没有定义自增主键,那么将返回一个特殊的数。

MySQL INSERT:插入数据(添加数据)

数据库与表创建成功以后,需要向数据库的表中插入数据。在 MySQL 中可以使用 INSERT 语句向数据库已有的表中插入一行或者多行元组数据。

1. 简单的MySQL INSERT语句

MySQL INSERT语句用于将一行或多行插入到表中。下面说明了INSERT语句的语法:

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

首先,在INSERT INTO子句之后,在括号内指定表名和逗号分隔列的列表。
然后,将括号内的相应列的逗号分隔值放在VALUES关键字之后。

在执行插入语句前,需要具有执行INSERT语句的INSERT权限。

让我们创建一个名为tasks的新表来练习INSERT语句,参考以下创建语句 –

USE testdb;CREATE TABLE IF NOT EXISTS tasks (    task_id INT(11) AUTO_INCREMENT,    subject VARCHAR(45) DEFAULT NULL,    start_date DATE DEFAULT NULL,    end_date DATE DEFAULT NULL,    description VARCHAR(200) DEFAULT NULL,    PRIMARY KEY (task_id))ENGINE=InnoDB DEFAULT CHARSET=utf8;

例如,如果要将任务插入到tasts表中,则使用INSERT语句如下:

INSERT INTO tasks(subject,start_date,end_date,description)VALUES('Learn MySQL INSERT','2017-07-21','2017-07-22','Start learning..');

执行该语句后,MySQL返回一条消息以通知受影响的行数。在这种情况下,有一行受到影响。

现在使用以下语句查询 tasks 中的数据,如下所示 –

SELECT * FROM tasks;

执行上面查询语句,得到以下结果 –

+---------+--------------------+------------+------------+------------------+| task_id | subject            | start_date | end_date   | description      |+---------+--------------------+------------+------------+------------------+|       1 | Learn MySQL INSERT | 2017-07-21 | 2017-07-22 | Start learning.. |+---------+--------------------+------------+------------+------------------+1 row in set

2. MySQL INSERT – 插入多行

想要在表中一次插入多行,可以使用具有以下语法的INSERT语句:

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

在这种形式中,每行的值列表用逗号分隔。例如,要将多行插入到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');

执行上面语句后,返回 –

Query OK, 3 rows affectedRecords: 3  Duplicates: 0  Warnings: 0

现在查询tasks表中的数据,如下所示 –

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

如果为表中的所有列指定相应列的值,则可以忽略INSERT语句中的列列表,如下所示:

INSERT INTO tableVALUES (value1,value2,...);

或者-

INSERT INTO tableVALUES (value1,value2,...),       (value1,value2,...),...;

请注意,不必为自动递增列(例如taskid列)指定值,因为MySQL会自动为自动递增列生成值。

3. 具有SELECT子句的MySQL INSERT

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

INSERT INTO table_1SELECT c1, c2, FROM table_2;

假设要将tasks表复制到tasks_bak表。

首先,通过复制tasks表的结构,创建一个名为tasks_bak的新表,如下所示:

CREATE TABLE tasks_bak LIKE tasks;

第二步,使用以下INSERT语句将tasks表中的数据插入tasks_bak表:

INSERT INTO tasks_bakSELECT * FROM tasks;

第三步,检查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

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');

MySQL很不高兴,并向你扔来一个错误消息:

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

因为表中的主键task_id列已经有一个值为 4 的行了,所以该语句违反了PRIMARY KEY约束。

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

例如,以下语句使用新的task_idsubject来更新task_id4的行。

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';

执行上面语句后,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

新行没有被插入,但是更新了task_id值为4的行。上面的INSERT ON DUPLICATE KEY UPDATE语句等效于以下UPDATE语句:

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

【相关推荐:mysql视频教程】

以上就是mysql insert返回值是什么的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/169390.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
夸克AI怎么处理PDF文档_夸克AI PDF解析与批注功能教程
上一篇 2026年8月28日 15:14:03
如何解决 Swoole 协程与异步 I/O 操作中的资源竞争问题
下一篇 2026年8月28日 15:19:01

相关推荐

  • 如何在mysql中使用INSERT语句插入多条记录

    可以使用一条INSERT语句插入多条记录以提升效率,语法为INSERT INTO table_name (col1, col2) VALUES (v1a, v2a), (v1b, v2b);支持通过INSERT … SELECT从其他表批量导入数据,需注意字段顺序和数量一致、适当处理NU…

    2026年9月8日
    000
  • 如何在mysql中使用复合索引加速查询

    复合索引需遵循最左前缀原则,按查询条件顺序设计字段,如CREATE INDEX idx_city_age_gender ON users(city, age, gender),可高效支持WHERE city=’Beijing’ AND age=25查询,且覆盖索引能避免回表,…

    2026年9月8日
    100
  • Swoole的onWorkerStart回调是做什么用的

    onWorkerStart是在每个工作进程启动时自动触发的回调函数,用于初始化数据库连接、加载配置、注册全局对象等操作。每个Worker进程仅执行一次,适用于常驻内存的长期设置,如连接MySQL/Redis、复用配置、注册定时任务等。不同Worker间数据隔离,需独立初始化。注意事项包括避免阻塞操作…

    2026年9月8日
    000
  • 如何在mysql中拼接字符串字段

    使用CONCAT()函数可拼接字符串字段,如SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM users;若字段可能为NULL,推荐使用CONCAT_WS()或IFNULL()避免结果为NULL,例如CON…

    2026年9月8日
    100
  • MySQL分区表提升大数据性能_MySQL分区设计最佳实践分享

    MySQL分区表提升大数据性能_MySQL分区设计最佳实践分享MySQL分区表提升大数据性能_MySQL分区设计最佳实践分享MySQL分区表提升大数据性能_MySQL分区设计最佳实践分享MySQL分区表提升大数据性能_MySQL分区设计最佳实践分享

    mysql分区表适合数据量巨大、历史数据管理、特定分区访问、数据维护需求的场景。1. 数据量巨大时可提升查询性能;2. 适合按时间归档的历史数据管理;3. 查询集中在特定分区时效果最佳;4. 支持对单个分区进行维护操作。选择合适的分区策略如range、list、hash、key,需结合业务需求。分区…

    2026年9月8日 用户投稿
    200
  • 如何在mysql中安装mysql官方包

    推荐通过MySQL官网下载官方包安装,以确保获取最新版本和安全更新。1. Linux系统需先安装MySQL Yum或APT源,再安装服务器;2. 启动服务并运行安全脚本设置root密码等;3. 登录验证版本信息;4. Windows使用MySQL Installer按向导完成安装。 在 MySQL …

    2026年9月8日
    200
  • laravel如何使用GitHub Actions实现自动化部署_Laravel GitHub Actions自动化部署方法

    配置GitHub Actions可实现Laravel项目自动化部署,通过定义deploy.yml工作流,在代码推送到main分支时自动执行测试、构建并部署至服务器。 使用 GitHub Actions 实现 Laravel 项目的自动化部署,可以大幅减少手动操作,提升开发效率。整个流程包括代码推送后…

    2026年9月8日
    100
  • mysql如何处理null值

    正确处理MySQL中的NULL值需注意:NULL表示未知,不等于任何值,包括自身;使用IS NULL或IS NOT NULL判断,避免用=或!=;算术运算和比较操作涉及NULL结果为UNKNOWN;利用IFNULL、COALESCE、NULLIF等函数处理缺失数据;聚合函数自动忽略NULL,但COU…

    2026年9月8日
    000
  • 如何在mysql中开发餐饮点餐系统数据库

    答案:餐饮点餐系统需设计users、categories、dishes、tables、orders、order_items和bills七张核心表,通过外键关联实现菜品管理、订单处理与账单结算。 开发一个餐饮点餐系统的MySQL数据库,核心是设计清晰、结构合理的数据表,支持菜品管理、订单处理、用户信息…

    2026年9月8日
    200
  • mysql中升级版本如何避免数据丢失

    答案:升级MySQL需备份数据、检查兼容性、测试环境演练及按推荐方式升级。首先用mysqldump全量备份并验证,查阅官方文档确认版本间变更,使用mysqlcheck检查表完整性,在测试环境模拟升级流程,最后按版本选择原地升级或逻辑导出导入,并运行mysql_upgrade更新系统表,确保升级安全无…

    2026年9月8日
    000
  • 如何在mysql中防止数据泄露

    答案:防止MySQL数据泄露需从权限控制、传输加密、存储加密、审计监控、安全配置和备份脱敏入手。1. 严格分配最小必要权限,禁用高权限账户日常操作;2. 启用SSL/TLS加密通信,强制安全连接;3. 使用AES加密敏感字段,启用TDE并外置密钥管理;4. 开启审计日志记录登录与操作行为,集中分析异…

    2026年9月8日
    100
  • mysql中如何备份存储过程和触发器

    使用mysqldump并添加–routines和–triggers参数可确保存储过程和触发器被备份,推荐全库备份方式;单独导出时可通过SHOW CREATE语句获取定义;恢复时需保证对象依赖和用户权限;注意系统表访问限制与版本兼容性问题。 MySQL 中的存储过程和触发器会自…

    2026年9月8日
    000
  • 如何在mysql中使用缓存优化数据访问

    MySQL缓存优化需结合内部机制与外部系统。首先,旧版本可启用查询缓存,但频繁写表不适用;其次,优先调优InnoDB缓冲池,合理设置innodb_buffer_pool_size等参数以提升数据读取效率;再者,高并发场景应引入Redis或Memcached缓存热点数据,并防范缓存穿透与击穿;最后,通…

    2026年9月8日
    100
  • 什么是mysql数据库及其基本概念

    MySQL是开源关系型数据库,基于SQL操作,用于Web开发;包含数据库、表、行、列等基本概念,支持主键唯一标识和外键关联表,常用SQL语句包括SELECT、INSERT、UPDATE、DELETE,广泛应用于电商、博客等需数据持久化与一致性的场景。 MySQL 是一种广泛使用的关系型数据库管理系统…

    2026年9月8日
    100
  • 如何在mysql中管理跨库访问权限

    答案是通过GRANT语句为用户分配多个数据库的权限来实现跨库访问。具体操作包括:使用GRANT SELECT, INSERT ON db1. TO ‘user1’@’localhost’等方式授予特定数据库表的操作权限;若需执行跨库查询视图或存储过程,…

    2026年9月8日
    100
  • 如何在mysql中优化索引覆盖率

    答案:优化索引覆盖率需设计包含查询所有字段的联合索引,使查询无需回表。将WHERE条件字段前置,SELECT字段后置,确保索引覆盖查询,同时支持排序避免filesort,通过EXPLAIN验证是否出现”Using index”以确认效果。 在 MySQL 中,优化索引覆盖率的…

    2026年9月8日
    000
  • mysql中如何解决表空间不足问题

    答案:MySQL表空间不足需检查磁盘使用、分析大表、调整InnoDB配置并清理无用数据。先用df -h查磁盘,清理binlog或扩容;通过SQL查大表,归档数据或OPTIMIZE TABLE;确保innodb_file_per_table开启;删除废弃库表,定期监控预防。 MySQL表空间不足通常表…

    2026年9月8日
    100
  • MySQL备份与还原脚本流程_Sublime中执行导出导入命令行自动化

    MySQL备份与还原脚本流程_Sublime中执行导出导入命令行自动化MySQL备份与还原脚本流程_Sublime中执行导出导入命令行自动化MySQL备份与还原脚本流程_Sublime中执行导出导入命令行自动化MySQL备份与还原脚本流程_Sublime中执行导出导入命令行自动化

    通过编写shell脚本并配置sublime text的build system,可实现mysql备份与还原的一键自动化操作。具体步骤为:1. 创建backup_mysql.sh和restore_mysql.sh脚本,分别用于数据库备份和还原,并配置相关参数及路径;2. 在sublime中新建buil…

    2026年9月8日 用户投稿
    100
  • 如何在mysql中调试SQL执行计划异常

    答案是通过EXPLAIN分析执行计划,检查索引使用、统计信息和数据分布,结合慢查询日志定位问题。具体为:使用EXPLAIN查看type、key、rows和Extra字段,确认是否全表扫描或未用索引;通过FORCE INDEX测试索引效果;运行ANALYZE TABLE更新统计信息;检查隐式类型转换和…

    2026年9月8日
    100
  • 如何在mysql中恢复mysqldump备份文件

    恢复MySQL备份需确保文件有效、字符编码一致及权限正确。首先检查备份文件是否含CREATE DATABASE、USE等语句,确认其为标准mysqldump输出。若无创建数据库语句或需指定库名,应手动创建目标数据库:登录MySQL后执行CREATE DATABASE IF NOT EXISTS ta…

    2026年9月8日
    000

发表回复

登录后才能评论
关注微信