Oracle 权限、视图、约束


title: Oracle Permissions、Views、Constraints tags: [“Oracle”, “Permissions”,“Views”,“Database”,“Constraints”] date: 2022-04-22 draft: false

Oracle 权限、视图、约束

一、数据库权限

1、查看用户所属角色

select * from user_role_privs;

image-20221201220132624

2、查询角色权限

CONNECT:仅连接Permissions

select * from dba_sys_privs where grantee='CONNECT'

image-20221201220957322

ViewRESOURCEPermissions

select * from dba_sys_privs where grantee='RESOURCE'

image-20221201220328597

DBA角色PermissionsView

select * from dba_sys_privs where grantee='DBA'

3、用户授权

例如:授予scoot拥有dba的Permissions

grant dba to scott;

二、视图

1、创建视图

Create view 视图名称as 查询语句
create view v_emp1 as select ename,job from emp;

2、修改视图

create or replace view 始图名称 as 新的查询数据;
create or replace view vemp as select empno,ename,job from EMP t;

注意与CreateViews的不同:多了一个or replace

3、删除视图

drop view 视图名称;
drop view vemp2;

4、使用视图

select * from 视图;
select * from vemp;

image-20221201222807834

就当作是一张虚拟的表Usage。

5、修改视图数据

注意:修改ViewsData,实际是修改实际表的Data,不是Views的Data。

例如修改上面ViewsData:

update vemp set ename='xxxx' where job='CLERK' and empno='7369'

修改后:

image-20221201223253824

最后实际修改的是,Views中查询Data表的实际Data。

上面Views实际修改的是EMP表的Data:

select * from EMP;

image-20221201223415731

注意:修改ViewsData时,实际是修改实际表的Data,不是Views的Data。

6、视图添加数据

注意:向ViewsData添加Data,实际是向实际表中添加Data

和普通表添加数据一样,视图只是在向实际的表添加数据
insert into vemp values('1111','bbbbb','teacher');

View添加ViewsData,实际是向实际表中添加了Data。

select * from vemp;

image-20221201224019886

View实际表中Data:

select * from EMP;

image-20221201224100073

7、删除视图中数据

和普通删除表Data一样,实际是删除的实际表中Data。

delete from vemp where empno=1111

Summary:对Views中Data的CRUD实际是对真实表的Data操作,实际Development中一般都会将ViewsSettings为只读,防止误操作。

8、只读视图

Create view 视图名称as 查询语句 with read only;

当向Views添加、删除、修改Data时,都会提示“无法对只读ViewsExecutedml操作”。

image-20221201224640327

三、约束

1、主键约束(Primary)

用来标识唯一一条记录的。

非空,和其它表的外键有关系,其它表的外键关联该表的主键,起到Constraints作用。

一般用作条件查询、条件修改、条件删除等操作。

image-20221201230029437

image-20221201230052918

idSettings为主键。

查询一条Data:

insert into t_bookType values(1,'java history');

ViewData:

select * from t_bookType;

image-20221201230154298

View建外键sql语句:

image-20221201231246259

Viewsql:

image-20221201231323785

这里就能看到建表、建主键的sql语句了:

image-20221201231410027

2、外键约束(Foreign)

起到Constraints作用。

新建表:

image-20221201231015271

Create外键:

image-20221201231057760

注意:另一张表t_bookType的主键id不能为空,否则建外键时会Errorid不能为空。

View建外键sql语句和上面一样:

image-20221201231613679

Constraints作用

Viewt_bookTypeData:

image-20221201232021517

向t_book添加Data时:

image-20221201232336435

添加一条不存在的主键Data时,就会提示“违反完整Constraints条件”

image-20221201232551276

因此起到了,Constraints添加的外键只能是另一张表里面存在的主键。

3、唯一性约束(Unique)

Constraints某些字段值作为唯一标识,不能重复添加相同Data。

添加方式

image-20221201233106413

ViewsqlScript同上:

image-20221201233203461

没加Constraints前,可以添加相同bookTypeName的记录,加了Constraints后会提示Error”违反唯一Constraints条件”

image-20221201233448457

4、检查约束(针对所有记录,上面1、2、3都是正对一条记录)

给某个字段添加,写入值的条件。

t_book增加价格price字段:

image-20221201233919169

查询t_book:

image-20221201234012280

如果以后向每次添加Data时,检查price价格Return是否在50-100之间,就可以Usage检查Constraints。

image-20221201234232628

添加检查Constraintssql:

image-20221201234305880

添加Data价格在范围内不Error,超出范围会提示Error“范围检查Constraints条件”

image-20221201234531086

5、默认值约束

其实就是添加Data时,某些字段没有Settings时,给字段Settings默认值。

t_book增加作者性别字段:

image-20221201235100591

添加一条Data:

insert into T_BOOK(id,BOOKNAME,TYPE_ID,price) values(3,'jvm并发',1,66);

image-20221201235448310

新加Datasex性别为空,不符合实际逻辑,怎么会没有性别,因此想Settings默认值。

添加默认值Constraints

image-20221202000008584

重新添加一条Data:此时就有默认值了。

删除上面添加没有sex性别的记录,重新加添;

insert into T_BOOK(id,BOOKNAME,TYPE_ID,price) values(3,'jvm并发',1,66);

image-20221202000202926

现在就有值了。

添加默认值ConstraintsSQL:

image-20221202000437367

6、非空约束

Settings字段值不能为空

勾选:允许为空,

不勾选:不允许为空。

image-20221202000615061

查询一条件Data,价格不添加:

image-20221202000732929

添加Data值,为添加price的值,由于Settings了非空Constraints,不能为空,所以Error“无法将null插入”