
数据库的学习
文章平均质量分 64
彩虹桥下的小淅猪
这个作者很懒,什么都没留下…
展开
-
数据库--进阶版-11--SQL优化
MySQL中事务提交方式默认是自动的,也就是说,当你执行完一条SQL语句后,它事务就提交了,再次执行一条insert,执行之前开启事务,执行完毕又关闭事务,这时候就涉及事务的频繁开启与提交,所以我们建议手动提交事务。所以进行update语句的时候,我们一定要根据索引字段进行更新,否则就会造成行锁升级为表锁,就会锁住整张表,那一旦锁表了,我们的并发性能就会降低。>count()是一个聚合函数,对于返回的结果集,一行一行的判断,如果count函数的参数不是NULL,累计值就加1,否则不加,最后返回累计值。原创 2023-03-20 22:16:11 · 364 阅读 · 0 评论 -
数据库-进阶篇-10-索引
这时候索引长度即key_len显示的只是profession 和age的索引长度而没有status的索引长度,因为此时age出现了范围查询,所以age右侧的列即status索引失效。而下面那个,id与profession与age与status同上面可以直接在二级索引获得即不用回表,但是那个name,因为name字段在这个二级索引中是没有的,所以需要查询name的id再回表即回到聚集索引中查询此name的id与profession与age与status等,就需要回表查询了,性能就低了。原创 2023-03-18 17:23:30 · 650 阅读 · 0 评论 -
数据库--进阶篇--9--存储引擎
是MySQL的默认存储引擎,支持事务、外键、如果应对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作出来插入和查询外,还包含很多的更新、删除操作,那么innoDB存储引擎是比较合适的选择。·MyISAM:如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常合适的。xxx.ibd:xxx代表的是表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。原创 2023-03-11 17:15:19 · 422 阅读 · 0 评论 -
数据库-基础篇-8-事务
隔离性:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行(比如串行化,没有幻读,比如你第一个事务在查询这个数据时,另一个事务也要修改这个数据,这时候就修改不了这个数据,得等第一个事务提交后才能修改这个数据)·事务简介:事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功要么同时失败。默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。原创 2023-03-09 16:27:29 · 355 阅读 · 0 评论 -
数据库-基础篇-7-多表查询-子查询
子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询成为标量子查询。常用的操作符:= > >= <原创 2023-03-07 22:07:29 · 290 阅读 · 0 评论 -
数据库-基础篇-6-多表查询(内连接、外连接、自连接)
(多表查询时,需要消除无效的笛卡尔积)关系:一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其它详情字段放在另一张表中,以提升操作效率。改为select * from emp,dept where emp.dept_id=dept.id;实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(unique)实现:建立第三张中间表,中间至少包含两个外键,分别关联两方主键。关系:一个学生可以选秀多门课程,一门课程也可以供多个学生选择。实现:在多的一方建立外键,指向一的一方的主键。原创 2023-03-07 19:16:51 · 321 阅读 · 0 评论 -
数据库-基础篇-5-约束
注意:目前上述的两张表,在数据库层面,并未建立外键关联,所以是无法保证数据的一致性和完整性的。比如我们把部门表的研发部删除掉,那员工表会不会有什么变化呢,是没有变化的,因为目前两张表在数据库层面是没有任何关系,只是在逻辑上存在关系。主键会进行主动的自增操作,比如你把id设为主键,然后你加入一个员工,然后比如当前公司就10名员工,那这个员工的id就会自己增加成为id=11的员工。那研发部要是被删除了,那员工表就不完整了,那要保证一致性和完整性该怎么办,那就要建立外键关联,那现在就学习一下建立外键关联的语法。原创 2023-03-05 17:23:02 · 158 阅读 · 0 评论 -
数据库-基础篇-4-函数
注意,能够ifnull(' ','1'),那个' '并不是空,所以返回的不是1而是' ',ifnull('null','1'),这时候返回的才是1.函数是指一段可以直接被另一段程序调用的程序或代码。select 函数(参数);原创 2023-03-04 19:09:52 · 61 阅读 · 0 评论 -
数据库-基础篇-3-SQL-DQL、DCL
解释一下,分组查询要用到group by ,比如分年龄,就group by age,分组前的条件如例3分组前是先查询年龄小于25的员工,所以where age=3。from前的字段列表就是据的什么分组然后逗号算什么,如例3,据工作地址所以workaddress,算数量即count(*)。select 字段列表 from表名 order by 字段1 排序方式1,字段2 排序方式2;select *from 表名;原创 2023-03-03 17:55:59 · 128 阅读 · 0 评论 -
数据库-基础篇-2-SQL-DML
insert into 表名(字段名1,字段名2,...)values(值1,值2,...),(值1,值2,...),(值1,值2,...);①给指定字段添加数据 :insert into 表名(字段1,字段2,...) values(值1,值2,...);insert into 表名 values(值1,值2,...),(值1,值2,...);·插入数据时,指定的字段顺序需要与值的顺序是一一对应的,如①的字段1应与值1对应。注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。原创 2023-03-02 20:28:00 · 109 阅读 · 0 评论 -
数据库-基础篇-1-SQL-DDL
datetime--1000-01-01 00:00:00至9999-12-31 23:59:59--混合日期和时间值。alter table 表名 change 旧字段名 新字段名 类型(长度)[comment 注释][约束];添加字段:alter table 表名 ADD 字段名 类型(长度)[comment 注释] [约束];--表结构的各种修改,添加/修改字段类型/修改字段名称及类型/删除字段/修改表名。time--838:59:59至838:59:59--时间值或持续时间。原创 2023-03-01 17:04:56 · 96 阅读 · 0 评论