温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Oracle数据库中通用的函数是什么

发布时间:2022-03-25 13:35:00 来源:亿速云 阅读:170 作者:小新 栏目:开发技术

这篇文章主要为大家展示了“Oracle数据库中通用的函数是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle数据库中通用的函数是什么”这篇文章吧。

    一、 Scott用户下的表结构

    SCOTT。是在Oracle数据库中,一个示例用户的名称。其作用是为初学者提供一些简单的应用示例,不过其默认是锁定状态,在安装时,根据用户需要,在“数据库配置助手”界面完成后,弹出的对话框中--口令管理,里面解锁。

    SCOTT是ORACLE内部的一个示例用户,缺省口令为tiger,下面有表emp, dept等,这些表和表间的关系演示了关系型数据库的一些基本原理

    Oracle数据库中通用的函数是什么

    1、如果自己没有Scoot表就可以自己创建一个

    (1)创建DEPT表

    CREATE  TABLE  DEPT  (
    DEPTNO  NUMBER(2)  CONSTRAINT  PK_DEPT   PRIMARY KEY,
    DNAME  VARCHAR2(14) ,  
    LOC  VARCHAR2(13) 
    ) ;

    (2)表DEPT添加数据

    INSERT  INTO  DEPT  VALUES  (10  ,  'ACCOUNTING'  ,  'NEW YORK'  );  
    COMMIT;
    INSERT  INTO  DEPT  VALUES  (20  ,  'RESEARCH'  ,  'DALLAS'  );  
    COMMIT;
    INSERT  INTO  DEPT  VALUES  (30  ,  'SALES'  ,  'CHICAGO'  );  
    COMMIT;
    INSERT  INTO  DEPT  VALUES  (40  ,  'OPERATIONS'  ,  'BOSTON'  );  
    COMMIT;

    Oracle数据库中通用的函数是什么

    (3)创建EMP表

    CREATE  TABLE  EMP  (
    EMPNO  NUMBER(4)    CONSTRAINT PK_EMP PRIMARY KEY,  
    ENAME  VARCHAR2(10),  
    JOB  VARCHAR2(9),  
    MGR  NUMBER(4),  
    HIREDATE  DATE,  
    SAL  NUMBER(7,2),  
    COMM  NUMBER(7,2),  
    DEPTNO  NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT
    );

    Oracle数据库中通用的函数是什么

    (4)表EMP添加数据

    INSERT   INTO   EMP   VALUES  (7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
    COMMIT;
    INSERT   INTO   EMP   VALUES  (7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
    COMMIT;
    INSERT   INTO   EMP   VALUES  (7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
    COMMIT;
    INSERT   INTO   EMP   VALUES  (7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
    COMMIT;
    INSERT   INTO   EMP   VALUES  (7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
    COMMIT;
    INSERT   INTO   EMP   VALUES  (7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
    COMMIT;
    INSERT   INTO   EMP   VALUES  (7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
    COMMIT;
    INSERT   INTO   EMP   VALUES  (7788,'SCOTT','ANALYST',7566,to_date('19-04-1987','dd-mm-yyyy')-85,3000,NULL,20);
    COMMIT;
    INSERT   INTO   EMP   VALUES  (7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
    COMMIT;
    INSERT   INTO   EMP   VALUES  (7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
    COMMIT;
    INSERT   INTO   EMP   VALUES  (7876,'ADAMS','CLERK',7788,to_date('23-05-1987','dd-mm-yyyy')-51,1100,NULL,20);
    COMMIT;
    INSERT   INTO   EMP   VALUES  (7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
    COMMIT;
    INSERT   INTO   EMP   VALUES  (7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
    COMMIT;
    INSERT   INTO   EMP   VALUES  (7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
    COMMIT;

    (5)创建SALGRADE表

    CREATE   TABLE   SALGRADE    (
    GRADE   NUMBER,  
    LOSAL   NUMBER,  
    HISAL   NUMBER 
    );

    Oracle数据库中通用的函数是什么

    (6)表SALGRADE添加数据

    INSERT   INTO   SALGRADE   VALUES   (1,700,1200);  
    COMMIT;
    INSERT   INTO   SALGRADE   VALUES   (2,1201,1400);  
    COMMIT;
    INSERT   INTO   SALGRADE   VALUES   (3,1401,2000);  
    COMMIT;
    INSERT   INTO   SALGRADE   VALUES   (4,2001,3000);  
    COMMIT;
    INSERT   INTO   SALGRADE   VALUES   (5,3001,9999);  
    COMMIT;

    (7)创建BONUS表

    CREATE   TABLE   BONUS    (  
    ENAME   VARCHAR2(10)  , 
    JOB   VARCHAR2(9)  ,  
    SAL   NUMBER,  
    COMM   NUMBER  
    ) ;

    Oracle数据库中通用的函数是什么

    二、单行函数

    1、字符函数

    接收字符输入返回字符或者数值,dual 是伪表

    (1)把小写的字符转换成大写的字符

    --(1)把小写的字符转换成大写的字符
    select upper('smith') from dual;

    Oracle数据库中通用的函数是什么

    (2)把大写字符变成小写字符

    --(2)把大写字符变成小写字符
    select lower('WHJ') from dual;

    Oracle数据库中通用的函数是什么

    2、数值函数

    (1)四舍五入函数:round()

    • 默认情况下 ROUND 四舍五入取整,可以自己指定保留的位数

    • 四舍五入函数 小数第一位小于5

    --四舍五入函数 小数第一位小于5
    select round(5.342345) from dual;

    四舍五入函数 小数第一位大于5

    --四舍五入函数 小数第一位小于5
    select round(5.342345) from dual;

    Oracle数据库中通用的函数是什么

    四舍五入函数 小数点保留两位

    --四舍五入函数 小数点保留两位
    select round(5.12764,2) from dual;

    Oracle数据库中通用的函数是什么

    (2)日期函数

    Oracle 中提供了很多和日期相关的函数,包括日期的加减,在日期加减时有一些规律

    日期 – 数字 = 日期

    日期 + 数字 = 日期

    日期 – 日期 = 数字

    范例:查询雇员的进入公司的周数。(分析:查询雇员进入公司的天数(sysdate – 入职日期)/7就是周数)

    --查询雇员的进入公司的周数。(分析:查询雇员进入公司的天数(sysdate – 入职日期)/7就是周数)
    --1.员工表
    select * from emp;
    --2.查询ward 进入公司的周数
    select Ename,round((sysdate-hiredate)/7) from emp where Ename='WARD';

    Oracle数据库中通用的函数是什么

    获得两个时间段中的月数:MONTHS_BETWEEN()

    范例:查询所有雇员进入公司的月数

    --查询所有雇员进入公司的月数
    select ename,round(months_between(sysdate,hiredate)) as 进入公司月数 from emp;

    Oracle数据库中通用的函数是什么

    (3)转换函数

    TO_CHAR:字符串转换函数

    范例:查询所有的雇员将将年月日分开,此时可以使用 TO_CHAR 函数来拆分

    拆分时需要使用通配符
    年:y, 年是四位使用 yyyy
    月:m, 月是两位使用 mm
    日:d, 日是两位使用 dd

    查询所有的雇员将将年月日分开

    --查询所有的雇员将将年月日分开
    select empno,ename,
           to_char(hiredate,'yyyy') as 年,
           to_char(hiredate,'mm') as 月,
           to_char(hiredate,'dd') as 日
           from emp;

    Oracle数据库中通用的函数是什么

    日期将日期格式改为yyyy-mm-dd字符串格式

    Oracle数据库中通用的函数是什么

    -- 初始格式
    select * from emp;
    --日期将日期格式改为yyyy-mm-dd字符串格式
    select empno,ename,to_char(hiredate,'yyyy-mm-dd') from emp;

    Oracle数据库中通用的函数是什么

    在结果中10以下的月前面补了0,可以使用fm去掉前置0

    --在结果中10以下的月前面补了0,可以使用fm去掉前置0
    select empno,ename,to_char(hiredate,'fmyyyy-mm-dd') from emp;

    Oracle数据库中通用的函数是什么

    TO_DATE:日期转换函数

    TO_DATE 可以把字符串的数据转换成日期类型

    --TO_DATE 可以把字符串的数据转换成日期类型
    select to_date('2022-03-10','yyyy/mm/dd:ss')as 当前日期 from dual;

    Oracle数据库中通用的函数是什么

    (4)通用函数

    空值处理 nvl

    范例:查询所有的雇员的年薪

    --查询所有的雇员的年薪 comm年终奖
    select ename,sal*12+comm from emp;

    Oracle数据库中通用的函数是什么

    我们发现很多员工的年薪是空的,原因是很多员工的奖金是 null,null 和任何数值计算都是

    null,这时我们可以使用 nvl 来处理

    --查询所有的雇员的年薪 comm年终奖
    select ename,nvl(comm,0) 年终奖 ,sal*12+nvl(comm,0)年薪 from emp;

    Oracle数据库中通用的函数是什么

    Decode 函数

    --该函数类似 if....else if...esle
     
    --语法:
     DECODE(col/expression, [search2,result1],[search3, result2]....[default])
    Col/expression:列名或表达式
     
    1. Search2,search3...:用于比较的条件
    2. Result1, result2...:返回值
    3. 如果 col/expression 和 Searchi 匹配就返回 resulti,否则返回 default 的默认值
    --decode函数
    --1. 我是1
    select decode(1,1,'我是1',2,'我是2','我是无名') from dual;
    --2. 我是2
    select decode(2,1,'我是1',2,'我是2','我是无名') from dual;
    --3. 我是无名
    select decode(3,1,'我是1',2,'我是2','我是无名') from dual;

    Oracle数据库中通用的函数是什么

    范例:查询出所有雇员的职位的中文名

    select ename,decode(job,
                       'clerk','业务员',
                       'SALESMAN','销售',
                       'PRESIDENT','总裁',
                       'MANAGER','经理',
                       'NALYST','分析员',
                       '员工' 
                       ) from emp ;

    Oracle数据库中通用的函数是什么

    case when

    CASE expr WHEN comparison_expr1 THEN return_expr1
     [WHEN comparison_expr2 THEN return_expr2
     WHEN comparison_exprn THEN return_exprn 
     ELSE else_expr]
    END

    范例:查询出所有雇员的职位的中文名

    --范例:Case when 查询出所有雇员的职位的中文名
    select t.empno,t.ename,
           case
              when t.job='clerk' then '业务员'
              when t.job='SALESMAN' then '销售'
              when t.job='PRESIDENT' then '总裁'
              when t.job='MANAGER' then '经理'
              when t.job='NALYST' then '分析员'
              else '员工'
              end
              from emp t;

    Oracle数据库中通用的函数是什么

    三、多行函数(聚合函数)

    1、统计记录数

    范例:查询出所有员工的记录数

    -- 范例:查询出所有员工的记录数
    select count(*) from emp;

    不建议使用 count(*),可以使用一个具体的列以免影响性能。

    --不建议使用 count(*),可以使用一个具体的列以免影响性能。
    select count(ename) from emp;

    2、最小值查询 min()

    范例:查询出来员工最低工资

    --范例:查询出来员工最低工资
    select min(sal) from emp;

    3、最大值查询 max()

    范例:查询出员工的最高工资

    --范例:查询出员工的最高工资
    select max(sal) from emp;

    4、平均值查询 avg()

    范例:查询出员工的平均工资

    --范例:查询出员工的平均工资
    select avg(sal) from emp;

    5、求和函数

    范例:查询出 20 号部门的员工的工资总和

    --范例:查询出 20 号部门的员工的工资总和
    select sum(sal) from emp where deptno=20;

    四、分组统计

    分组统计需要使用 GROUP BY 来分组

    --语法:
    SELECT * |列名 FROM 表名 
    {WEHRE 查询条件} 
    {GROUP BY 分组字段}
     ORDER BY 
     列 名 1 ASC|DESC,列名 2...ASC|DESC

    范例:查询每个部门的人数

    -- 范例:查询每个部门的人数
    select deptno,count(ename) from emp group by deptno;

    范例:查询出每个部门的平均工资

    -- 范例:查询出每个部门的平均工资
    select deptno,avg(sal) from emp group by deptno;

    如果我们想查询出来部门编号,和部门下的人数

    -- 如果我们想查询出来部门编号,和部门下的人数
    select deptno,count(ename) from emp;

    我们发现报了一个 ORA-00937 的错误

    Oracle数据库中通用的函数是什么

    注意:

    1.如果使用分组函数,SQL 只可以把 GOURP BY 分组条件字段和分组函数查询出来,不能有其
     
    他字段。
     
    2. 如果使用分组函数,不使用 GROUP BY 只可以查询出来分组函数的值

    范例:按部门分组,查询出部门名称和部门的员工数量

    -- 范例:按部门分组,查询出部门名称和部门的员工数量
    select d.deptno,d.dname,count(e.ename) 
    from emp e,dept d
    where e.deptno=d.deptno 
    group by d.deptno,d.dname

    Oracle数据库中通用的函数是什么

    范例:查询出部门人数大于 5 人的部门

    -- 范例:查询出部门人数大于 5 人的部门
    --(分析:需要给 count(ename)加条件,此时在本查询中不能使用 where,可以使用 HAVING)
    select d.deptno,d.dname,count(e.ename) 
     from emp e,dept d
     where e.deptno=d.deptno 
     group by d.deptno,d.dname 
     having  count(e.ename)>5 ;

    分析:需要给 count(ename)加条件,此时在本查询中不能使用 where,可以使用 HAVING

    Oracle数据库中通用的函数是什么

    范例:查询出部门平均工资大于 2000 的部门

    -- 范例:查询出部门平均工资大于 2000 的部门
     
    select d.deptno,d.dname,avg(e.sal) 
    from dept d ,emp e
     where d.deptno=e.deptno 
     group by d.deptno,d.dname
      having avg(e.sal)>2000;

    Oracle数据库中通用的函数是什么

    以上是“Oracle数据库中通用的函数是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI