Sql中的函数

来源:互联网 发布:vue.js和react.js 编辑:程序博客网 时间:2024/05/16 08:38

Sql中的函数
Sql函数包括:(单行函数)(分组函数)(分析函数)
单行函数:
     对于从表中查询出来的每条记录只显示一个数据。单行函数可以出现在select子句中,where子句中。单行函数包括:(字符函数)(数字函数)(日期函数)(转换函数)(其他函数)。 
    
日期函数:对日期进行计算 显示日期类型或者数字类型。
    SYSDATE    当前日期  eg:select sysdate from dual; 
    current_date    返回当前会话时区中的当前日期
    current_timestamp    以timestamp with time zone数据类型返回当前会话时区中的当前日期
    dbtimezone    返回时区
    ADD_MONTHS    加上月数 eg:select add_months(sysdate,1)  下个月, add_months(sysdate,123) "123个月后" from dual 
    MONTHS_BETWEEN  返回两个日期之间月数 eg:两个日期相差的月数  select (sysdate-hiredate)/30 方式一, months_between(sysdate,hiredate) 方式二 from emp;  
              --add_months:在指定日期上加上若干个月
    LAST_DAY    返回月的最后一天 eg:select last_day(sysdate) from dual; 
    ROUND    将日期进行四舍五入 eg:select round(sysdate,'MONTH')  月,round(sysdate,'YEAR') from dual;
    NEXT_DAY    指定下一个星期几的日期 eg:select next_day(sysdate,'星期-') from dual; 
    TRUNC    日期的格式转换 eg:select trunc(sysdate,'MONTH')  月,trunc(sysdate,'YEAR') from dual;  
    EXTRACT    提起日期中指定的部分 










    字符函数:
    Initcap(char)  大写首字母。eg:select INITCAP('hello world') from dual;
    Lower(char)  将大写字符变成小写。eg:select lower('Hello World') 转小写, upper('Hello World') 转大写 from dual; 
    数字函数
    Mod(m,n)   m/n 的余数。eg:select mod(11,10) from dual;  
    Power(m,n)   m的n次方。eg:select power(2,2),power(-1,2),power(1,0) from dual;   POWER(2,2) POWER(-1,2) POWER(1,0)  
    Round(m,n)    m是小数,n是取的小数位数。四舍五入 eg:select round(123.5),round(123.46,1),round(126.45,-1) from dual; 
 ROUND(123.5) ROUND(123.46,1) ROUND(126.45,-1)
    Trunc(m,n)    m是小数,n是取的小数位数。不四舍五入 select trunc(999.99),trunc(999.99,1),trunc(999.99,-2) from dual;  
TRUNC(999.99) TRUNC(999.99,1) TRUNC(999.99,-2) 
    转换函数
    To_char 转化字符。eg: SELECT  TO_CHAR( 'AABBCC' )  FROM  dual;
    To_date  转换日期。eg:SELECT  TO_DATE( 2454336 ,  'J' )  FROM  dual;  SELECT  TO_DATE( '2007-8-23 23:25:00' ,  'yyyy-mm-dd hh24:mi:ss' )  FROM dual;
    To_number  转换数字 eg: SELECT TO_NUMBER('-100.00', '9G999D99') FROM dual; 
    其他函数
    NVL(表达式1,表达式2)
        如果表达式1为null,返回表达式2,否则返回表达式1;
        如果表达式类型不一致,Oracle将表达式2转换为表达式1的类型
    NVL2(表达式1,表达式2,表达式3)
        如果表达式1为空,返回表达式3的值,否则返回表达式2的值
    NULLIF(表达式1,表达式2)
        如果两表达式相等,返回空值,否则返回表达式1


  分组函数
    Avg ()取平均数。eg:select sum(sal)/count(*) 方式一, avg(sal) 方式二 from emp;  
    Count ()返回查询出来的数据。select count(*) from emp;  
    Sum ()取和 eg:select sum(sal)/count(*) 方式一, avg(sal) 方式二 from emp; 求平均
    Max ()取最大值   eg:--max和min:求最高工资和最低工资  select max(sal) 最高工资,min(sal) 最低工资 from emp;  
    Min ()取最小值   eg:--max和min:求最高工资和最低工资  select max(sal) 最高工资,min(sal) 最低工资 from emp; 

 1.函数
  单行函数
  --字符函数  伪表
    select substr('Springboot Springcloud SpringMvc',2,9) from dual;
    select length('好人') from dual;

    select lengthb('好人') from dual;

    select userenv('language') from dual;

    select instr('Springboot Springcloud SpringMvc','ing') from dual;

    select instr('Springboot Springcloud SpringMvc','ing',3,2) from dual;--15

    select instr('Springboot Springcloud hehe','ing',-3,2) from dual; --4

    select rpad('Happy',10,'*') from dual;

    select trim('    A        BC   ') from dual;

    select trim('a' from 'ahappyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') from dual;
  日期函数:
 
  select floor("MONTHS_BETWEEN"(SYSDATE, "TO_DATE"('1998-01-01', 'yyyy-MM-dd'))) from dual;

SELECT floor(SYSDATE-"TO_DATE"('1998-01-01', 'yyyy-MM-dd')) from dual;

select "ADD_MONTHS"(SYSDATE, 1) from dual;


select sysdate from dual;

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
select to_char(sal,'L9,999.99') from emp;

select round('12.45',1) from dual;

--nvl和nvl2 滤空函数

select sal*12 工资,comm 奖金,sal*12+nvl(comm,0) from emp;
select sal, sal+NVL2(COMm,comm*2,0) from emp;

--decode
select ename,decode(deptno,10,'开发部',20,'测试部',30,'财务部','保洁部') from EMP

  分组函数 sum() count()  avg() max() min()
  分析函数

2.表空间
首先用system登录,对用户授权
grant create,drop tablespace to HAPPYY2165

create tablespace y2165tabspace
datafile 'E:\app\Happy\oradata\orcl\y2165tabspace_1.dbf' size 10m,
'E:\app\Happy\oradata\orcl\y2165tabspace_2.dbf' size 10m
 autoextend on next 32m maxsize unlimited

 
 select tablespace_name from user_tablespaces;

--删除表空间
drop tablespace y2165tabspace2
--删除表空间的同时清除物理文件
drop tablespace y2165tabspace including contents and datafiles
3.序列
 序列和表是平级的。
 create tablespace y2165tabspace
datafile 'E:\app\Happy\oradata\orcl\y2165tabspace_1.dbf' size 10m
 autoextend on next 32m maxsize unlimited
 --Oracle没有自增列 ,用的就是序列
 create table dept
 (
   deptno number primary key not null,
   deptname nvarchar2(32)
 ) tablespace  y2165tabspace
 
 
  create table emp
 (
   empno number primary key not null,
   empname nvarchar2(32)
 ) tablespace  y2165tabspace
 
  insert into dept values(1,'开发部')
  commit
  select * from dept
 
   insert into emp values(1,'微冷的雨')
   insert into emp values(seq_num.nextval,'微冷的雨')
  commit
  select * from emp

  insert into dept values(seq_num.nextval,'开发部')
 
  select  seq_num.nextval from dual;

    --当前序列中存储的值是多少
    select  seq_num.currval from dual;
   --GUID和UUID
   
   select SYS_GUID() from dual;