mysql
文章平均质量分 60
xizi_ghq
这个作者很懒,什么都没留下…
展开
-
sql增删查改复习
select distinct Sname from S inner join C inner join Sc where Cname = "数据库" order by Sname desc;select Sname ,sum(Ccredit) from S inner join C inner join Sc where Grade>=60 groupby Sno having sum(Ccredit)>80;找出缺少部分学科成绩的学生的学号,课程号select Sname...原创 2021-03-10 14:10:41 · 104 阅读 · 1 评论 -
sql语法02 group by
语法规范:1、GROUP BY子句中列出的每一列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在SELECT中使用表达式,则必须在GROUP BY子句中指定相同的表达式。不能使用别名。2、除聚集计算语句外,SELECT语句中的每一列都必须在GROUP BY子句中给出。基础理解:就是对指定字段做一个去重,但是去重之后可能会出现一个单元格多个值的情况。https://blog.csdn.net/shaofei63/article/details/42800793?utm_medium=dist原创 2021-01-22 13:35:42 · 435 阅读 · 0 评论 -
03 深入浅出索引上下
三种索引:全文索引,哈希索引,B+树索引索引维护:页分裂。(随机插入,向右分裂)索引的选择:身份证ID or 自增主键性能 + 存储。性能:身份证ID,是随机插入,页分裂是中间分裂,可能会造成一定的存储浪费,分裂次数页比较多。但是自增主键,只有页满才会将新点分裂到下一个页,效率是最高的。存储:一个B+树节点,存储的身份证ID数量 < 自增主键数量不同。以上对应于:mysql 45讲:深入浅出索引1回表:使用了辅助索引,搜索完辅助索引,还要再搜索聚集索引。select * fro原创 2021-01-12 11:11:43 · 167 阅读 · 0 评论 -
innodb 06 索引-全文检索
全文检索1、倒排索引两种倒排索引。inverted file index,其表现形式为{单词,单词所在文档的ID}full inverted index,其表现形式为{单词,(单词所在文档的ID,在具体文档中的位置)}普通全文检索表:{文档ID,text}倒排文件索引关联数组:inverted file index{number,单词,单词所在文档的ID}详细倒排索引关联数组:{number,单词,(单词所在文档的ID,在具体文档中的位置)}innodb全文检索使用的是full invert原创 2021-01-12 10:38:21 · 216 阅读 · 0 评论 -
innodb 05 索引-哈希索引
哈希索引:InnoDB存储引擎使用哈希算法来对字典进行查找,其冲突机制采用链表方式,哈希函数采用除法散列方式。那么InnoDB存储引擎的缓冲池对于其中的页是怎么进行查找的呢?上面只是给出了一般的算法,怎么将要查找的页转换成自然数呢?InnoDB存储引擎的表空间都有一个space_id,用户所要查询的应该是某个表空间的某个连续16KB的页,即偏移量offset。InnoDB存储引擎将space_id左移20位,然后加上这个space_id和offset,即关键字K=space_id<<20+space_原创 2021-01-12 09:49:29 · 122 阅读 · 0 评论 -
innodb 04 索引-B+树索引
索引:若索引太多,应用程序的性能可能会受到影响。而索引太少,对查询性能又会产生影响索引概述InnoDB存储引擎支持以下几种常见的索引:B+树索引全文索引哈希索引InnoDB存储引擎支持的哈希索引是自适应的,InnoDB存储引擎会根据表的使用情况自动为表生成哈希索引,不能人为干预是否在一张表中生成哈希索引。B+树索引并不能找到一个给定键值的具体行。B+树索引能找到的只是被查找数据行所在的页。将其读到内存中,查找具体某一个记录:是二分查找page dictory。1、B+ 树索引B+树索引可原创 2021-01-12 09:47:39 · 129 阅读 · 0 评论 -
sql语法01 连接 join
create table t_blog( id int AUTO_INCREMENT PRIMARY KEY, title VARCHAR(50), typeid int); DROP TABLE t_blog; INSERT INTO t_blog(title,typeid) VALUES("aaa",1); INSERT INTO t_blog(title,typeid) VALUES("bbb",2); INSERT INTO t_blog(title,typeid).原创 2021-01-11 21:03:28 · 103 阅读 · 0 评论 -
innodb 03 锁详述
锁1、SQL语言分类SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。数据查询语言DQL:数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:数据操纵语言DML:数据操纵语言DML主要有三种形式。(insert update delete)数据定义语言DDL:数据定义语言DDL用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:CREATE TABLE/VIEW/INDEX/SYN/原创 2021-01-11 14:12:04 · 126 阅读 · 0 评论 -
02 一条sql更新语句如何执行?
crash-safe:redo log,InnoDB 就可以保证即使数据库发生异常重启,之前提交的记录都不会丢失,这个能力称为 crash-safe。过程1、连接器:权限验证2、查询缓存。是否命中。(表有更新的话,和这个表有关的查询缓存会失效,这是不建议使用查询缓存的原因)3、分析器:词法分析,语法分析4、优化器:执行计划生成,索引选择。5、执行器先通过搜索主键索引或者辅助索引找引擎取 ID=2 这行所在的数据页。ID 是主键,引擎直接用树搜索找到这一行。如果 ID=2 这一行所在的数据页本来原创 2021-01-11 09:32:56 · 110 阅读 · 0 评论 -
innodb 02 undo 日志详解
undo log基本概念undo log有两个作用:提供回滚和多个行版本控制(MVCC)。undo log和redo log记录物理日志不一样,它是逻辑日志。可以认为当delete一条记录时,undo log中会记录一条对应的insert记录,反之亦然,当update一条记录时,它记录一条对应相反的update记录。undo log是采用段(segment)的方式来记录的,每个undo操作在记录的时候占用一个undo log segment。另外,undo log也会产生redo log,因为un原创 2021-01-10 21:52:16 · 225 阅读 · 0 评论 -
innodb 01 redo 日志详解
redo 和binlog的区别。1、二进制日志server层产生,redo是innodb层产生。并且binlog先于redolog被记录2、binlog记录操作的方法是逻辑性的语句,基于行格式。redolog是innodb层产生的日志,记录数据库每个页的修改。3、binlog是事务提交的时候,一次性写入,redolog是数据准备修改的时候写入redobuffer,然后才对缓存中数据操作。并且保证,事务提交时:redobuffer冲刷到磁盘4、binlog是一次性写入,所以有顺序。redolog是物理原创 2021-01-10 21:07:26 · 534 阅读 · 0 评论 -
01 一条sql查询语句如何执行?
1、一条sql查询语句如何执行?select * from T where ID=10;逻辑架构图:客户端—>连接器—>分析器—>优化器—>执行器—>存储引擎其中还有一个连接器和分析器都会查找的“ 查询缓存”MySQL 可以分为 Server 层和存储引擎层两部分:Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过原创 2021-01-10 16:58:24 · 91 阅读 · 0 评论