视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SQL函数及查询方法
2020-11-09 08:49:26 责编:小采
文档


1.常用函数:
可以用在select后面,也可以用在where后面。

lower把字段变小写,upper把字段变大写,如:
SELECT userId,LOWER(username) as 变小写,UPPER(password ) as 变大写 from `user` 
substr(字段或字符串,start,length):把字段转换成大写 start从1开始 截取的长度,如:
SELECT userId,SUBSTR(username,1,2) from `user`

2.分组函数:计算的结果是一个查询的,不是某一行的。*PS:as(可有可无)是对前一个字段进行重命名(临时的,只在此次有效,不改变表)*

select AVG(sal) as 平均工资水平 from emp
select empno,ename,AVG(sal) as 平均工资水平 from emp
select max(sal) as 最大值 from emp
select min(sal) as 最小值 from emp
select sum(sal) as 字段和 from emp
select count(comm) as 奖金字段个数,count(sal) as 工资字段个数 from emp


3.对查询结果分组计算:

group by:对不同的字段值进行分组。
select deptno from emp GROUP BY deptno
/*根据deptnot字段对emp表进行分组并显示各组的deptno字段*/
select deptno,avg(sal) as 各组的平均工资 from emp GROUP BY deptno /*根据deptnot字段对emp表进行分组并显示各组deptno字段和各组的平均工资*/
select deptno,max(sal) as 各组的最高工资 from emp GROUP BY deptno /*根据deptnot字段对emp表进行分组并显示各组deptno字段和各组的最高工资*/
select deptno,min(sal) as 各组的最低工资 from emp GROUP BY deptno /*根据deptnot字段对emp表进行分组并显示各组deptno字段和各组的最低工资*/
select deptno,count(sal) as 各组的有多少人有工资 from emp GROUP BY deptno /*根据deptnot字段对emp表进行分组并显示各组deptno字段和各组的有多少人有工资*/
select deptno,sum(sal) as 各组的工资总额 from emp GROUP BY deptno /*根据deptnot字段对emp表进行分组并显示各组deptno字段和各组的工资总额*/
对group by分组的过滤,不用where,而用hiving。如:
select JOB,avg(sal) as 平均工资 from emp GROUP BY JOB HAVING 平均工资>2000


4.子查询:子查询查出来的结果是一张临时表。如:

SELECT * from (SELECT * from emp) as e


5.连表查询(多表查询):

92语法:SELECT b1.col1,b2.col2 from b b1,a b2 where b.c=a.c
99语法:inner join查询两表都有数据的结果: SELECT b1.col1,b2.col2 from emp e INNER join dept d on e.deptno=d.deptno
left join查询左边表有数据的结果:SELECT e.*,d.deptno,d.loc from emp e left join dept d on e.deptno=d.deptno
right join查询右边表有数据的结果:SELECT e.*,d.deptno,d.loc from emp e RIGHT join dept d on e.deptno=d.deptno


6.分页查询:limit(start,查询的条数) start从0开始。如:

SELECT * from 表名 limit 0,5 /*查询从第一条数据开始的五条数据*/

下载本文
显示全文
专题