SELECT语句
1、检索所有列
从表A中提取所有用户的所有字段(列)
--检索所有列
SELECT *
FROM TABLE_A
;
通配符(*)表示所有信息 结束SQL语句用“;” 函数:大小写均可 字段名:必须和表中的大小写保持一致
结果:
2、检索单个列
从表A中提取所有用户的1个字段:“behavior_type”
--检索单个列
SELECT behavior_type
FROM TABLE_A
;
字段名之间要有“,”英文逗号 字段名之间无需空格
结果:
3、检索多个列
从表A中提取所有用户的3个字段:
“behavior_type, biz_scene, biz_name”
--检索多个列
SELECT behavior_type
,biz_scene
,biz_name
FROM TABLE_A
;
字段名之间要有“,”英文逗号 字段名之间无需空格
结果:
4、检索不同的行
找出behavior_type中包含哪些不同的类别,类似excel的筛选功能
--检索不同的行
SELECT DISTINCT behavior_type
FROM TABLE_A
DISTINCT 需要放在列名的前面 DISTINCT后面跟着多个列名,则所有列名都会被DISTINCT影响
结果:
5、限制结果
仅提取少数结果
--检索所有列,输出不多于2行数据
SELECT *
FROM TABLE_A
LIMIT 2
;
--检索所有列,输出从行5开始的2行(第一个数为开始位置,第二个数为要检索的行数)
SELECT *
FROM TABLE_A
LIMIT 5,2
;
结果:
6、使用完全限定的表名
“表名.字段名”的模式
SELECT TABLE_A.behavior_type
FROM TABLE_A
;
7、order by
单列数据排序,类似excel中的“升序”
--升序
SELECT behavior_type
FROM TABLE_A
ORDER BY behavior_type
;
--降序,需要在代码后面添加“DESC”
SELECT behavior_type
FROM TABLE_A
ORDER BY behavior_type DESC
;
多列数据排序,类似excel中的优先列1“升序/降序”,其次是列2“升序/降序”
--降序,需要在代码后面添加“DESC”,DESC仅修饰前面的字段,如果需多个降序排列,则需要每个字段前增加这个
SELECT behavior_type
,biz_scene
,biz_name
FROM TABLE_A
ORDER BY behavior_type DESC,biz_name
;
结果:
找出一列数据的最大值:
SELECT dt
FROM TABLE_A
ORDER BY dt DESC
LIMIT 1
WHERE语句
1、过滤数据-单个标准
从表A中提取特定用户(biz_name为WalkPrize的用户)的3个字段:
“behavior_type, biz_scene, biz_name”
SELECT dt
,behavior_type
,biz_name
,biz_scene
FROM TABLE_A
WHERE biz_name = 'WalkPrize'
ORDER BY dt
;
WHERE后面的操作符:
= 等于
<>, != 不等于
<, <=, >, >= 小于,小于等于,大于,大于等于
BETWEEN 在指定的两个值之间
WHERE biz_name = 5
WHERE biz_name <> 5
WHERE biz_name != 5
WHERE biz_name between 5 and 10
“=”的前后都需有空格 字符串字段信息需要用’’引号,数字不需要用引号’’ 字段信息入参需区分大小写 ORDER BY 需出现在“WHERE”函数的后面
结果:
检查页面中是否有空值
SELECT dt
FROM TABLE_A
where dt is NULL
2、过滤数据-多个过滤标准
SELECT dt
,behavior_type
,biz_name
,biz_scene
FROM TABLE_A
WHERE biz_name = 'WalkPrize' and dt > '20191101'
ORDER BY dt
;
and 表示两个过滤条件“且” or 表示两个过滤条件“或” SQL优先处理“and”,然后才处理“or”,需要用“()”来处理 WHERE (biz_name = ‘WalkPrize’ or biz_scene = happy ) and dt > ‘20191101’
当需要指定条件范围时,为 WHERE dt IN(’20191101’,’20191108’)
当需要指定不再条件范围时,为 WHERE dt NOT IN(’20191101’,’20191108’)
3、通配符LIKE、%
--筛选包含“cl”开头的信息,“cl%”表示cl后面可跟任何信息
SELECT behavior_type
FROM TABLE_A
WHERE behavior_type LIKE 'cl%'
%cl% 表示可以匹配包含cl的信息,无论是出现在开头、中间、还是结尾 c%l 表示匹配的信息,以c开头,以l结尾
其他
4、按照不同的hehavior type统计session_id的数量
SELECT behavior_type
,count(distinct session_id) a
FROM TABLE_A
WHERE biz_name = 'WalkPrize'
GROUP BY behavior_type
;