权限操作:
权限:限制一个用户能够做什么事情,在mysql中可以设置全局权限,指定数据库权限,指定表权限和指定字段权限
权限的分类:
create:创建数据库,表或索引权限
drop:删除数据库表或权限
alter:更改表,比如添加字段索引等
delete:删除数据权限
index:索引权限
insert:插入权限
select:查询权限
update:更新权限
create view:创建视图权限
execute:执行存储过程权限
创建用户:
create user '用户名' @'localhost' identified by '密码';
删除用户:
drop user '用户名';
分配权限:
grant 权限(culumns) on 数据库对象 to 用户 identifield by '密码' with grant option;
创建对指定数据库的所有权限:
grant all privileges on 数据库名.* to 用户名 identified by 密码 with grant option;
flush privileges;
创建一个用户只能对表进行crud操作:
grant insert, update, select, delete on 数据库名.表名 to 用户名 identified by '密码';
flush privileges;
查看权限:
show grants;
查看指定用户权限:
show grants for 用户名;
删除权限:
revoke 权限 on 数据库对象 from 用户名;
视图:
视图是一个虚拟表,其内容由查询定义
同真实的表一样,视图包含一系列带有名称的列和行数据
行和列数据来自定义视图的查询所引用的表,并且在引用视图时动态生成
简单的来说视图是由select的结果组成的表
视图的特性:
视图是对若干张基本表的引用,一张虚表,查询语句执行的结果
不存储具体的数据(基本表数据发生了改变,视图也会跟着改变)
可以跟基本表一样,进行增删改查操作(增删改操作有条件限制)
视图的作用:
安全性:创建一个视图,定义好该视图所操作的数据,之后将视图与用户权限与视图绑定,这样的方式是使用到了一个特性:grant语句可以针对视图进行授予权限
查询性能提高
提高了数据的独立性
创建视图:
create [algorithm = {undefined|merge|temptable}] view 视图名 [(属性清单)] as select 语句 [with [cascaded|local] check option];
algorithm参数:
undefined:没有定义algorithm参数,mysql更倾向于选择替换方式是因为他更加有效
merge:处理方式替换式,可以进行更新真实表中的数据
temptable:具式化,由于数据存储在临时表中,所以不可以进行更新操作
with check option:更新数据时不能插入或更新不符合视图限制条件的记录
local和cascaded:可选参数,决定了检查测试的范围,默认值为cascaded
修改视图:
create or replace view 视图名 as select [..] from [...];
删除视图:
drop view 视图名称;
视图机制:
替换式:操作视图时,视图名直接被视图定义给替换掉
具化式:mysql先得到了'视图执行的结果,该结果先形成一个中间结果暂时存在内存中
替换式与具化式区别:
替换方式,将视图公式替换后,当成一个整个sql进行处理了
具体化方式,先处理视图结果,后处理外面的查询需求
视图不可更新部分:
聚合函数
distinct关键字
group by子句
having子句
union运算符
from字句中包含多个表
select语句中引用了不可更新视图
只要视图当中的数据不是来自于基表就不能够直接修改