Oracle数据库中通⽤的函数实例详解
⽬录
⼀、 Scott⽤户下的表结构
1、如果⾃⼰没有Scoot表就可以⾃⼰创建⼀个
⼆、单⾏函数
1、字符函数
2、数值函数
三、多⾏函数(聚合函数)
1、统计记录数
2、最⼩值查询 min()
3、最⼤值查询 max()
4、平均值查询 avg()
5、求和函数
四、分组统计
总结
⼀、 Scott⽤户下的表结构
SCOTT。是在Oracle数据库中,⼀个⽰例⽤户的名称。其作⽤是为初学者提供⼀些简单的应⽤⽰例,不过其默认是锁定状态,在安装时,根据⽤户需要,在“数据库配置助⼿”界⾯完成后,弹出的对话框中--⼝令管理,⾥⾯解锁。
SCOTT是ORACLE内部的⼀个⽰例⽤户,缺省⼝令为tiger,下⾯有表emp, dept等,这些表和表间的关系演⽰了关系型数据库的⼀些基本原理
1、如果⾃⼰没有Scoot表就可以⾃⼰创建⼀个
(1)创建DEPT表
CREATE  TABLE  DEPT  (
DEPTNO  NUMBER(2)  CONSTRAINT  PK_DEPT  PRIMARY KEY,
orcl 中trunc函数的使用方法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;
(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
)
;
(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
);
(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
) ;
⼆、单⾏函数
1、字符函数
接收字符输⼊返回字符或者数值,dual 是伪表(1)把⼩写的字符转换成⼤写的字符
--(1)把⼩写的字符转换成⼤写的字符
select upper('smith') from dual;
(2)把⼤写字符变成⼩写字符
--(2)把⼤写字符变成⼩写字符
select lower('WHJ') from dual;
2、数值函数
(1)四舍五⼊函数:round()
默认情况下 ROUND 四舍五⼊取整,可以⾃⼰指定保留的位数
四舍五⼊函数⼩数第⼀位⼩于5
--四舍五⼊函数⼩数第⼀位⼩于5
select round(5.342345) from dual;
四舍五⼊函数⼩数第⼀位⼤于5
--四舍五⼊函数⼩数第⼀位⼩于5
select round(5.342345) from dual;
四舍五⼊函数⼩数点保留两位
--四舍五⼊函数⼩数点保留两位
select round(5.12764,2) from dual;
(2)⽇期函数
Oracle 中提供了很多和⽇期相关的函数,包括⽇期的加减,在⽇期加减时有⼀些规律
⽇期 – 数字 = ⽇期
⽇期 + 数字 = ⽇期
⽇期 – ⽇期 = 数字
范例:查询雇员的进⼊公司的周数。(分析:查询雇员进⼊公司的天数(sysdate – ⼊职⽇期)/7就是周数)--查询雇员的进⼊公司的周数。(分析:查询雇员进⼊公司的天数(sysdate – ⼊职⽇期)/7就是周数)
--1.员⼯表
select * from emp;
--2.查询ward 进⼊公司的周数
select Ename,round((sysdate-hiredate)/7) from emp where Ename='WARD';
获得两个时间段中的⽉数:MONTHS_BETWEEN()
范例:查询所有雇员进⼊公司的⽉数
--查询所有雇员进⼊公司的⽉数
select ename,round(months_between(sysdate,hiredate)) as 进⼊公司⽉数 from emp;
(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;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。