SQL语句复习

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。

1.3 多表查询