mysql学习笔记(三)

  • sql中求并集,交集,全集和差集。
    A集合:
      select * from emp where deptno = 30;
    B集合:
      select * from emp where sal > 1000;
    并集:将两个集合数据全显示,去重。A Union B
    全集:两个集合数据全显示,不做去重。A Union all B
    交集:两个集合中交叉的数据。 A intersect B
    差集:包含在A集合,不包含在B中。A minus B ,跟AB集合顺序有关,谁在前面包含在谁里面
    
  • sql函数
    sql函数一般是在数据上执行的,它给数据的转换和处理提供了方便,只是将取出的数据进行处理,不改变库中的值。输入(arg1,arg2,...)-->函数任务-->输出结果。
    sql函数可分为组函数和单行函数:
      1. 组函数又被称为聚合函数,用于多行数据进行操作,并返回一个单一的结果,组函数仅可用于选择列表或查询的having自居。(输入多个值,输出一个值)。
      2.单行函数对单个数值进行操作,并返回一个值。(输入一个值,输出一个值。)
    
  • 函数测试:
    --查询所有员工的薪水总和。
      select sum(sal) from emp;
    --查看表中又多少条记录,having条件大于3。
      select count(*) from emp group by deptno having count(*)>3;
    
  • 字符函数:concat字符串拼接,等同于||
     select concat('my name is',ename) from emp;
     --将字符串首字母大写 initcap(ename)
     --字符串全部大写 upper(ename)
     --字符串全部小写lower(ename)
     --填充字符串:
         左补齐lpad(ename,10,'*');//*****soctt,不够的话左面补齐。总长度为10。
         右不起rpad(ename,10,'*');//scott*****,右面补齐。总长度为10。
     --去除空格:trim(ename);左右两边都去除。ltrim()左,rtrim() 又。
     --查找指定字符串的位置:
       select instr('ABABCD','A') from emp;//返回1,第一个出现的位置
     --查看字符串长度:length(ename);
     --截取字符串:substr(ename,0,2);//从0截取,截取两位长度。
     --替换字符串:replace('abcde','ab','hehe');//返回hehecde
    
  • 数值函数:
      --对小数进行四舍五入round,可指定小数部分的位数 
        select round (123.123,2)from dual;//123.12
        select round (123.456,2) from dual;//123.46
      --截断数据trunc,对小数位按照位数截取,不会四舍五入。
        select trunc (123.128,2) from dual;//123.12
      --取模操作:mod(10,4);// 2  mod(-10,4)// -2;
      --向上取整:ceil(12.12);//13
      --向下取整:floor(12.13);//12
      --获取正负值:sign(-100);//1,正数返回1,负数返回-1,0返回0
      --x的y次幂:power(x,y);power(10,2);//100
      --常量e的y次幂 :exp(y);
      --以x为底的对数:log(x,y);
      --以e为底的对数:ln(y);
    
  • 时间函数:
      select current_time() from dual;--mysql时间
      select current_date() from dual;--mysql日期
      select current_timestamp() from dual;--mysql日期时间
      Oracle以内部数字格式存储日期:世纪,年,月,日,小时,分钟,秒
      --当前时间:
        select sysdate 无括号from dual;2022/5/22 17:48:00
        select current_date from dual;2022/5/22 17:48:00
      --返回指定月数后的日期,添加指定月份
        select add_months(hiredate,2),hiredate from emp;
        //add_months(hiredate,2)1981/2/17;hiredate为1981/4/17,加2月
      --返回输入日期所在月份的最后一天
        select last_dat(sysdate) from dual;2022/5/31 17:48:00
      --返回两个日期间隔的月份
        select months_between(sysdate,hiredate) from dual;计算是按照时间的毫秒值计算,返回月数时会带小数。466.3438474
      --返回时区的对应时间。NEW_TIME()
      --返回四舍五入的第一天
        select sysdate 当前日期2022/5/22 17:57:00, round(sysdate)最近0点的日期2022/5/23,
        round(sysdate,'day')最近星期日2022/5/22,round(sysdate,'month')最近月初2022/6/1,
        round(sysdate,'q')最近季初日期2022/4/1,round(sysdate,'year')最近年初2022/1/1
        from dual;
      --返回下星期的星期几
        select next_day(sysdate,'星期一') from dual; //传中文参数,2022/5/23
      --提取日期中的时间
        select extract (hour) from timestamp '2001-2-16 2:38:40';//提取小时,结果返回2
        (minute)提取分钟38,(second)提取秒40,(day)日16,(month)月2,(year)年2001;
      --返回日期的时间戳
        select localtimestamp from dual;1-1月-21 11.05.50 47800 上午
        select current_timestamp from dual;1-1yue -21 11.07.20 56600 上午
    

posted on 2022-05-22 18:19  张少凯  阅读(36)  评论(0编辑  收藏  举报

导航