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 合并后的结果。