尚硅谷mysql

本文深入探讨了MySQL中的内连接与外连接的区别,强调了定点数在处理小数时的优势,详细介绍了常用数据类型的选择。此外,讨论了视图的优缺点和存储过程的作用及其在数据完整性上的角色。文章还触及了索引的分类、B+树索引的注意事项以及何时适合或不适合创建索引。最后,提到了主从复制中的数据一致性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.内连接vs外连接

2.浮点数vs定点数

​编辑

 3.数据类型常用

4.视图

​编辑

5.存储过程

6.存储过程优缺点 

7.游标

​编辑 8.触发器

9.逻辑架构

 10.sql查询流程

11.存储引擎 

 12.索引

二级索引(非聚簇索引)

 B+树索引注意事项

 ​编辑

索引的分类

适合创建索引

不适合创建索引

索引失效案例

13.锁

 binlog:

两阶段提交

14.主从复制 


1.内连接vs外连接

内连接 : join on 合并具有同一列的两个以上的表的行 , 结果集中不包含一个表与另一个表不匹配的行
外连接 : left outer join on 两个表在连接过程中除了返回满足连接条件的行以外 还返回左(或右)表中不满足条件的
行 ,这种连接称为左(或右) 外连接 。没有匹配的行时 , 结果表中相应的列为空 (NULL)
如果是左外连接,则连接条件中左边的表也称为 主表 ,右边的表称为 从表
如果是右外连接,则连接条件中右边的表也称为 主表 ,左边的表称为 从表

2.浮点数vs定点数

 3.数据类型常用

如果确定是整数,就用int,如果是小数,一定用定点数类型decimal(M,D);如果是日期与时间,就用datetime。

4.视图

缺点

5.存储过程

6.存储过程优缺点 

优点

缺点

7.游标

虽然我们也可以通过筛选条件 WHERE HAVING ,或者是限定返回记录的关键字 LIMIT 返回一条记录,
但是,却无法在结果集中像指针一样,向前定位一条记录、向后定位一条记录,或者是 随意定位到某一
条记录 ,并对记录的数据进行处理。
这个时候,就可以用到游标。游标,提供了一种灵活的操作方式,让我们能够对结果集中的每一条记录
进行定位,并对指向的记录中的数据进行操作的数据结构。 游标让 SQL 这种面向集合的语言有了面向过
程开发的能力。
SQL 中,游标是一种临时的数据库对象,可以指向存储在数据库表中的数据行指针。这里游标 充当了
指针的作用 ,我们可以通过操作游标来对数据行进行操作。
MySQL 中游标可以在存储过程和函数中使用。
比如,我们查询了 employees 数据表中工资高于 15000 的员工都有哪些:

 8.触发器

优点

 1、触发器可以确保数据的完整性

2、触发器可以帮助我们记录操作日志

3 、触发器还可以用在操作数据前,对数据进行合法性检查。
缺点
1 、触发器最大的一个问题就是可读性差。
2 、相关数据的变更,可能会导致触发器出错。

9.逻辑架构

 10.sql查询流程

1. 查询缓存 Server 如果在查询缓存中发现了这条 SQL 语句,就会直接将结果返回给客户端;如果没有,就进入到解析器阶段。需要说明的是,因为查询缓存往往效率不高,所以在 MySQL8.0 之后就抛弃 了这个功能。
2. 解析器 :在解析器中对 SQL 语句进行语法分析、语义分析
分析器先做 词法分析 。你输入的是由多个字符串和空格组成的一条 SQL 语句, MySQL 需要识别出里面 的字符串分别是什么,代表什么。 MySQL 从你输入的 "select" 这个关键字识别出来,这是一个查询语 句。它也要把字符串“T” 识别成 表名 T” ,把字符串 “ID” 识别成 ID” 接着,要做 语法分析 。根据词法分析的结果,语法分析器(比如: Bison )会根据语法规则,判断你输
入的这个 SQL 语句是否 满足 MySQL 语法
3. 优化器 :在优化器中会确定 SQL 语句的执行路径,比如是根据 全表检索 ,还是根据 索引检索 等。
4. 执行器
截止到现在,还没有真正去读写真实的表,仅仅只是产出了一个执行计划。于是就进入了 执行器阶段

11.存储引擎 

 

 12.索引

 

二级索引(非聚簇索引)

不通过主键值建立的索引,通过其他列建立的索引。

 

 

 B+树索引注意事项

1.根页面位置万年不懂

2.内节点中目录项记录的唯一性

3.一个页面最少存储两条记录

 MyISAM引擎使用 B+Tree 作为索引结构,叶子节点的data域存放的是 数据记录的地址

 

 

 

索引的分类

功能逻辑 上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。
按照 物理实现方式 ,索引可以分为 2 种:聚簇索引和非聚簇索引。
按照 作用字段个数 进行划分,分成单列索引和联合索引。

适合创建索引

不适合创建索引

索引失效案例

全值匹配我最爱(包含where所有的值)
最佳左前缀法则
主键插入顺序
计算、函数、类型转换 ( 自动或手动 ) 导致索引失效
范围条件右边的列索引失效

 

 order by时不limit,索引失效

order by时顺序错误,索引失效

 #过程四: order by时规则不一致,索引失效(顺序错,不索引;方向反,不索引)

 #过程五:无过滤,不索引

 

 

 

 

 

 

 

13.锁

 

 

 


update自动加X锁

select有S锁和X锁

 

MVCC 的实现依赖于:隐藏字段、Undo LogRead View 

undo log:多版本

read view:并发控制

 

 

 binlog:

 

两阶段提交

 

14.主从复制 

1 个作用:读写分离。
2 个作用就是数据备份。
3 个作用是具有高可用性。

 

 4.4 如何解决一致性问题

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值