1. 查询语句
1.1 基本操作
1. 查询不重复的数据
distinct可以理解为唯一的。
SELECT distinct university from user_profile;
2. 查询结果限制返回行数
Limit a,b 表示从a索引开始,查询b条数据
SELECT device_id from user_profile LIMIT 0,2
3. 将查询到的列进行重新命名
重新命名主要用到as,用法为旧名称 as 新名称 ,其中as可以省略
SELECT device_id from user_profile LIMIT 0,2
4. 按照条件进行查询
用到where进行条件查询,包括单条数据查询以及范围查询。 按照条件查询经常用到between and用来表示数据的范围,。
5.查询除XX以外的数据
对于除XX以外的数据的筛查,可以用某列数据不等于XX,或者使用not in
select device_id,gender,age,university from user_profile where university != "复旦大学"
6.查询不为空的数据
在SQL语句中,使用is not null来进行查询
select device_id,gender,age,university from user_profile where age IS NOT NULL;
1.2 高级操作
1.将多个字段结合进行数据的查询
描述:找到男性且GPA在3.5以上的用户进行调研
select device_id,gender,age,university,gpa from user_profile where gender='male' and gpa >3.5
2.按照或进行数据的查询
描述:找到男性且GPA在3.5以上的用户进行调研
select device_id,gender,age,university,gpa from user_profile where gender='male' OR gpa >3.5
3. 查询处于一定范围内的数据
# 找到学校为北大、复旦和山大的同学进行调研
select device_id,gender,age,university,gpa from
user_profile where university in ('北京大学','复旦大学','山东大学')
4. 按照模糊匹配查询数据
模糊匹配需要在字段后面使用like进行查询。
select device_id,age,university from
user_profile where university like '%北京%'
5. 查找最高值、或者平均值的数据
聚合函数是用在相应的查询列中,可以用来完成一些列的统计信息
SQL提供的统计函数有:
COUNT():统计表中元组个数;
COUNT([DISTINCT] <列名>):统计本列列值个数;
SUM( <列名> ):计算列值总和;
AVG( <列名> ):计算列值平均值;
MAX( <列名> ):求列值最大值;
MIN( <列名> ): 求列值最小值。
上述函数中除COUNT(【Shift+8】)外,其他函数在计算过程中均忽略NULL值。
6. 分组计算数据
分组语句的一般形式:[GROUP BY ][HAVING ]\GROUP BY子句中的分组依据列必须是表中存在的列名,不能使用AS子句指派的结果集列的别名。
带有GROUP BY 子句的SELECT语句的查询列表中只能出现分组依据列或统计函数,因为分组后每个组只返回一行结果。
select gender,university,count(gender) as user_num,
avg(active_days_within_30) as avg_active_day,
avg(question_cnt) as avg_question_cnt
from user_profile GROUP by gender,university;
7.分组过滤数据
对于分组过滤数据来说,主要有两种顺序:
- 先分组再筛选 对于先分组再筛选的情况下,在group后面需要使用having,不能使用where,会发生错误的
- 先筛选在分组 可以使用where先完成数据的筛选,然后再进行数据的筛选工,但是注意如果where中使用聚合函数作为筛选条件的话,是不能使用where的,应当使用having。