mysql表的查询(二)

查询

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  表达式

猜你喜欢

转载自blog.csdn.net/scwMason/article/details/81835405