sql语法,快速复习

本文详细介绍了SQL的基本语法、JOIN操作、GROUPBY、聚合函数、时间函数、字符串函数以及分页。重点讲解了MySQL中的B+树索引结构,讨论了不同数据结构的优缺点,并提到如何使用分库分表来处理大数据,以提升性能。最后提到了分库分表工具ShardingSphere的应用。
摘要由CSDN通过智能技术生成

sql语法

# 基本语法
select cola as "列a", colb from tba as a where a.id = 1;
select a.cola, b.colb from tba as a, tbb as b where a.cola = b.colb and a.cola>2;
# join
inner join 取交集
full outer join 取并集
left join 以左边为主
right join 以右边为主
select a.cola, b.colb from tba as a left join tbb as b on a.colc = b.colc;
select a.cola, b.colb from tba as a full outer join tbb as b on a.colc = b.colc where a.colc is null or b.colc is null; // 查找除了交集之外全部
# group by
select sum(cola) as "人数" from tba as a group by a.colb;
# where和having的区别
where是在分组之前筛选,筛选条件不能包含聚合函数,having是在分组之后筛选,筛选条件可以包含聚合函数,比如:
select sum(cola) as "人数" from tba as a group by a.colb having sum(cola) > 10;
# 常用聚合函数
平均值svg()、计数count()、max()最大值、min()最小值、求和sum()、此外还有求方差和标准差4个。
# 常用时间函数
获取当前日期current_date()、对日期进行加减操作date_add()、计算两个日期之间的间隔天数datediff()、时间戳转换
select date_add(a.cola, interval 3 month) from tba; // 原日期加上3个月。
主要的时间单位:YEAR, MONTH, DAY, HOUR, MINUTE, SECOND。
# 常用字符串函数
大小写转换upper()lower()、去掉字符串两边的空格trim()ltrim()rtrim()、截取字符串left()right()substring()
# 分页
select cola from tba limit pagesize offset (pagenumber-1)*pagesize;

索引

MySQL的索引就是将属性列进行哈希计算,保存到哈希表中,键是属性列的哈希值,值是当前行数据在磁盘上的存储位置,索引的哈希表的存储结构有二叉树、平衡二叉树、红黑树、B树、B+树,这些数据结构将会在下一个章节讲解。

B+树

索引的每种存储结构都各有其优缺点。只说5种结构。
二叉树:比全表扫描快,但是存在2个问题,没有自平衡功能的极端情况是变成单链表全表扫描,每个节点都只有2个子节点导致数据量大的情况下树的层级可能会非常深,结果就是查询速度慢。
平衡二叉树:会对树进行旋转,保证树平衡,平衡的标准就是任何节点的左右子树高度差不超过1,解决了二叉树退化成单链表的问题,但是带来另一个问题,频繁的旋转操作降低了插入数据的速度,同时仍存在数据量上来之后层级深的问题。
红黑树:红黑树要求左右子树的高度差最大是2倍的关系,对平衡的要求较弱,提高了插入数据的速度,但是还没解决层级深的问题。
Btree和B+tree都是允许每个节点都多个子节点,解决了树的层级深的问题,二者的区别在于btree的根节点和叶子节点都有数据,而b+tree的非叶子结点只保存索引值和下级节点的地址,不保存数据,叶子节点保存索引值和每一行的数据。

分库分表

当数据库数据太多的时候,可能磁盘存不下,同时查找速度也会下降。所以多数据库进行分库分表。

分库分表工具

shardingsphere

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值