【MySQL初阶】05-CRUD-Create
前言: 那么MySQL的数据表相关操作学习完之后,我们已经掌握了对表的结构的增删改查便已经有一个基本的操作,那么创建出表结构之后,我们是为了拿他来存储数据的,那么既然表用于存储数据,我们可不可以对表中存储的数据进行一定的增删改查等操作呢?
MySQL表中数据的增删改查
我们知道,以后在开发中使用最多的就是所谓的增删改查,增删改查就是传说中的CRUD
- C-Create 新增
- R-Retrieve 检索,查询
- U-Update 更新 修改
- D-Delete 删除
而我们本期将介绍的是Create增操作,这个其实不难理解,你想对数据操作,那么你就先得有数据对吧
回顾数据库中关系
数据表的准备:
首先选中数据库并查看数据库中就只有一张student表
那么现在我需要创建一张user_db表来作为我们的测试表
查看数据表的结构
单行数据的全列插入
1.完整形式
语法:
insert into 表名(字段1,字段2,字段3,...) values(值1,值2,值3,...);
语法的巧记方法看下图
MySQL是一个靠指令来沟通的语言,那么我们如何正确的和MySQL沟通,才可以让MySQL给我们做牛马呢?
细节补充
也就是说写SQL代码的时候不要刻意的去背语法,而是要理解我们是怎么与MySQL沟通的,只要知道沟通的方式方法,那么具体的语法前面可以去查看官方文档或者说是查ai即可,只要我们写多了,那么自然就记住了
那么 后面的大多SQL的代码 我们都是以这样的形式和MySQL沟通的比如 查询select、修改update、删除delete
细节1:正确的插入演示
细节2:values列表中的数据的数目和顺序必须和表(user_bd)的字段的数目的顺序一致
1.数目不匹配的情况
2.顺序不匹配的情况
细节3:对于顺序不匹配是因为MySQL类型转换转不过去
说明:MySQL是一个弱类型语言
那么在你插入数据的时候会发生一个隐式转换
1.如果转换成功,那么就正确
2.如果转换失败,那么就报错
成功
失败
补充:MySQL中字符串可使用单引号,也可用双引号,但是一般我们都是使用单引号。
2.简写形式
说明:对于全列插入是可以使用简写形式的
语法:
insert into 表名 values(字段1,字段2,字段3,...);
细节1:正确演示
细节2:values列表中的数据的数目和顺序必须和表中的字段的数目和顺序一致
多行全列插入
说明:我们也可以一次性插入多行数据
语法:
insert into 表名[(字段1,字段2,字段3,...)] values(值1,值2,值3,...),(值1,值2,值3,...),(值1,值2,值3,...),...;说明:中括号代表可写可不写,注意了,只有全列插入,才可以使用简写形式。
完整演示
- 注意1:其余的易错点和前面也是一样的,每一行中的数据values列表中的数目和顺序和字段的数目和顺序一致
- 注意2:行与行之间使用逗号分开
单行指定列插入
说明:MYSQL的插入不仅支持全列插入还支持指定列插入,学习了全列插入之后,那么指定列插入的语法就很简单了。
语法:
insert into 表名(指定列1,指定列2,指定列3,...) values(对应值1,对应值2,对应值3,...);
细节1:正确演示:
细节2:对于指定列插入的时候,指定列插入对应的值,非指定类使用默认值,一般默认值是NULL
注意:values列表中的数目和顺序和指定列中的数据和顺序必须一致
多行指定列插入
说明:指定列的多行插入语法和前面是一致的
语法:
insert into 表名(指定列1,指定列2,指定列3,...) values(对应值1,对应值2,对应值3,...),(对应值1,对应值2,对应值3,...),(对应值1,对应值2,对应值3,...),...; 注意:对于指定列,必须指定你所要插入的字段,只有全列插入才可以使用简写形式(全列可以不用指定指定列)
完整演示:
- 注意1:各行之间使用逗号分隔开
- 注意2:values列表中的数据的数目和顺序要和指定字段列表中的字段的数目和顺序必须一致
单行插入和多行插入的效率问题
比如现在 插入以下数据:
方式一:使用多行插入
insert into user_db (id, name, age) values
(1, '张三', 25),
(2, '李四', 30),
(3, '王五', 28),
(4, '赵六', 35),
(5, '钱七', 22),
(6, '孙八', 29),
(7, '周九', 31),
(8, '吴十', 26),
(9, '郑十一', 33),
(10, '王十二', 27);
方式二:使用单行插入
-- 使用单行插入形式插入10条数据
INSERT INTO user_db (id, name, age) VALUES (1, '张三', 25);
INSERT INTO user_db (id, name, age) VALUES (2, '李四', 30);
INSERT INTO user_db (id, name, age) VALUES (3, '王五', 28);
INSERT INTO user_db (id, name, age) VALUES (4, '赵六', 35);
INSERT INTO user_db (id, name, age) VALUES (5, '钱七', 22);
INSERT INTO user_db (id, name, age) VALUES (6, '孙八', 29);
INSERT INTO user_db (id, name, age) VALUES (7, '周九', 31);
INSERT INTO user_db (id, name, age) VALUES (8, '吴十', 26);
INSERT INTO user_db (id, name, age) VALUES (9, '郑十一', 33);
INSERT INTO user_db (id, name, age) VALUES (10, '王十二', 27);
结论是:多行插入比单行插入的效率高
原因:
- 多行插入:有1个insert into,那么说明客户端和服务器指示进行了一次网络通信(一次插入一条,插10次)
- 单行出入:有10个insert into,那么说明客户端和服务器进行了10次网络通信(一次插入10条,插1次)
所以,一次网络通信是有开销的,那么如果我们插入的数据足够多的时候,如果采用单行插入,那么网络开销就会很高,导致性能下降,因此一般对于数据特别多的时候我们使用的是多行插入
到此,我们的CURD中的C-新增语句也就差不多了,SQL语法就是和MySQL沟通的规则,理解怎么和MySQL沟通,那么再配合查查文档,多多练习便可以将其掌握。