title: Oracle Permissions、Views、Constraints tags: [“Oracle”, “Permissions”,“Views”,“Database”,“Constraints”] date: 2022-04-22 draft: false
Oracle 权限、视图、约束
一、数据库权限
1、查看用户所属角色
select * from user_role_privs;

2、查询角色权限
CONNECT:仅连接Permissions
select * from dba_sys_privs where grantee='CONNECT'

ViewRESOURCEPermissions:
select * from dba_sys_privs where grantee='RESOURCE'

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;

就当作是一张虚拟的表Usage。
5、修改视图数据
注意:修改ViewsData,实际是修改实际表的Data,不是Views的Data。
例如修改上面ViewsData:
update vemp set ename='xxxx' where job='CLERK' and empno='7369'
修改后:

最后实际修改的是,Views中查询Data表的实际Data。
上面Views实际修改的是EMP表的Data:
select * from EMP;

注意:修改ViewsData时,实际是修改实际表的Data,不是Views的Data。
6、视图添加数据
注意:向ViewsData添加Data,实际是向实际表中添加Data
和普通表添加数据一样,视图只是在向实际的表添加数据
insert into vemp values('1111','bbbbb','teacher');
View添加ViewsData,实际是向实际表中添加了Data。
select * from vemp;

View实际表中Data:
select * from EMP;

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操作”。

三、约束
1、主键约束(Primary)
用来标识唯一一条记录的。
非空,和其它表的外键有关系,其它表的外键关联该表的主键,起到Constraints作用。
一般用作条件查询、条件修改、条件删除等操作。


idSettings为主键。
查询一条Data:
insert into t_bookType values(1,'java history');
ViewData:
select * from t_bookType;

View建外键sql语句:

Viewsql:

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

2、外键约束(Foreign)
起到Constraints作用。
新建表:

Create外键:

注意:另一张表t_bookType的主键id不能为空,否则建外键时会Errorid不能为空。
View建外键sql语句和上面一样:

Constraints作用:
Viewt_bookTypeData:

向t_book添加Data时:

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

因此起到了,Constraints添加的外键只能是另一张表里面存在的主键。
3、唯一性约束(Unique)
Constraints某些字段值作为唯一标识,不能重复添加相同Data。
添加方式

ViewsqlScript同上:

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

4、检查约束(针对所有记录,上面1、2、3都是正对一条记录)
给某个字段添加,写入值的条件。
t_book增加价格price字段:

查询t_book:

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

添加检查Constraintssql:

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

5、默认值约束
其实就是添加Data时,某些字段没有Settings时,给字段Settings默认值。
t_book增加作者性别字段:

添加一条Data:
insert into T_BOOK(id,BOOKNAME,TYPE_ID,price) values(3,'jvm并发',1,66);

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

重新添加一条Data:此时就有默认值了。
删除上面添加没有sex性别的记录,重新加添;
insert into T_BOOK(id,BOOKNAME,TYPE_ID,price) values(3,'jvm并发',1,66);

现在就有值了。
添加默认值ConstraintsSQL:

6、非空约束
Settings字段值不能为空
勾选:允许为空,
不勾选:不允许为空。

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

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