文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-29 16:45

关注

这篇文章主要为大家展示了“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()

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

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

--四舍五入函数 小数第一位小于5select 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去掉前置0select 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. 我是1select decode(1,1,'我是1',2,'我是2','我是无名') from dual;--2. 我是2select 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数据库中通用的函数是什么

注意:

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

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

-- 范例:按部门分组,查询出部门名称和部门的员工数量select d.deptno,d.dname,count(e.ename) from emp e,dept dwhere 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数据库中通用的函数是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯