sql必知必会-学习记录&总结

1 排序

SELECT prod_name 
FROM Products 
ORDER BY prod_name;

通常,ORDER BY 子句中使用的列将是为显示而选择的列。但是,实
际上并不一定要这样,用非检索的列排序数据是完全合法的。

select * from Student order by Sid,Sage;

不讨论业务,只单纯说逻辑,如果Sid相同,则按Sage进行排序
在这里插入图片描述

2 过滤

在这里插入图片描述
where 还可以配合 and or not in like 等关键字
需要注意的是 and是左右两边均要满足条件
or 则是以左边为主,左边满足条件就通过过滤,如果左边没有满足条件就判断右边的条件

如果 and和or一起使用

如果
A or B and C ,mysql就会解析成为: B和C同时满足,以及满足A的数据
( A or B ) and C
满足C 且满足A或者B
需要加括号,如不加括号则不准确
为什么需要加括号呢?
因为and的优先级高于or


in和or的含义相似
如 where id ( 1,2,3,4) id在1234中


like区别大小写

3 计算字段

select concat(Sid,'=',Sname,'&') as 拼接  from Student;

其中,TRIM 函数可以去重

也可以根据字段进行计算
在这里插入图片描述

mysql的函数大致上分为时间函数字符串函数数学函数

4 聚合函数

avg,max,min,sum,count
除了count,其余都需要指定列名
select avg(age) from info;
avg(distinct age) 去重计算平均年龄
distinct也可以用于max min

count()
注意:如果指定列名,则 COUNT()函数会忽略指定列的值为空的行,但如果
COUNT()函数中用的是星号(*),则不忽略。

select st.Ssex,avg(sc.score) as 平均分
from Student st 
left join sc
on st.Sid = sc.Sid
GROUP BY st.Ssex;

按照性别分区,然后统计每个性别的平均分

在这里插入图片描述

可以在group by后使用having过滤分组

WHERE 在数据分组前进行过滤,HAVING 在数
据分组后进行过滤。这是一个重要的区别,WHERE 排除的行不包括在
分组中。这可能会改变计算值,从而影响 HAVING 子句中基于这些值
过滤掉的分组。

灵活应用子查询

SELECT
	st.SId,
	st.Sname,
	sum( sc.score ),
	( SELECT avg( sc.score ) FROM sc ) AS a 
FROM
	Student AS st
	INNER JOIN sc ON st.Sid = sc.Sid 
GROUP BY
	st.Sname

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值