【无标题】

where 和 having
① 执行的时机不同:where是在分组之前进行过滤,不参与分组,having是在分组之后进行过滤
② 判断条件不同:where不能对聚合函数进行判断,而having可以

函数

聚合函数:avg,sum,count,max,min
字符串函数:concat 字符串拼接, lower转小写, upper转大写, lpad 左填充, rpad右填充, trim去除字符串首部尾部空格, substring查找子串
数值函数:ceil 向上取整, floor向下取整, mod返回模,rand随机数,round四舍五入保留几位小数
日期函数:curdata。curtime。datediff返回起始日期和结束日期之间的天数,date_add加上一个时间间隔

约束

not null, unique, primary key 主键约束, foreign key外键约束,auto_increment 自动增长

外键约束 更新/修改 行为
no action / restrict 默认行为,当父表删除/更新对应记录,先检查该记录是否有对应外键,如果有,不允许删除
cascade: … 则一并删除/更新 外键在子表中的记录
set null
set default

一对多

一对一:多用于单表拆分,如基础字段和详情字段分开放,以提升操作效率
一对多:在多的一方建立外键,指向’一’的主键
多对多:需要建立一张中间表,中间表包含两个外键,分别指向这两方的主键

连接

内连接:两张表交集部分,
外连接:左外连接,右外连接
自直接:就是把一张表查询多次,自己连接自己(在自连接中,必须为表起别名
交叉连接:cross join 相当于两个表每行都组合在一起,从而得到所有可能组合

事务 ACID

事务是一组操作的集合,一个不可分割的最小单位。事务把所有的操作作为一个整体一起向系统提交或撤销操,这些操作要么同时成功,要么同时失败
过程:① 在业务逻辑执行之前,开启事务 ② 执行完毕提交事务 ③如果执行报错,回滚事务

ACID
原子性:事务是不可分割的最小操作单元
一致性:事务完成,所有的数据状态保持一致
隔离性:保证事务不受外部影响

存储引擎 InnoDB

遵循 ACID模型,支持事务,行级锁,支持外键约束

适用场景:
innodb:支持事务,外键。对事务完整性要求高,在并发条件下要求数据一致性,除了查询,插入外,还有许多更新,删除
MyISAM:读取,插入为主,很少更新/删除操作,对事务完整性,并发性要求不高,如淘宝中足迹,日志数据(这类数据丢几个也没关系
memory:保存在内存,访问速度快,用于临时表和缓存,就是对表大小有限制,太大的无法存在内存中

索引

优点:检索效率提高很多。 降低数据排序成本
缺点:索引占用空间。虽然提高查询效率,但是降低了表的更新速度

聚集索引(仅有一个):数据和索引存在一起,叶子节点保留了该行的数据
二级索引:数据和索引分开存,叶子节点只保留了对应的主键,可以有多个

回表查询:先到二级索引中查询数据,得到主键。再通过主键值去聚集索引中获取整行数据

索引使用规则

最左前缀法则:如果索引了许多列,就是最左边的优先。以最左边为起点,连续的索引都可以匹配,但是如果跳过某一列,则这列之后的索引字段都将失效

索引失效情况

  1. 索引列参与运算会失效
  2. 字符串类型不加引号
  3. like模糊头部匹配,索引失效
  4. 如果MySQL评估全表扫描比用索引快,则不用索引

索引覆盖
查询使用了索引,并且需要返回的列,在这个索引中全部可以找到

索引设计原则:

  1. 对数据量大的,且查询频繁的表建立索引
  2. 常常作为查询条件where,order by,group 操作的字段建立索引

性能分析

  1. 检查频次:可以查看当前数据库update,insert delete等操作的访问次数
    show global/session status
  2. 慢查询日志:记录时间超过指定参数的所有sql语句
  3. profile 可以查看每一条sql的耗时情况
  4. explain:用于得到MySQL如何执行select语句

视图

可以理解为,一条增删改查的语句,视图中的结果就是这条语句的查询结果

作用:

  1. 简单。那些经常被查询的可以直接定义为视图,从而不必每次都得写这一步查询,简化了操作
  2. 安全。数据库可以授权,通过视图用户只能查询修改他们能看见的数据
  3. 数据独立:视图帮助屏蔽真实表结构变化带来的影响

相关推荐

  1. 标题

    2024-03-28 16:54:05       68 阅读
  2. 标题

    2024-03-28 16:54:05       67 阅读
  3. 标题

    2024-03-28 16:54:05       64 阅读
  4. 标题

    2024-03-28 16:54:05       73 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-28 16:54:05       73 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-28 16:54:05       78 阅读
  3. 在Django里面运行非项目文件

    2024-03-28 16:54:05       63 阅读
  4. Python语言-面向对象

    2024-03-28 16:54:05       73 阅读

热门阅读

  1. Python的json格式处理

    2024-03-28 16:54:05       42 阅读
  2. 2024.3.25每日一题

    2024-03-28 16:54:05       42 阅读
  3. shell中的浮点类型数值如何进行比较运算

    2024-03-28 16:54:05       40 阅读
  4. python将输出保存到txt文档

    2024-03-28 16:54:05       38 阅读
  5. C# 接口 interface

    2024-03-28 16:54:05       44 阅读
  6. 【保姆级讲解Node.js常用的命令】

    2024-03-28 16:54:05       33 阅读
  7. 前端学习——nodejs篇

    2024-03-28 16:54:05       40 阅读
  8. 【无标题】

    2024-03-28 16:54:05       30 阅读
  9. 什么才是一个男人身上最大的魅力?

    2024-03-28 16:54:05       40 阅读
  10. python面试题(1~10)

    2024-03-28 16:54:05       37 阅读
  11. js的事件

    2024-03-28 16:54:05       34 阅读