MySQL必知必会:数据插入(Insert)

本篇文章介绍如何使用Insert语句将数据插入到数据库。

数据插入

增删改查是数据库最常用的4个命令,插入算是第二常用,第一是SELECT。插入数据的方式大概有4种

  1. 插入完整的行

  2. 插入行的一部分

  3. 插入多行数据(批量插入)

  4. 插入来自查询的数据

插入完整的行

使用Insert将一条数据插入数据库是最简单也是最基本的操作。插入操作有两种写法。

顺序插入

顺序插入指的是:给出数据库名和需要插入数据,按照数据库字段排列顺序将数据插入数据库。

举个例子:

INSERT INTO `test`.`br_user` (`user_id`, `name`, `password`, `email`) VALUES (NULL, '星空幻颖', '123456', '123@xyz.com');

这条语句向用户表插入一条用户数据。给出了姓名、密码和邮箱3个字段,其中user_id设为NULL,这样Mysql就会为我们自动创建一个自增长ID

这种顺序插入方式,必须和数据库字段一一对应的给出每个值,如果不想给值,可以设为NULL(在数据允许的情况下)。由于位置匹配有要求,所以十分不安全。假设我们需要调增数据库结构时候,此语句插入数据将会发生错误。所以一般情况下我们不采用这种方式。

字段名+值插入

首先给个例子:

INSERT INTO `test`.`br_user` (`user_id`, `name`, `password`, `email`) VALUES (NULL, '星空幻颖', '123456', '123@xyz.com');

上面这条语句可以实现和顺序插入一样的功能,但我们发现它相比于顺序插入多给出了字段名,这种方式稍微复杂点儿,但是更为安全。

在插入数据行时候,Mysql将会使用VALUES的值填入对应字段名,例如星空幻颖将会被插入到name字段。因为提供了字段名,所以字段的顺序也不一定需要按照数据库字段排序。

比方我们可以改写上面的SQL语句:

INSERT INTO `test`.`br_user` (`user_id`, `password`, `email`, `name`) VALUES (NULL, '123456', '123@xyz.com', '星空幻颖');

我们将name调增到了最后一个,但是这并不影响插入的结果。

甚至我们可以省去不写某些字段的值。(前提是字段允许为空或给出默认值的情况下)

INSERT INTO `test`.`br_user` (`password`, `name`) VALUES ('123456', '星空幻颖');

这样就安全了很多,即使我们调整数据库结构,新增一个字段,只要我们给出默认值就没有任何问题。

插入多行(批量插入)

Mysql可以一次插入一条记录到数据库,也支持一次插入多条记录。只需要给出多个VALUES使用逗号分隔(使用圆括号括起来),就可以一次插入多条记录。

INSERT INTO `test`.`br_user` (`user_id`, `password`, `email`, `name`) 
VALUES (NULL, '123456', '1234@xyz.com', '星空幻颖'),
(NULL, '123456', '456@xyz.com', '星空幻颖2'),
(NULL, '123456', '789@xyz.com', '星空幻颖3'),
(NULL, '123456', '222@xyz.com', '星空幻颖4');

注意每条插入值的顺序要和你给出的字段顺序一致。

批量插入数据记录

建议:在实际开发中,如果需要插入多条数据尽量使用批量插入。因为速度比一条一条插入块,性能更好。

插入检索出的数据

相同表结构

假设一个场景,我们有两张用户表,现在需要将其用户进行合并。首先我们可能会想到,将一张表数据查出,在放入到另外一张表合并。

但是有了插入检索出数据这个功能,就不需要这么麻烦了。Mysql可以一次帮我们处理好。

给出两张表br_userbr_user2。为作区分,我把br_user2姓名都改为了数字

图片描述

图片描述

INSERT INTO br_user(`password`, `email`, `name`) SELECT `password`, `email`, `name` FROM br_user2;

这条语句看上去好像是两个语句,但是他执行的是一个功能:将br_user2的数据挪到了br_user,一次性完成。

这里的插入多少记录到br_user决定了你的SELECT检索出来多少记录,如果一条也没有检索到,也不会报错,毕竟是合法的。当然,你也可以在SELECT语句后面使用where条件筛选数据。

提醒:这里复制数据到另外一个表,最好不要使用原来的表id,防止和需要合并的表冲突,除非你确定不会冲突。还有字段类型,如果检索出来为字符串,而插入的为整型,Mysql会帮你转换了

不同表结构

上面的例子我们为了简单明了,使用了两张完全相同结构的表。其实Mysql根本不关心你两个表结构是否相同,也不关心你检索的字段是否相同,只关心你检索出来的字段顺序。简单来说,就是你检索出来的第一个字段就会被插入到第一个字段,(上方的password会被插入到password字段),以此类推。

为了演示这个效果,我们给出一个驴唇不对马嘴的两张表,来展示强烈对比:

还是那张br_user,另外我们再给出一张br_region地区表,完全不一样。

图片描述

INSERT INTO br_user(`password`, `email`, `name`) SELECT `region_py`, `region_type`, `region_name` FROM br_region where region_id <10;

由于br_region表数据量太大,我们只选取了region_id < 10的,刚好说了一下上面的附带where筛选。

图片描述

这里region_py被放入了passwordregion_type被放入了emailregion_name被放入了name。他们有啥关系?啥关系都没有。

这个为我们以后不同表之间转移数据提供了方便。你可以帮老板造假数据,来个10万用户。

星空幻颖,严颖

个人主页:segmentfault

天天找资料找不到,噗噗噗,分享一个资源合集网站:笔点资源

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《MySQL必知必会》是一本经典的MySQL数据库入门教材,该书由Ben Forta撰写,适合初学者和有一定数据库基础的读者阅读。这本书着重介绍了MySQL数据库的基本原理、数据类型、查询语句、数据操作、事务控制以及安全性等方面的知识。 本书以简单易懂的方式讲解了MySQL数据库的基本概念和操作技巧,适合初学者进行自学。无论是想学习数据库编程的开发人员,还是想了解数据库管理的系统管理员,都可以通过阅读本书掌握必要的MySQL数据库知识。 《MySQL必知必会》的内容丰富全面,并且配有大量的示例和练习题,读者可以通过实践加深对知识的理解和掌握。此外,该书还介绍了一些高级主题,如存储过程、触发器和视图等,帮助读者进一步提升数据库应用能力。 总的来说,《MySQL必知必会》是一本对于学习MySQL数据库的人来说非常有价值的参考书。无论是初学者还是有一定数据库基础的人,都可以通过阅读本书快速学习和掌握MySQL数据库的相关知识。读者可以根据自己的需求和兴趣,选择适合自己的章节进行阅读和学习。 ### 回答2: MySQL必知必会是一本非常有价值的参考书籍,对于想要学习和掌握MySQL数据库的人来说非常有用。这本书详细介绍了MySQL数据库的基本概念、基础语法和高级功能,以及如何优化和管理数据库。 首先,MySQL必知必会通过简洁清晰的语言和丰富的实例,介绍了数据库的概念和原理,帮助读者建立起正确的数据库思维模式。它从关系型数据库的基本概念开始讲解,包括表、行、列、主键等,然后逐步介绍了SQL语言的基本语法和常用命令,如SELECT、INSERT、UPDATE、DELETE等。 其次,MySQL必知必会还深入讲解了MySQL数据库的高级功能,如多表查询、子查询、连接和视图等。这些功能对于处理复杂的数据查询和分析非常重要,通过学习这些知识,读者可以更加灵活地操作数据库,提高工作效率。 此外,MySQL必知必会还涵盖了数据库优化和管理的内容。它介绍了如何正确设计和规划数据库结构,以及如何使用索引和分区来提高查询效率。此外,它还讲解了如何备份和恢复数据库,以及如何监控和优化数据库性能。 总之,MySQL必知必会是一本详细介绍MySQL数据库基础知识和高级功能的优秀书籍。无论是初学者还是有一定经验的开发者,都可以从中学习到很多宝贵的知识和技巧。它不仅可以帮助读者快速入门MySQL,还可以帮助他们提高数据库操作的能力和效率。无论是学习、工作还是项目开发,都值得推荐阅读。 ### 回答3: MySQL必知必会是一本非常受欢迎的MySQL入门书籍,适合初学者和有一定基础的用户阅读。这本书的作者是Ben Forta,他详细介绍了MySQL数据库的基本概念、语法以及如何进行数据库设计和管理。 MySQL必知必会的特点之一是其简洁明了的语言和结构。它从最基本的概念开始讲解,逐步引导读者了解如何创建和管理数据库、表和索引。书中还包含大量的示例和练习题,帮助读者加深理解,并提供了一些常见错误和解决方法。 此外,这本书还涵盖了MySQL数据库的高级主题,如安全性、性能调优和复制。通过深入研究这些主题,读者可以进一步提升他们在MySQL数据库管理方面的技能。 MySQL必知必会还强调了SQL语言的重要性,它是用于与数据库进行交互的主要语言。读者将学习如何使用SQL语句查询、插入、更新和删除数据。此外,书中还介绍了一些高级的SQL技巧,如JOIN和子查询。 总的来说,MySQL必知必会是一本非常实用的MySQL入门书籍,不仅适合初学者,也适合那些希望巩固和提升MySQL数据库管理技能的用户。无论是在学术领域还是实际工作中,掌握MySQL数据库是一个非常有用的技能,而这本书可以帮助读者快速入门和精通这一技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值