SQL - 数据控制语句

SQL - 数据控制语句

DCL - 数据控制

数据控制语言:Data Control Language。用来授权或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,能够对数据库进行监视。

比如常见的授权、取消授权、回滚、提交等等操作。

权限管理

代码演示:

#DCL 权限管理
#1 创建用户
create user zhangsan identified by '123';
#2 授权
grant all on companydb.* to zhangsan;
grant select,insert on companydb.* to zhangsan;

#3 撤销权限
revoke all on companydb.* from zhangsan;

revoke select,insert on companydb.* from zhangsan;
#4 删除用户
drop user zhangsan;

#创建远程访问的root用户
GRANT ALL  ON *.* TO 'root'@'%' IDENTIFIED BY 'root';

drop user 'root'@'%';

视图

概念:视图即虚拟表,从一个表或多个表中查询出来的表,类似于真实表。

作用:方便用户操作,隔离真实表,保障数据库系统安全。

代码演示:

#视图:是一种虚拟表,从一个表或多个表中查询出来的表,类似于真实表。
#1 创建视图
create or replace view vw_student as 
select stu_id as id,stu_name as name,stu_age as age from student;

create or replace view vw_employee_department as 
select employee_id,first_name,last_name,salary,e.department_id,department_name
from t_employees as e
inner join t_departments as d
on e.department_id=d.department_id;


#2 从视图中查询数据
select * from vw_student;
select * from vw_employee_department;


#3删除视图
drop view vw_student;

insert into vw_student(id,name,age) values(107,'杜甫',22);
update vw_student set stu_age=stu_age+5 where stu_id=106;
delete from vw_student where stu_id=106;

注意:对视图中的数据操作会影响原表, 但对视图本身的删除不会影响原表。


特点:

  • 视图不会独立存储数据,原表数据发生改变,视图也发生改变。

  • 如果视图包含以下结构中的一种,则视图不可更新【增删改】:

    • 聚合函数的结果。
    • distinct 去重后的结果。
    • group by 分组后的结果。
    • having 筛选过滤后的结果。
    • union、union all 合并后的结果。

你可能感兴趣的:(从零学Java,sql,数据库,oracle)