sql语句之query笔记
此为
sql
语句的开篇记录,作为我多次维护数据的应用笔记,以求日后方便。
统计类的查询
大多是统计类的函数的运用,主要有:
- COUNT(): 计数
- SUM(): 求和
- AVG():求平均值
- MIN():取最小值
- MAX():取最大值
1 | select sum(`field`) as [alias] from [table] where [where case]; |
count 里面一般传一个字段或者是一个数值,个人喜欢传
1
数据过滤
某种情况下你需要过滤某些数据,普遍的情况下,我们会用where
语句来过滤。
所有数据
一般的查询来说,拿到所有数据,根本不需要where
,就可以拿到所有语句。
但是我们要更新所有语句,或者快速删除所有数据(保留自增键)的时候,如果不写入where
条件的话,执行语句会报错,提示必须要有where
条件。
这里有一个小技巧。
既然必须要有where
,那我们就写一个一个条件,比如1=1
,1>0
,1<2
,foo<>bar
等等.
1 | where 1 = 1 |
然后我们的语句大概就是这个样子
1 | select [field] from [table] where true; |
去重
distinct
可以支持多个字段去重group by
这个主要应用在聚合统计场景中,但是也可以去重
1 | select distinct [field], [other field] from [table] where [where case]; |
筛选重复数据
count
通过计数来筛选数据(计数值大于 1 的就是重复值,反之就是唯一值)
1 | select count(1) as _c from [table] where [where case] group by [field]; |
查询子语句
- 有些时候加入查询子语句更方便理解,如上面的查询就可以改写成这样的
1 | select * from (select count(1) as _c from [table] where [where case] group by [field]) b where b._c > 1; |
是不是清晰多了。
题外话,一个面试题:请从数据库(
people
)中取出随机的五条数据(有效数据量不断会上升)。
解答:
1 | # 1 先拿到最小id和最大id |
这里以PHP
代码示例:
1 |
|
To be continue