Oracle阶段性总结

Oracle阶段性总结
作者:潘玉莹
本次任务完成时间:2019年3月26日~2019年3月26日
开发工具与关键技术:Oracle
单行函数总结
Concat 和 “||” 的区别
Concat 和 “||” 两个都可以把两个字符连接起来,但他们是存在一定的区别。即连接的字符个数不一样
Concat:是一个字符控制函数,他只能连接两个字符,多于两个字符他是不支持的。即Concat的参数只能有两个。
||:连接符他可连接多个字符,不像Concat一样有字符的限制。
To_date和To_char的区别
To_date,To_char两个都是转换函数,但转换的对象不一样。如下:
to_char(hire_date,‘yyyy/MM/DD’)=‘1987/09/17’
to_date(‘2019年10月29日 08:10:21’,‘yyyy"年"MM"月"DD"日" hh:mi:ss’)
即to_char转换的是一个有效的时间,我们可以转换为任意的日期格式;而to_date转换的是包含时间格式的字符。
instr索引值的应用
instr可用来判断是否有你所要找的数据,如:你想要查找谁的名字里有Y这个字符
我们就可以通过instr(name,’Y’)>0是否大于0去找。如果返回的是大于0,则说明name里有你所要找的数据,如果小于0则说明name没有所要的数据。个人感觉用这个函数比用like去查方便多了
通用函数
在oracle课程中我们接触的四个通用函数NVL、NVL2、NULLIF、COALESCE。

NVL在所学的内容中,极为重要,因为nvl可用于将空值转换为一个已知的值,也可转换为字符
nvl(to_char(commission_pct),‘没有奖金’);

NVL2函数有三个参数,根据第一个函数表达式,如为空则返回参数的第三个表达式;如不为空,返回第二个函数表达式。

NULLIF有两个参数,如果两个参数的表达式的值相等,则返回null;如不相等则返回第一个表达式的值。

COALESCE:优点在于可同时处理多个值,如果第一个表达式为空,则返回下一个的值,直到返回不为空的表达式为止。
多表查询总结
Oracle多表连接
多表连接 关键字where/and 两张表连接时,则需要把他们的ID连接起来;如果是三张表则需要一张中间表把三张表连接起来。如图 departments则作为中间表把三张表连接起来

在这里插入图片描述
左连接(+) 作为主表的数据会全部显示出来
在这里插入图片描述
右连接(+)
在这里插入图片描述
SQL1999多表连接
多表连接 关键字join/on 两张表连接时,则需要把他们的ID连接起来;如果是三张表则需要一张中间表把三张表连接起来。如图 departments则作为中间表把三张表连接起来
在这里插入图片描述
左连接left join/on
在这里插入图片描述
右连接 right join/on
在这里插入图片描述
Oracle写法和SQL1999语句的比较
Oracle写法连接两张表使用关键字where,在连接条件加上(+)代表左右连接
(+)号在右边的代表左连接; (+)号在左边的代表右连接。
SQL1999写法连接两张表时使用关键字on,左连接有连接的写法则写在from两张表中间
使用right join/left join
在这里插入图片描述
分组函数总结
组函数忽略空值
如下就能很好的解释在分组函数中,空值是被忽略的
如果我们使用nvl函数使分组函数无法忽略空值
在这里插入图片描述
如果我们使用nvl函数使分组函数无法忽略空值
Nvl会将所有奖金系数为null的赋值为0
在这里插入图片描述
非法使用组函数
(1) 在select列表中所有为包含在组函数的列都应该包含在group by 语句中,否则将会出错
(2) 不能在where子句中使用组函数,可以在having子句中使用组函数。

管理表总结
使用子查询创建表

在这里插入图片描述
创建空表
如果我们想要创建一张和现有表相同数据的表可以加上过滤条件,得到字段
在这里插入图片描述
alter语句增删查改在这里插入图片描述
三种删除表的方法
在这里插入图片描述
约束总结
创建约束
Primary key 主键(唯一的,不为空的)
Not null 不为空
Check 检查性约束
Unique 唯一的
Foreign key 外键约束
on delete set null; 子表中相应的列置空
on delete cascade 当父表的列被删时,子表中相应的列也被删除
在这里插入图片描述
激活,无效化约束
Alter table sc2 disable constaint+约束名;
Alter table sc2 enable constaint+约束名;

数据库对象
序列
创建序列
Create sequence sequence1
Increment by 100 ——每次增长的值
Start with 100 ——开始的值
Maxvalue 9999 ——最大的值
Nocycle ——是否循环
Nocache ——是否缓存登录

——nextval,currval序列的两个属性
Select sequence1. Nextval from dual; 返回序列中下一个有效的值
Select sequence1.currval from dual; 存放序列的当前值

索引
创建索引
Create index index1 on cs2(last_name)

以下情况可以创建索引
列中数据值分布范围广
列经常在where子句或连接条件中出现
表经常被访问而且数据量大,访问的数据大概占数据总量的2%到4%;

用户权限
创建用户
Create user user1 identified by passwords;

赋予用户权限
Grant create table to user1;

把所有权限赋予user1用户
Grant all to user1;

使用户同样具有分配权限的权利
Grant all on t1 to user1 with grant option;
创建角色
创建角色
Create role customer;

给角色赋予权限
Grant create table to customer;

把角色赋予给用户
Grant customer to user1;

收回权限
使用with grant option子句所分配的权限同样被收回。
Revoke all on t1 from user1;
Revoke select on t1 from user1;

学习总结:
学习oracle (甲骨文)课程,也对这个最赚钱的数据库有了些许的理解。在刚开始接触这个课程时,纳闷了感觉有些知识点根本就用不着。就像instr返回索引值,我们学习这个就是看他返回的索引值是多少,有什么用呢!但是通过一些练习你会知道其实他的作用非常大,你觉得这个知识点你用不着那只是你没有深入去理解。其实每一门课程都有扩展不完的知识点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值