MySQL中的权限管理及视图操作

权限管理

创建用户

CREATE USER 用户名  IDENTIFIED BY 密码

对用户进行授权

GRANT ALL ON 数据库.表名 TO 用户名;

撤销用户权限

REVOKE ALL ON 数据库.表名 FROM 用户名;

删除用户

DROP USER 用户名;

权限管理案例

#创建用户名为kaka密码为123的用户
CREATE USER 'kaka' IDENTIFIED BY '123';
#授权
#对kaka开放stu表的授权
GRANT ALL ON companydb.`stu` TO 'kaka';
#对kaka开放所有表的授权
GRANT ALL ON companydb.* TO 'kaka';
#撤销
#撤销kaka对stu表的权限
REVOKE ALL ON companydb.stu FROM 'kaka';
#删除kaka用户
DROP USER 'kaka';

视图

概念

是一个虚拟表,只操作部分数据;从一个表中或多个表中查询出来的结果表,作用和真实表一样,包含一系列的带有行和列的数据。视图中,可以使用SELECT语句查询数据,也可以使用INSERT、UPDATE、DELETE修改记录,视图可以使用户操作方便,并保障了数据库系统安全;

视图特点

  • 优点
    • 简单化,数据所见即所得;
    • 安全性,只能查询或修改视图中锁能见到的数据;
    • 逻辑独立性,可以屏蔽真实表结构变化带来的影响;
  • 缺点
    • 性能相对较差,简单的查询会稍微复杂;
    • 修改不方便,当视图的数据时复杂的聚合视图时,无法修改;

视图的操作

  1. 创建视图
 语法:CREATE VIEW 视图名 AS 查询数据源表的语句;
#创建一个t_empinfo视图,该视图的数据是员工姓名,邮箱,手机号码
CREATE VIEW t_empinfo
AS
SELECT FIRST_NAME,LAST_NAME,email,PHONE_NUMBER FROM t_employees;

  1. 使用视图
#使用视图
#查询 
SELECT * FROM t_empinfo WHERE FIRST_NAME='Steven' AND LAST_NAME='King';
#修改 只能修改得到的
UPDATE t_empinfo SET email = 'Kings' WHERE FIRST_NAME='Steven' AND LAST_NAME='King';
  1. 视图的修改
方式一:CREATE OR REPLACE VIEW 视图名 AS 查询源表的语句;
方式二:ALTER VIEW 视图名 AS查询源表的语句;
#视图的修改
#方式1:存在就替换数据,不存在就新建
CREATE OR REPLACE VIEW t_empinfo
AS
SELECT employee_id,FIRST_NAME,LAST_NAME,email,PHONE_NUMBER FROM t_employees;
#方式2
ALTER VIEW t_empinfo
AS
SELECT FIRST_NAME,LAST_NAME,email,PHONE_NUMBER FROM t_employees;

  1. 视图的删除
语法:DROP VIEW 视图名
#删除t_empinfo视图
DROP VIEW t_empinfo;
  • 删除视图不会影响原表的数据

视图的注意事项

  • 视图不会独立存储数据,原表发生改变,视图的数据也发生改变。没有优化查询的性能
  • 如果视图包含聚合函数的结果、GROUP BY分组后的结果、HAVING筛选过滤后的结果和UNION、UNION ALL联合后的结果则视图不可更新;

你可能感兴趣的:(SQL,mysql)