Mysql中的一些常考知识

Mysql中的一些常考知识

  1. 窗口函数的位置可以放置以下两种函数:

1>专用窗口函数,包括rownumber(); rank(); denserank()等(后文以这3个为例介绍)。

  • rank() 如果有并列名次的行,占用下一名次的位置;

  • dense_rank() 如果有并列名次的行,顺次排列,不占用下一名次的位置;

  • row_number() 顺次排序,不考虑并列名次问题。

partition by 和 group by的区别:
group by只能得到分组后的统计数据(即每组一条数据),over (partition by)不仅可以得到分组后的统计数据,还可以显示明细数据(即可以显示每组下的各成员内容)。

2 >聚合函数,如sum, avg, count, max, min等。

基本语法:

<窗口函数> OVER (PARTITION BY <用于分组的列名> ORDER BY <用于排序的列名>);
-- over关键字用于指定函数的窗口范围,
-- partition by 用于对表分组,
-- order by子句用于对分组后的结果进行排序。

班级表

rank()

将每个班按成绩排名

SELECT *,rank() OVER (PARTITION BY 班级 ORDER BY 成绩 DESC) AS ranking FROM 班级表;

Rank

dense_rank(),row_number()的用法及与rank()的区别

SELECT *,rank() OVER (ORDER BY 成绩 DESC) AS ranking,
         dense_rank() OVER (ORDER BY 成绩 DESC) AS dense_rank,
         row_number() OVER (ORDER BY 成绩 DESC) AS row_number FROM 班级表;

3种rank的区别

2.sql中聚合函数

MAX MIN SUM AVG COUNT VAR(返回给定表达式中所有值的统计方差) VARP(返回给定表达式中所有值的填充的统计方差) COUNT_BIG(返回指定组中的项目数量,与COUNT函数不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。)

3.where和having的区别

1)区别

having是在分组后对数据进行过滤
where是在分组前对数据进行过滤
having后面可以使用聚合函数
where后面不可以使用聚合函数

2)sql语句执行顺序
在这里插入图片描述

4.怎么筛选出A表没有而B表有的数据

select A.ID from A left join B on A.ID=B.ID where B.ID is null

5.left join后面用on和where的区别

1)on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

2)where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

6.DQL、DML和DDL的区别

DQL(Data Query Language)数据查询语言:

适用范围:对数据库中的数据进行查询操作,select

DML(Data Manipulation Language)数据操纵语言:

适用范围:对数据库中的数据进行一些简单操作,如insert,delete,update等.

主要指数据的增删改:insert delete update

DDL(Data Definition Language)数据定义语言:

适用范围:对数据库中的某些对象(例如,database,table)进行管理,如Create,Alter和Drop.
建库、建表、设置约束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值