MySQL 数据库

连接查询

左外连接:

以左表为基准进行查询,左边数据全部显示,右表匹配的数据显示在相应字段,无匹配的字段显示为null.右表中不和左表匹配的数据不显示

右外连接:

以右表为基准进行查询,右表数据全部显示,左表匹配的数据显示在相应字段,无匹配的字段显示为null.左表中不和右表匹配的数据不显示

内连接

左表和右表共同匹配.只有相匹配的数据才显示,不匹配的数据不显示,相匹配但缺失的字段用null填充

全连接

mysql没有全连接,但可以通过左外连接+右外连接联合查询实现 orcal支持全连接

聚合函数

count(*) 计算总记录数 
sum(score) 计算单字段值的总和
avg(score) 计算单字段值的平均值
max(score) 计算单字段最大值
min(score) 计算单字段最小值

SQL关键字

Limit: 分页 2,6 从第三条(开始索引为2)开始显示,显示长度为6
groub by: 分组 可以和聚合函数搭配使用,例如将员工按照性别分组后统计每组人数
distinct: 去重.

储存引擎

概念:mysql可以通过不同的技术 将 数据 储存在 文件或内存中,这种技术概称:储存引擎.
MyISAM mysql5.5版本之前使用的是MyISAM,它不支持事务,没有外键,查询占用资源为表 故并发访问受限,是非聚集性索引
InnoDB 5.5版本开始使用InnoDB为默认储存引擎,它支持事务,有外键,查询占用资源为行,聚集性索引,主键查询速度快.
Memory
Archive

数据库事务

事务特性

原子性:事务中的各个分步骤要像原子一样不可分割.要么全部提交成功,要么全部失败回滚
一致性:一致性是针对于事务的可见状态而论的.

例如转账的中间状态(张三减钱之后,李四还未加钱)的状态.是不应该被读取到的.也就是不可见的.如果见到了,则不满足事务的一致性.这里区别于原子性的案例就是脏读:脏读满足事务的原子性,但是不满足一致性

隔离性:隔离性是指在并发环境中,并发的事务应当相互隔离,一个事物的执行不能被其他事务干扰.
永久性:事务正确提交后应永久保存在数据库中.不会收到后续其他故障的影响.

隔离级别

读未提交:会读取到事务中未提交的数据,产生脏读的安全问题. 满足原子性但不满足一致性

脏读:A事务中将金额修改为2,但还未提交就被B事务读取到.

读已提交:解决脏读 但是在读取的时候可以读取到并发事务修改之后的值.也就是虚读.(不可重复读.)

虚读:事务A第一次查询金额为1,事务B修改金额为2后,事务A第二次查询就为2. 而事务的隔离性要求事务B对金额的改动不应当影响A.

可重复读:解决虚读 但是会引出幻读:由于事务A从始至终看不到事务B对数据的修改,当事务A批量修改时又会把事务B新加入的数据进行修改

幻读:由于事务A和B都为可重复读.事务B给数据库插入了新数据,而A看到的始终是原始数据.此时事务A批量修改数据会导致B新插入的数据一并被修改.而A从始至终都没有看到B插入的数据.这就时幻读的问题.

串行化:通过将事务强制排序,使其不会相互冲突.来解决所有隔离问题.

索引

概念:

通过表中某个特定字段进行顺序编排,增加查询速度.

缺点:

当对表进行增删改时会由于需要修改索引文件而降低速度.而且索引文件会占用内存,对于大表来说,建立过多的组合索引会导致索引文件过大

分类:

1.普通索引:最基本的索引,没有限制.
2.唯一索引:要求值唯一
3.主键索引:唯一非空
4.联合索引:多个字段上建立的索引,能够加速复合条件查询的检索。
5.全文索引:主要用来查找文本中的关键字,而不是直接与索引中的值相比较。

索引实现原理B+树例如有1-100的数据,当id=54来查询时.判断id>50?再判断id>75? 再判断id>62? 再判断id>56? 再判断id>53?–>大于找到54

避免索引失效:

1.尽量避免否定判断
2.尽量避免全盘扫描,优先考虑在where和order by字段建立索引
3.尽量避免使用or连接条件
4.在模糊查询的时候尽量避免前置百分号  %c%  会放弃索引
5.in 和 not in 会导致全盘扫描,如果时连续字符尽量用between
6.不要使用select * ,我们只需要它返回我们需要的字段即可
7.尽量避免大事务操作.提高系统并发能力
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值