MySQL 笔记7 -- 权限操作与视图

MySQL 笔记7 – 权限操作与视图


MySQL 系列笔记是笔者学习、实践MySQL数据库的笔记

课程链接: MySQL 数据库基础入门教程
参考文档:
MySQL 官方文档
SQL 教程


一、权限操作


1、权限

  • 限制用户对数据库进行的操作类型
  • root 管理员拥有全部权限,可以为每个用户设置不同的权限
  • 在MySQL中,可以设置全局权限,指定数据库权限,指定表权限,指定字段权限

2、权限类别

权限类别 说明
CREATE 创建数据库、表或索引权限
DROP 删除数据库或表权限
ALTER ALTER更改表,比如添加字段、索引等
DELETE 删除数据权限
INDEX 索引权限
INSERT 插入权限
SELECT 查询权限
UPDATE 更新权限
CREATE VIEW 创建视图权限
EXECUTE 执行存储过程权限

3、权限命令

功能 命令
创建用户 CREATE USER ‘用户名’@‘localhost’ IDENTIFIED BY ‘密码’;
删除用户 DROP USER 用户名称
分配权限 GRANT 权限 (columns) ON 数据库对象 TO 用户 IDENTIFIED BY “密码” WITH GRANT OPTION
刷新配置信息 flush privileges;
查看权限 show grants
查看指定用户的权限 show grants for root@localhost
删除权限 REVOKE 权限 ON 数据库对象 FROM 用户;
  • WITH GRANT OPTION:能向下继续授予权限
  • 数据库对象:所有数据库:.;某个数据库:数据库名.*;某个表:数据库名.表名

二、视图


1、视图

  • 视图是一个虚拟表(引用基表,并没有真实的数据),其内容由查询定义
  • 同真实的表一样,视图包含一系列带有名称的列和行数据
  • 行和列数据来自定义视图的查询所引用的表,并且在引用视图时动态生成
  • 简单的来说视图是由select结果组成的表

2、视图的特性

  • 视图是对若干张基本表的引用,一张虚表,查询语句执行的结果
  • 不存储具体的数据(基本表数据发生了改变,视图也会跟着改变)
  • 可以跟基本表一样,进行增删改查操作(增删改操作有条件限制)

3、视图的作用

  • 安全性:创建一个视图,定义好该视图所操作的数据,之后将用户权限与视图绑定。grant语句可以针对视图进行授予权限。
  • 查询性能提高
  • 提高了数据的独立性

3、视图命令

创建视图:

CREATE [ALGORITHM]={UNDEFINED|MERGE|TEMPTABLE}]
               VIEW 视图名 [(属性清单)]
               AS SELECT 语句
               [WITH [CASCADED|LOCAL] CHECK OPTION];
  • ALGORITHM 参数
    • merge:处理方式替换式,可以进行更新真实表中的数据。将视图公式替换后,当成一个整体sql进行处理了
    • TEMPTABLE:具化式,由于数据存储在临时表(存在内存)中,所以不可以进行更新操作。先处理视图结果,后处理对视图的查询需求
    • UNDEFINED:mysql更倾向于选择替换方式,因为它更加有效
  • WITH CHECK OPTION:更新数据时不能插入或更新不符合视图限制条件的记录
  • LOCAL和CASCADED:决定了检查测试的范围,默认值为CASCADED

修改视图:

drop view 视图名称;

4、视图不可更新部分

  • 聚合函数;
  • DISTINCT 关键字;
  • GROUP BY子句;
  • HAVING 子句;
  • UNION 运算符;
  • FROM 子句中包含多个表;
  • SELECT 语句中引用了不可更新视图;
  • 只要视图当中的数据不是来自于基表,就不能够直接修改

GOOD LUCK!


你可能感兴趣的:(MySQL)