先来看一道SQL题:求每个城市下面年龄最大的员工的信息。
一看题目,秒了,直接来托大的~
select u.name , max(u.age),u.city
from `user` u
group by u.city
having max(u.age)
先来看一道SQL题:求每个城市下面年龄最大的员工的信息。
一看题目,秒了,直接来托大的~
select u.name , max(u.age),u.city
from `user` u
group by u.city
having max(u.age)
如果一个事务在执行过程中,还没有提交事务之前,如果MySQL发生了崩溃,要怎么回滚到事务之前的数据呢?
我了解的是MySQL的锁可以分为全局锁、表级锁、行级锁。
我比较熟悉的是表级锁和行级锁,如果我们对表结构进行修改时,MySQL就会对这个表结构加一个元数据锁。
行级锁目前只有InnoDB存储引擎实现了,主要有记录锁、间隙锁、临键锁、插入意向锁。
首先,MySQL的连接器会负责建立连接、校验用户身份、接收客户端的SQL语句;之后MySQL会在查询缓存中查找数据,但是在8.0版本移除了;其次MySQL的解析器会对SQL语句进行词法分析和语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型;然后MySQL的优化器会基于查询成本的考虑,判断每个索引的执行成本,从中选择成本最小的执行计划;最后MySQL的执行器执行查询语句,从存储引擎读取记录,返回个客户端。
我了解的是MySQL的锁可以分为全局锁、表级锁、行级锁。
我比较熟悉的是表级锁和行级锁,如果我们对表结构进行修改时,MySQL就会对这个表结构加一个元数据锁。
行级锁目前只有InnoDB存储引擎实现了,主要有记录锁、间隙锁、临键锁、插入意向锁。
原子性、一致性、隔离性、持久性。
什么是索引?为什么索引可以加快查询?
索引的数据结构?
B+树和B树、红黑树有什么区别?为什么选择B+树,作为索引数据结构?
索引是一种能提高查询速度的数据结构。
1、索引结构/索引类型:
原子性、一致性、隔离性、持久性。
索引是一种能提高查询速度的数据结构。
1、索引结构/索引类型:
按数据结构分类:B+树索引、Hash索引、全文索引。
按物理存储分类:聚簇索引、二级索引。
按字段特性分类:主键索引、唯一索引、普通索引、前缀索引。
按字段个数分类:单列索引、联合索引。
2、InnoDB的索引数据结构是什么?(InnoDB是支持B+树和FULLTEXT索引的)
我所了解的是B+树索引,在数据组织形式上,B+树的非叶子节点只存放索引和指向子节点的指针,叶子节点存储索引和行数据。并且所有叶子节点都是通过指针相连,形成一个双向链表,支持快速的顺序访问和范围查询。树的高度平衡,稳定性好。
重点掌握AND、OR、IN、NOT IN、BETWEEN、LIKE、IS、NULL、EXISTS、DISTINCT。
JOIN:内连接、左连接、外连接。UNION:组合查询。
INSERT、DELETE、UPDATE。
聚合函数:COUNT、MAX、MIN、SUM、AVG。
重点掌握GROUP BY和HAVING以及与Where的区别。
1.count(*)、count(1)那种性能更好?