Mysql的视图和管理

MySQL


视图(view)

视图是一个虚拟表,其内容由查询定义,同真实的表一样,视图包含列,其数据来自对应的真实表(基表)

  1. create view 视图名 as select语句
  2. alter view 视图名 as select语句 --更新成新的视图
  3. SHOW CREATE VIEW 视图名
  4. drop view 视图名1,视图名2
-- 创建一个视图emp_view01,只能查询emp表的(empno、ename, job 和 deptno ) 信息

-- 创建视图
CREATE VIEW emp_view01
	AS
	SELECT empno, ename, job, deptno FROM emp; 

-- 查看视图
DESC emp_view01

SELECT * FROM emp_view01;
SELECT empno, job  FROM emp_view01;

-- 查看创建视图的指令
SHOW CREATE VIEW emp_view01
-- 删除视图
DROP VIEW emp_view01;


-- 视图的细节

-- 1. 创建视图后,到数据库去看,对应视图只有一个视图结构文件(形式: 视图名.frm) 
-- 2. 视图的数据变化会影响到基表,基表的数据变化也会影响到视图[insert update delete ]

-- 修改视图 会影响到基表

UPDATE emp_view01 
	SET job = 'MANAGER' 
	WHERE empno = 7369
	
SELECT * FROM emp; -- 查询基表


SELECT * FROM emp_view01

-- 修改基本表, 会影响到视图

UPDATE emp 
	SET job = 'SALESMAN' 
	WHERE empno = 7369

-- 3. 视图中可以再使用视图 , 比如从emp_view01 视图中,选出empno,和ename做出新视图
DESC emp_view01

CREATE VIEW emp_view02
	AS
	SELECT empno, ename FROM emp_view01
	
SELECT * FROM emp_view02

注意

  1. 创建视图后,到数据库去看,对应视图只有一个视图结构文件(形式:视图名.frm)
  2. 视图的数据变化会影响到基表,基表的数据变化也会影响到视图[insert update delete]
  3. 视图中可以再使用视图,数据仍然来自基表
  • 安全。一些数据表有着重要的信息,有些字段是保密的,不能让用户直接看到。这时就可以创建一个视图,在这张视图中只保留一部分字段。这样用户就可以查询自己需要的字段,不能查看保密的字段。
  • 性能。关系数据库的数据常常会分表存储,使用外键建立这些表的之间关系。这时数据库查询通常会用到连接(JOIN)。这样做不但麻烦,效率相对也比较低。如果建立一个视图,将相关的表和字段组合在一起,就可以避免使用JOIN查询数据。
  • 灵活。如果系统中有一张旧的表,这张表由于设计的问题,即将被废弃。然而很多应用都是基于这张表,不易修改。这时就可以建立一张视图,视图中的数据直接映射到新建的表。这样就可以少做很多改动,也达到了升级数据表的目的。





Mysql 管理

Mysql中的用户,都存储在系数据库mysqluser表中

其中user表的重要字段说明:

  1. host: 允许登录的“位置”
    localhost表示该用户只允许本机登录,也可以指定ip地址,比如:192.168.1.100
  2. user:用户名;
  3. authentication string:密码,是通过mysqlpassword()函数加密之后的密码。

创建用户

create user '用户名'@'允许登录位置' identified by '密码'

创建用户,同时指定密码


删除用户

drop user '用户名'@'允许登录位置';

用户修改密码

修改自己的密码

set password = password('密码');

修改他人的密码(需要有修改用户密码权限)

set password for '用户名'@'登录位置'=password('密码');

给用户授权

grant 权限列表 on.对象名 to '用户名'@'登录位置'【identified  by '密码'
  1. 权限列表,多个权限用逗号分开
   grant select on .....

   grant select,delete,create on ......

   grant all [privileges] on .... //表示赋予该用户在该对象上的所有权限
  1. 特别说明
    *.*:代表本系统中的所有数据库的所有对象(表,视图,存储过程)

    库.*:表示某个数据库中的所有数据对象(表,视图,存储过程等)

  2. identified by可以省略,也可以写出.

    (1)如果用户存在,就是同时修改该用户的密码。

    (2)如果该用户不存在,就是创建该用户!


回收用户授权

revoke 权限列表 on.对象名 from '用户名'@'登录位置';

权限生效指令

如果权限没有生效,可以执行下面命令刷新

FLUSH PRIVILEGES;




注意

  1. 在创建用户的时候,如果不指定Host,则为%%表示表示所有IP都有连接权限

    create user XX;
    
  2. 你也可以这样指定
    create user 'xxx'@'192.168.1.%' 表示xx用户在 192.168.1.* 的ip可以登录mysql

  3. 在删除用户的时候,如果 host 不是%,需要明确指定‘用户’@‘host值’

-- 说明 用户管理的细节
-- 在创建用户的时候,如果不指定Host, 则为% , %表示表示所有IP都有连接权限 
-- create user  xxx;

CREATE USER jack

SELECT `host`, `user` FROM mysql.user

-- 你也可以这样指定 
-- create user  'xxx'@'192.168.1.%'  表示 xxx用户在 192.168.1.*的ip可以登录mysql

CREATE USER 'smith'@'192.168.1.%'

-- 在删除用户的时候,如果 host 不是 %, 需要明确指定  '用户'@'host值'

DROP USER jack -- 默认就是 DROP USER 'jack'@'%'

DROP USER 'smith'@'192.168.1.%'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Raccom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值