sql——day01

一、sql中show的几种用法
show tables; // 显示数据库中的列表
show databases; //  显示mysql中的列表
show columns from class; // 返回当前表的列
show create database school; //  显示创建数据库的语句
show create table class; //  显示创建数据表的语句
show grants; //  显示授予用户的安全权限
show errors 或  show warnings  // 用来显示服务器错误或警告信息;

1.升序asc和降序desc
select 字段名,字段名 from 表名字order by sal asc; //asc升序
select ename,sal from emp order by sal asc; //asc升序
select ename,sal from emp order by sal desc;//desc降序
select ename,sal from emp order by sal asc, ename asc; //如果工资一样的话,就按照名字来排序;
2.between 求出小到大的值 比如 1000 到2000 ;
3.求出工资1250到3000,用降序来排序,如果工资一样就按26个字母降序来排序;
select ename,sal from emp where sal between 1250 and 3000 order by sal desc, ename desc;
关键字顺序不能变:
  select
          .....
    from
          ....
    order by
        .....
四、单行处理函数(几个输入就几个输出,这是单行处理函数的特点)。
(1)lower()转换为小写
语法:select lower(转换的字段) as(改名) zhangsan from emp;
(2).upper()转换为大写
语法:select upper(转换的字段) as(改名) zhangsan from emp;
(3)substr 取子串(substr(被截取的字符串,起始下标,截取的长度))。
语法:select substr(ename,1,2) as lisi from emp;
(4).concat函数进行字符串的拼接
语法:select concat(字符名,字符名)  from emp;
(5).length长度
语法: select leng(字符名) as zhangdu from emp;
(6).trim()去空格
(7)round()四舍五入
(8)rand()生成随机数
语法: select round(rand() * 100,0)  from emp;//求一百以内的随机数
(9) ifnull(数据,被当做哪个值) 可以将 null 转换成一个具体值 ,如果“数据”为null的时候,把这个数据结构当做哪个值。
    补助为null的时候,将补助当做为零
 求年薪多少, 年薪 = 工资 + 补助 * 12;
语法:select ename,(sal + ifnull(comm,0)) * 12 as yearsal from emp;
(10)case...when...then....when.....then.....else.....end //当什么时候怎么做当什么时候怎么做 else其他情况怎么办 end
  当员工的工作岗位是MANAGER的时候,工资上调10%,当工作岗位是SALESMAN的时候,工资上调50%,其它正常。
语法:select 
            ename,job,
           sal as oldsal, (case job when 'MANAGER' then sal*1.1 when 'SALESMAN' then sal*1.5 else sal  end) as newsal 
           from
          emp;
五、.分组函数(多行处理函数)
(1)多行处理函数的特点:输入多行,最终输出一行。
(2)注意:分组函数在使用的时候必须先进行分组,然后才能用。
(3)    如果你没有对数据进行分组,整张表默认为一组。
(4)5个: count()计数 , sum()求和,avg()平均值,max()最大值,min()最小值;
(5)分组函数自动忽略null,不需要提前对null进行处理
六、分组查询(重点)(group  by)
分组查询语法: select....from....group  by....
1.将之前的关键字全部组合在一起,来看一下它们的执行顺序:select...from....where....group....order by....
 以上关键字的顺序不能颠倒,需要记忆。执行顺序是:1.from  2.where 3.group 4.select  5.order by;
2.重点结论:
      在一条select语句当中,如果有group by语句的话,
      select后面只能跟:参加分组的字段,以及分组函数。 其他的一律不能跟。
按照部门编号分组,求每一组的最大值  
 语法:select deptno,max(sal) from emp group by deptno;
3.找出每个部门,不同工作岗位 的最高薪资
语法:select deptno,job,max(sal) from emp group by deptno,job; //两个字段联合成1个字段看,两个字段联合分组
4.having可以对分完组之后的数据进一步过滤,having不能单独使用,having不能代替where ,  having必须和group by联合使用。
找出每个部门平均薪资大于2500的
语法: select deptno,avg(sal) from emp group by deptno having avg(sal) >2500;
5.单标查询总结
select .... from .... where..... group by .... having .... order by ......
以上执行额顺序是(不能颠倒)1. from    2. where   3.group  4.having  5select  6. order by
1.从某张表中查询数据,2.先经过where条件筛选出有价值的数据。3.对这些有价值的数据进行分组。4.分组之后可以使用having继续筛选。5.select查询出来。6.最后排序输出!
案例:找出每个岗位的平均薪资,要求显示平均薪资大于1500的,处MANAGER岗位之外,要求按照平均薪资降序排。
语法: select job,avg(sal) as avgsal from emp where job <> 'MANAGER' group by job having avg(sal) > 1500 order by avgsal desc;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值