视图
基本概念:
1.视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含列,其数据来自对应的真实表(基表)
总结:
1.视图是根据基本来创建的视图是虚拟的表
2.视图也有列,数据来自基表
3.通过视图可以修改基表的数据
4.基表的改变,也会影响到视图的数据
视图的基本使用
1.create view视图名as select语句
2.alter view视图名as select语句 --更新成新的视图
3.SHOW CREATE VIEW 视图名
4.drop view视图名1,视图名2
视图细节讨论
1.创建视图后,到数据库去看,对应视图只有一个视图结构文件(形式:视图名.frm)
2. 视图的数据变化会影响到基表,基表的数据变化也会影响到视图[insert update delete ]----针对前面的雇员管理系统-----
mysql> create view myview as select empno ,ename , job, comm from emp;
mysql> select * from myview;
mysq>update myview set comm=200 where empno=7369;//修改视图,对基表都有变化mysql> update emp set comm=100 where empno=7369;//修改基表,对视频也有变化
3.视图中可以再使用视图,数据依然来自基表
视图最佳实践
1.安全。一些数据表有着重要的信息。有些字段是保密的,不能让用户直接看到。这时就可以创建一个视图,在这张视图中只保留一部分字段。这样,用户就可以查询自己需要的字段,不能查看保密的字段。
2性能。关系数据库的数据常常会分表存储,使用外键建立这些表的之间关系。这时, 数据库查询通常会用到连接(JOIN)。这样做不但麻烦,效率相对也比较低。如果建立一个视图,将相关的表和字段组合在一起,就可以避免使用JOIN查询数据。
3.灵活。如果系统中有一张旧的表,这张表由于设计的问题,即将被废弃。然而,很多应用都是基于这张表,不易修改。这时就可以建立一张视图,视图中的数据直接映射到新建的表。这样,就可以少做很多改动,也达到了升级数据表的目的。
MySQL管理
Mysql用户
mysql中的用户,都存储在系统数据库mysql中user表中
其中user表的重要字段说明:
1.host:允许登录的“位置”,localhost表示该用户只允许本机登录,也可以指定ip地址,比如:192.168.1.100
2. user:用户名;
3. authentication_string:密码,是通过mysql的password()函数加密之后的密码。
- 创建用户
create user‘用户名’@’允许登录位置’identified by‘密码
说明:创建用户,同时指定密码
- 删除用户
drop user‘用户名’@’允许登录位置’;
注意:
不同的数据库用户,登录到DBMS后,根据相应的权限,可以操作的数据库和。数据对象(表,视图,触发器)都不一样
- 用户修改密码
修改自己的密码:
set password = password(密码');
修改他人的密码(需要有修改用户密码权限):
set password for"用户名'@"登录位置 =password(密码');
mysql中的权限
- 给用户授权
基本语法:
grant 权限列表 on库.对象名to‘用户名’@’登录位置’【identified by‘密码’】
说明: 1,权限列表,多个权限用逗号分开grant select on ......-
grant select,delete,create on .....grant all 【privileges】 on ..... /表示赋予该用户在该对象上的所有权限
2.特别说明
*.*:代表本系统中的所有数据库的所有对象(表,视图,存储过程)库.*:表示某个数据库中的所有数据对象(表,视图,存储过程等)
3,identified by可以省略,也可以写出.
⑴如果用户存在,就是修改该用户的密码,
⑵如果该用户不存在,就是创建该用户!
- 回收用户授权
基本语法: revoke权限列表 on库.对象名from '用户名"@"登录位置';·
- 权限生效指令
如果权限没有生效,可以执行下面命令.
基本语法: FLUSH PRIVILEGES;
管理细节:
1.在创建用户的时候,如果不指定Host,则为%,%表示表示所有IP都有连接权限
create user xXX;
2.你也可以这样指定
create user 'xxx'@'192.168.1.%’表示xxx用户在192.168.1.*的ip可以登录mysql
3.在删除用户的时候,如果host不是%需要明确指定‘用户'@'host值'