1、多列查询
select age,name from usertable;
2、 数据去重——distinct
distinct只可用于全局,不能打用于单列
select distinct age from usertable;
--这如果age和gender不是一样的,不会只对age进行去重处理
select distinct age,gender from usertable;
3、查看前两条数据
limit用法:limit 起始序号,长度;
select age from usertable limit 2;
4、查找不为空的元素
select * from usertable where age is not null;
5、where … in
select * from usertable where age in(25,26,27);
6、通配符 “%”,“_”
%表示0个或多个字符
_表示1个字符
select * from usertable where university like "%北京%"
7、求最值
数据库常用统计函数:
–count总数、max最大、min最小、avg平均、sum求和、round取几位小数,round(x,位数)
select max(age) from usertable where university="北京大学";
8、数据库分组——group by
group by子句必须出现在where子句之后,order by子句之前
select gender,university,count(device_id),
avg(active_days_within_30),avg(question_cnt)
from user_profile group by gender,university;
9、分组条件筛选——having
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;
10、排序——order by
使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列
排序可以直接指定名字,也可以用索引,为了代码的可读性,指定名字更佳
select university,avg(question_cnt) as avg_question_cnt
from user_profile group by university order by asc avg_question_cnt;
11、联结
inner join: 如何使用 SQL INNER JOIN 联结两个或多个表
inner join:等值联结
方法一
select result,age from table1,table2
where table1.age_id=table2.age_id and age=18
方法二
select result,age from table1 inner join table2 on
table1.age_id=table2.age_id and age=18
12、结果不去重——union all
返回的查询值存在
select device_id,gender,age,gpa
from user_profile where university="山东大学"
union all select device_id,gender,age,gpa from user_profile where gender="male";
13、where子句的操作符
不同数据库支持的操作符略有不同,具体情况具体分析,比如mysql中不等于的操作符为<>,!=会报错
判断空值 is null