732618078

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

权限操作:

权限:限制一个用户能够做什么事情,在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语句中引用了不可更新视图

只要视图当中的数据不是来自于基表就不能够直接修改

 

posted on 2018-09-27 16:46  732618078  阅读(187)  评论(0编辑  收藏  举报