Oracle 权限、视图、约束

admin
2022-12-02 / 0 评论 / 165 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年12月01日,已超过723天没有更新,若内容或图片失效,请留言反馈。

Oracle 权限、视图、约束

一、数据库权限

1、查看用户所属角色

select * from user_role_privs;

image-20221201220132624

2、查询角色权限

CONNECT:仅连接权限

select * from dba_sys_privs where grantee='CONNECT'

image-20221201220957322

查看RESOURCE权限

select * from dba_sys_privs where grantee='RESOURCE'

image-20221201220328597

DBA角色权限查看

select * from dba_sys_privs where grantee='DBA'

3、用户授权

例如:授予scoot拥有dba的权限

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;

注意与创建视图的不同:多了一个or replace

3、删除视图

drop view 视图名称;
drop view vemp2;

4、使用视图

select * from 视图;
select * from vemp;

image-20221201222807834

就当作是一张虚拟的表使用。

5、修改视图数据

注意:修改视图数据,实际是修改实际表的数据,不是视图的数据。

例如修改上面视图数据:

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

修改后:

image-20221201223253824

最后实际修改的是,视图中查询数据表的实际数据。

上面视图实际修改的是EMP表的数据:

select * from EMP;

image-20221201223415731

注意:修改视图数据时,实际是修改实际表的数据,不是视图的数据。

6、视图添加数据

注意:向视图数据添加数据,实际是向实际表中添加数据

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

查看添加视图数据,实际是向实际表中添加了数据。

select * from vemp;

image-20221201224019886

查看实际表中数据:

select * from EMP;

image-20221201224100073

7、删除视图中数据

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

delete from vemp where empno=1111

总结:对视图中数据的CRUD实际是对真实表的数据操作,实际开发中一般都会将视图设置为只读,防止误操作。

8、只读视图

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

当向视图添加、删除、修改数据时,都会提示“无法对只读视图执行dml操作”。

image-20221201224640327

三、约束

1、主键约束(Primary)

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

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

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

image-20221201230029437

image-20221201230052918

id设置为主键。

查询一条数据:

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

查看数据:

select * from t_bookType;

image-20221201230154298

查看建外键sql语句:

image-20221201231246259

查看sql:

image-20221201231323785

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

image-20221201231410027

2、外键约束(Foreign)

起到约束作用。

新建表:

image-20221201231015271

创建外键:

image-20221201231057760

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

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

image-20221201231613679

约束作用

查看t_bookType数据:

image-20221201232021517

向t_book添加数据时:

image-20221201232336435

添加一条不存在的主键数据时,就会提示“违反完整约束条件”

image-20221201232551276

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

3、唯一性约束(Unique)

约束某些字段值作为唯一标识,不能重复添加相同数据。

添加方式

image-20221201233106413

查看sql脚本同上:

image-20221201233203461

没加约束前,可以添加相同bookTypeName的记录,加了约束后会提示报错"违反唯一约束条件"

image-20221201233448457

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

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

t_book增加价格price字段:

image-20221201233919169

查询t_book:

image-20221201234012280

如果以后向每次添加数据时,检查price价格返回是否在50-100之间,就可以使用检查约束。

image-20221201234232628

添加检查约束sql:

image-20221201234305880

添加数据价格在范围内不报错,超出范围会提示报错“范围检查约束条件”

image-20221201234531086

5、默认值约束

其实就是添加数据时,某些字段没有设置时,给字段设置默认值。

t_book增加作者性别字段:

image-20221201235100591

添加一条数据:

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

image-20221201235448310

新加数据sex性别为空,不符合实际逻辑,怎么会没有性别,因此想设置默认值。

添加默认值约束

image-20221202000008584

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

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

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

image-20221202000202926

现在就有值了。

添加默认值约束SQL:

image-20221202000437367

6、非空约束

设置字段值不能为空

勾选:允许为空,

不勾选:不允许为空。

image-20221202000615061

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

image-20221202000732929

添加数据值,为添加price的值,由于设置了非空约束,不能为空,所以报错“无法将null插入”

2

评论 (0)

取消