查询
select [字段列表、表达式、函数] from 表名
like语句
用来查询包含某些字符串的数据
我们输入:
select * from tea where name like('%com');
筛选出:
注意:%代表一些字段,在这里我们搜索 %com 表示搜索一些以com结尾的数据,也可以com% 表示搜索以com开头的数据
筛选查询
比如我们有
这样一个表格,但是我们只想查询出name这一栏,那么可以输入
select name from class;
如果不不想出现重复的数据,那么可以在select之后加上distinct
in的用法
我们需要查询出sal里面值为800,950,1600
那么可以
where sal in(800,950,1600)
相反的,可以排除这几个值:
where sal not in(800,950,1600)
between用法
where sal between 160 and 900;
判断一个字段的值是空null:
is null
条件查询where
where后面加上表达式
多条件查询的时候可以加上
and 并且
or 或者
连接
排序:order by
asc表示升序
select * from tea order by num asc;
得出:
相反地
desc表示降序
分组查询
别名
我们可以:
select avg(num) '平均数' from class;
group by
我们需要按照bumen来分组计算平均值
select avg(wage) from yuan group by bumen;
结果:
这样不清楚,我们加上bumen,起上别名
select avg(wage) avg,bumen from yuan group by bumen;
我们再调整一下顺序,加上总和
select bumen,avg(wage),sum(wage) from yuan group by bumen;
having条件筛选
比如:
我们是想筛选出avg大于1500的bumen平均值,那么:
select bumen,avg(wage) avg_wa from yuan group by bumen;
这里不能用where关键字,因为avg_wa这个字段是我们临时加的,并没有在原来的表里面
子查询:
就是一个的查询的结果可以作为另一次查询的条件或者数据源
1.作为另一次查询的条件:
我们要找出所有人中wage最大的人的姓名
select name,wage from yuan where wage=(select max(wage) from yuan);
2.作为下次查询的数据源:
找出平均wage最大的bumen
我们先按部门分类平均值:
select avg(wage) avg_wa,bumen from yuan group by bumen;
然后筛选出最大的avg_wa
select max(avg_wa) from (select avg(wage) avg_wa,bumen from yuan group by bumen) ave_table;
因为from后面要加上表名,并且要自己在最后别名一个(比如这里的ave_table)
然后我们在上面那个部门平均值表中筛选出平均值和这个最大平均值一样的部门
select avg_wa,bumen from (select avg(wage) avg_wa,bumen from yuan group by bumen) e
where avg_wa=(select max(avg_wa) from (select avg(wage) avg_wa,bumen from yuan group by bumen) ave_table);
这里我们from后的e表示起的别名,用where筛选:
多表查询
我们现在有两张表
yuan:
depart :
我们想查询yuan里面每个人对应的部门
方法一
select name ,biaohao from yuan y,depart d where y.bumen=d.Bname;
方法二:
select name,biaohao from yuan join depart on yuan.bumen=depart.Bname;
使用了join和on而不是where
格式:
select [需要的标签] from 表一 join 表二 join.....on 表达式