Oracle 权限、视图、约束
一、数据库权限
1、查看用户所属角色
select * from user_role_privs;
2、查询角色权限
CONNECT:仅连接权限
select * from dba_sys_privs where grantee='CONNECT'
查看RESOURCE权限:
select * from dba_sys_privs where grantee='RESOURCE'
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;
就当作是一张虚拟的表使用。
5、修改视图数据
注意:修改视图数据,实际是修改实际表的数据,不是视图的数据。
例如修改上面视图数据:
update vemp set ename='xxxx' where job='CLERK' and empno='7369'
修改后:
最后实际修改的是,视图中查询数据表的实际数据。
上面视图实际修改的是EMP表的数据:
select * from EMP;
注意:修改视图数据时,实际是修改实际表的数据,不是视图的数据。
6、视图添加数据
注意:向视图数据添加数据,实际是向实际表中添加数据
和普通表添加数据一样,视图只是在向实际的表添加数据
insert into vemp values('1111','bbbbb','teacher');
查看添加视图数据,实际是向实际表中添加了数据。
select * from vemp;
查看实际表中数据:
select * from EMP;
7、删除视图中数据
和普通删除表数据一样,实际是删除的实际表中数据。
delete from vemp where empno=1111
总结:对视图中数据的CRUD实际是对真实表的数据操作,实际开发中一般都会将视图设置为只读,防止误操作。
8、只读视图
Create view 视图名称as 查询语句 with read only;
当向视图添加、删除、修改数据时,都会提示“无法对只读视图执行dml操作”。
三、约束
1、主键约束(Primary)
用来标识唯一一条记录的。
非空,和其它表的外键有关系,其它表的外键关联该表的主键,起到约束作用。
一般用作条件查询、条件修改、条件删除等操作。
id设置为主键。
查询一条数据:
insert into t_bookType values(1,'java history');
查看数据:
select * from t_bookType;
查看建外键sql语句:
查看sql:
这里就能看到建表、建主键的sql语句了:
2、外键约束(Foreign)
起到约束作用。
新建表:
创建外键:
注意:另一张表t_bookType的主键id不能为空,否则建外键时会报错id不能为空。
查看建外键sql语句和上面一样:
约束作用:
查看t_bookType数据:
向t_book添加数据时:
添加一条不存在的主键数据时,就会提示“违反完整约束条件”
因此起到了,约束添加的外键只能是另一张表里面存在的主键。
3、唯一性约束(Unique)
约束某些字段值作为唯一标识,不能重复添加相同数据。
添加方式
查看sql脚本同上:
没加约束前,可以添加相同bookTypeName的记录,加了约束后会提示报错"违反唯一约束条件"
4、检查约束(针对所有记录,上面1、2、3都是正对一条记录)
给某个字段添加,写入值的条件。
t_book增加价格price字段:
查询t_book:
如果以后向每次添加数据时,检查price价格返回是否在50-100之间,就可以使用检查约束。
添加检查约束sql:
添加数据价格在范围内不报错,超出范围会提示报错“范围检查约束条件”
5、默认值约束
其实就是添加数据时,某些字段没有设置时,给字段设置默认值。
t_book增加作者性别字段:
添加一条数据:
insert into T_BOOK(id,BOOKNAME,TYPE_ID,price) values(3,'jvm并发',1,66);
新加数据sex性别为空,不符合实际逻辑,怎么会没有性别,因此想设置默认值。
添加默认值约束:
重新添加一条数据:此时就有默认值了。
删除上面添加没有sex性别的记录,重新加添;
insert into T_BOOK(id,BOOKNAME,TYPE_ID,price) values(3,'jvm并发',1,66);
现在就有值了。
添加默认值约束SQL:
6、非空约束
设置字段值不能为空
勾选:允许为空,
不勾选:不允许为空。
查询一条件数据,价格不添加:
添加数据值,为添加price的值,由于设置了非空约束,不能为空,所以报错“无法将null插入”
评论 (0)