概念:视图是一个虚拟表,其内容由查询定义,同真实的表一样,视图包含列,其数据来自对应的真实表(基表)
基本使用:
1.create view 视图名 as select 语句
2.alter view 视图名 as select 语句(更新为新的视图)
3.show create view 视图名(查看创建视图的指令)
4.drop view 视图名1,视图名2(删除视图)
注意事项:
1.创建试图后,到数据库去看,对应视图只有一个视图结构文件(形式:视图名.frm)
2.视图的数据变化会影响到基表,基表的数据变化也会影响到视图
3.视图中可以再使用视图
视图最佳实践:
1.安全:一些数据表有着重要的信息,有些字段是保密的,不能让用户直接看到,这时就可以创建一个视图,在这张视图中只保留一部分字段,这样,用户就可以查询自己需要的字段,不能查看保密的字段
2.性能:关系数据库的数据常常会分表存储,使用外键建立这些表之间的关系;这时数据库查询通常会用到连接(join),这样做不但麻烦,效率相对也比较低,如果建立一个视图,将相关的表和字段组合在一起,就可以避免使用join查询数据
3.灵活:如果系统中有一张旧的表,这张表由于设计的问题,即将被废弃,然而,很多应用都是基于这张表,不宜修改,这时就可以建立一张视图,视图中的数据直接映射到新建的表,这样就可以少做很多改动,也达到了升级数据表的目的
Mysql用户管理:
mysql中的用户,都存储在系统数据库mysql中的user表里
其中user表的重要字段说明:
1.host:允许登录的“位置”,localhost表示该用户只允许本机登录,也可以指定ip地址
2.user:用户名
3.authentication_string:密码,是通过mysql的password()函数加密之后的密码
创建用户:
create user '用户名' @ '允许登录位置' identified by '密码'
删除用户:
drop user '用户名' @ '允许登录位置'
修改密码:
自己:set password = password( '密码' )
别人:set password for '用户名'@'登录位置' = password( '密码' ) [需要权限]
回收用户权限:
revoke 权限列表 on 库.对象名 from '用户名'@'登录位置'
权限生效指令:如果权限没有生效,可以执行下面指令
flush privileges
注意事项:
1.在创建用户的时候,如果不指定Host,则为%,表示所有IP都有连接权限
2.在删除用户的时候,如果host不是%,需要明确指定 '用户'@'host值'