目录
SELECT 学号, 姓名, 性别, 出生日期, 班号 FROM 学生表 等价于: SELECT * FROM 学生表
*表示所有列
SELECT结果去重
SELECT distinct 关键字 FROM
查询结果限制返回行数
题目:现在运营只需要查看前2个用户明细设备ID数据,请你从用户信息表 user_profile 中取出相应结果。
Solution: limit or where
SELECT device_id FROM user_profile where id<3
%% select * from tableName limit i,n
%% 参数
tableName : 为数据表;
i : 为查询结果的索引值(默认从0开始);
n : 为查询结果返回的数量
查询后的列重新命名
SELECT (AS) RENAME
FROM tableNAME
查找某个年龄段的用户信息
SELECT device_id,gender,age
FROM user_profile
where age>=20 and age<=23
或者 where age between 20 and 24
%% 不能使用 20<=age<=23
WHERE FUNCTION ( != 代表不等于 ) 除XXX的XXX信息
用WHERE过滤空值 WHERE XXX is not null
模糊查询
like表示模糊搜索,%表示不确定搜索对象前后各有几个字
查找最值
查找GPA最高值#
两种方法:
where筛选 + 排序
排序与多列排序
排序子句语法:order by 列名 asc/desc
(升序和降序要给每个字段单独设定)
SELECT device_id,gpa,age from user_profile order by gpa,age;#默认以升序排列
SELECT device_id,gpa,age from user_profile order by gpa,age asc;
SELECT device_id,gpa,age from user_profile order by gpa asc,age asc;
where筛选 复旦大学条件,因最高的gpa,max(gpa)求出最大值也可
select
max(gpa )
from user_profile
WHERE
university='复旦大学'
计数,round函数与求mean
计数,count函数;求平均值用avg函数
ROUND() 函数 ROUND 函数用于把数值字段舍入为指定的小数位数。
SQL ROUND() 语法
SELECT ROUND(column_name,decimals)
FROM table_name column_name 要舍入的字段decimals 要返回的小数位数
分组计算
SELECT gender,university,
COUNT(id) 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
select 类别, sum(数量) as 数量之和
from A
group by 类别
聚合函数用(select;Having;order by)
SELECT university,
AVG(question_cnt) AS avg_question_cnt,
AVG(answer_cnt) AS avg_answer_cnt
FROM user_profile
GROUP BY university
HAVING avg_question_cnt<5
OR avg_answer_cnt<20
Solution
SQL语句的执行过程是:
FROM - ON - JOIN - WHERE - GROUP BY - WITH - HAVING - SELECT - DISTINCT - ORDER BY - LIMIT
第一步:from 选择表