Oracle进阶总结(1)

Oracle知识点总结

1.数据库是什么

数据库是以一定的方式存储在一起,有组织的管理,能为多个用户共享具有尽可能小的数据冗余的特点,与应用程序彼此独立的数据集合

2.什么是数据库管理系统

1)是一种管理数据库的软件,数据库管理系统是为数据库的建立,使用和维护而配置的软件。它建立在操作系统的基础上,对数据库进行统一的管理和控制。用户使用的各种数据库命令以及应用程序的执行,都要通过数据库管理系统。还担任数据库的维护工作。
2)在Oracle数据库中,数据库仅仅是指文件集合,这些文件用来存储的管理相关数据,包含数据文件,控制文件以及重做日志文件

3.关系型数据库

(1)数据模型的是三个层次
概念模型,逻辑模型,物理模型
(2)关系模型的组成
1)关系数据结构
就是一张由列和行组成的二维数据表
2)关系操作集合
选择,投影,连接,增加,删除,修改
3)关系完整性约束
实体完整性,参照完整性,用户自定义的完整性

4 .结构化查询语言

(1)结构化查询语言分类
1)数据查询语言
也就是select语句 从表中检索数据
2)数据操作语言
增,删,改语句 用于对数据的操作
3)事务处理语言
COMMIT 和ROLLBACK 用于提交和回滚
4)数据控制语言
GRANT和REVOKE用于对权限的授予和收回
5)数据定义语言
CREATE,DROP,ALTER 用于对表的创建,删除和修改

5.SQL语句的概念

关键字,语句,字句

6.算术运算符

1)+,-,*,/ 优先级用数学运算一样
2)null 是一种无效的,为赋值的,未知的或不可用的值,不同于零和空格
任何包含空值的算术表达式运算后的结果都是空值 (可以用NVL来进行计算)
3)列别名的两种写法 1.列名 列别名
2.列名 as 列别名
4)连接运算符 || 用于连接列与列,列和字符
例如:SELECT FIRST_NAME||LAST_NAME FROM EMPLOYEES
5)原义运算符
– 原义字符串是包含在SELECT列表中的一个字符、一个数
字或一个日期。
– 日期和字符字面值必须用单引号引起来。
– 每个原义字符串都会在每个数据行输出中出现。

SELECT FIRST_NAME||'的工资是'||SALARY 工资 FROM EMPLOYEES
结果:
Steven的工资是24000

6)消除重复行 DISTINCT

7 .比较操作符

1)比较运算符>,<,<=,>=,=
注意下不等于的这样的 <>
2)特殊比较运算符
between… and… 在范围之内,in 比较的值和集合列表的任何一个之相等,like 是否满足部分匹配(%代表零个或者更多的字符,_代表一个字符),is null 是否为空
3)逻辑运算符
AND OR NOT也就是逻辑与,或,非

8.运算符优先级

算术(+,-,*,/)>连接(||)>比较(>,<,>=,<=,<>)>特殊比较(BETWEEN..AND..,IN,LIKE,IS NULL)>逻辑非(NOT)>逻辑与(AND)>逻辑或(OR)
当然括号里面的才是优先的

9.字符函数

1)大小写转换
LOWER 字符全部转换为小写,
UPPER 字符全部转化为大写
INITCAP 每个单词的首字母大写,其余转小写

SELECT INITCAP('hello world') from dual
结果:
Hello World

2)字符处理函数
①INSTR (s1,s2,n1,n2) 子串s2 从 n1 开始第n2次出现的位置 ,n1,n2默认值都是1 例如:

SELECT INSTR('l love you','o',1,1) FROM dual
结果:
4

结果为‘o’在字符串‘i love you’中第一个字符开始位置,第一次出现的位置
②LPAD(s1,n1,s2) 返回s1 从被s2从左边填充至n1长度后的字符串。例:LPAD(sal 10 '*') ******5000
③RPAD(s1,n1,s2) 返回s1被s2从右面填充到n1长度后的字符串。
例:RPAD(sal,10,'*')5000******
④TRIM 去除字符串头部或尾部(头尾)的字符
例:TRIM('S' FROM 'SSMITH') MITH
⑤REPLACE(s1,s2,s3) 把s1中的s2用s3替换。
例:
REPLACE(’abc’,’b’,’d’) adc
⑥CONCAT连接两个值等同于||
CONCAT(‘Good’, ‘String’) GoodString
⑦SUBSTR(str,n1,n2) 截取字符 从n1开始长度为n2的字符
SUBSTR(‘String’,1,3)Str
⑧LENGTH 取字符长度
SELECT LENGTH(‘i love you’) from dual `10

10.数值函数

1)ROUND:将列或表达式所表示的数值四舍五入到小数点后的第n位。ROUND(45.926, 2) -> 45.93
2)TRUNC:将列或表达式所表示的数值截取到小数点后的第n位。TRUNC(45.926, 2) -> 45.92
3)MOD:取模MOD(1600, 300) ->100

11.日期函数

1) SYSDATE:返回系统当前日期
2)MONTHS_BETWEEN:返回两个日期类型数据之间间隔的自然月数

–MONTHS_BETWEEN 函数演示——查询所有员工服务的月数。
SELECT ename, sal, MONTHS_BETWEEN(SYSDATE,hiredate) months
FROM emp
ORDER BY months;

3) ADD_MONTHS:返回指定日期加上相应的月数后的日期

–ADD_MONTHS 函数演示——查询82年后入职的员工转正日期,
按照3个月试用期考虑
SELECT ename, sal, hiredate, ADD_MONTHS(hiredate,3) new_date
FROM emp
WHERE hiredate>'01-1月-82';

4)NEXT_DAY:返回某一日期的下一个指定日期

NEXT_DAY 函数演示——返回在02-2月-06之后的下一个周
一是什么日期。
SELECT NEXT_DAY('02-2月-06','星期一') NEXT_DAY
FROM DUAL;

5)LAST_DAY:返回指定日期当月最后一天的日期

– LAST_DAY 函数演示——返回06年2月2日所在月份的最后一
天。
SELECT LAST_DAY('02-2月-06') "LAST DAY"
FROM DUAL;

6) ROUND(date[,‘fmt’])将date按照fmt指定的格式进行四舍五入,
fmt为可选项,如果没有指定fmt,则默认为DD,将date四舍五入为最
近的天。
格式码:世纪CC,年YY,月MM,日DD,小时HH24,分MI,秒SS

ROUND函数演示——查询81年入职的员工姓名,入职日
期按月四舍五入的日期。
SELECT empno, hiredate,
ROUND(hiredate, 'MONTH')
FROM emp
WHERE SUBSTR(hiredate,-2,2)=‘81';

7)TRUNC(date[,‘fmt’])将date按照fmt指定的格式进行截断,fmt为
可选项,如果没有指定fmt,则默认为‘DD’,将date截取为最近的
天。

TRUNC 函数演示——查询81年入职的员工姓名,入职日
期按月截断的日期。
SELECT empno, hiredate, TRUNC(hiredate, 'MONTH')
FROM emp
WHERE SUBSTR(hiredate,-2,2)=‘81';

8)EXTRACT:返回日期类型数据中的年份月份或者日

EXTRACT ([YEAR] [MONTH][DAY]
FROM [日期类型表达式])

12.转换函数

TO_CHAR,TO_DATE,TO_NUMBER

这里写图片描述
举例

SQL> SELECT TO_CHAR(sal,'$99,999') SALARY
2 FROM emp
3 WHERE ename = 'SCOTT';
SALARY
--------
$3,000

13.通用函数

1)NVL函数
– 语法:NVL (expr1,expr2)
– 如果expr1不是null,返回expr1,否则返回expr2
2)NVL2函数
–语法:NVL2(expr1,expr2,expr3)
–如果expr1不是null,返回expr2,否则返回expr3
3)NULLIF函数
–语法: NULLIF(expr1,expr2)
–比较两个表达式,如果相等,返回null,否则,返回第
一个表达式
4)CASE语句用法示例

--求员工的税额
SELECT SALARY,
(CASE 
WHEN SALARY BETWEEN 0 AND 5000 THEN 0
WHEN SALARY BETWEEN 5000 AND 8000 THEN SALARY*0.10
WHEN SALARY BETWEEN 8000 AND 15000 THEN SALARY*0.15
WHEN SALARY BETWEEN 15000 AND 50000 THEN SALARY*0.2
ELSE SALARY*0.25
END) 应交税额 FROM EMPLOYEES
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值