目录
视图概念和操作
视图基本操作
视图规则和限制
用户管理
用户
视图概念和操作
什么是视图?
视图是一个虚拟表,由一个或多个基本表的查询结果组成(视图是存储在数据库中的查询的SQL 语句,不在数据库中以存储的数据值集形式存在)。视图是基于存储在数据库中的数据的可视化表示,它可以像表一样被查询和操作。视图的数据变化会影响到基表,基表的数据变化也会影响视图。视图可以简化复杂查询,提供更方便的数据访问方式,并且可以保护基础数据的安全性。
需要注意的是,对视图的修改操作实际上是对基础表的修改操作。因此,当对视图进行插入、更新或删除操作时,实际上是对基础表进行相应的操作。视图只是提供了一种方便和灵活的方式来访问和操作基础表的数据。
视图基本操作
创建视图
create view 视图名 as select 语句;
实例:有一张部门表和一张员工表,创建一个视图,包含员工名和其部门名
修改了视图数据,对基表数据有影响:
修改了基表,对视图有影响:
删除视图
drop view 视图名;
示例:
视图规则和限制
1.与表名一样,必须唯一命名。
2.创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响。
3.视图不能添加索引,也不能有关联的触发器或默认值。
4.视图可以提高安全性,必须有足够的访问权限。
一般这样做:创建一个视图,定义好该视图所操作的数据。之后将用户权限与视图绑定。这样的方式是使用到了一个特性:grant语句可以针对视图进行授予权限给不同的用户使用。
5.order by可以用在视图中,但是如果从该视图检索数据select中也含有order by,那么该视图中的order by将被覆盖
6.视图可以表一起使用。
用户管理
倘若只能使用root用户访问数据库,那么就会数据库就会存在安全隐患,这时就需要使用MySQL的用户管理。
用户
用户信息:MySQL的用户信息都存储在系统数据库mysql的user表中。
查看user表:
字段解释:
host:表示该用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆
user:用户名
authentication_string:用户密码通过password函数加密后的
*_priv:表示用户是否拥有该权限,如下:
创建用户
语法:
create user '用户名'@'登陆主机/ip' identified by '密码';
创建时,登陆地址使用%表示任意登陆地址,删除时也同理。
示例:
创建一个用户名为ys的用户:
使用ys用户登录:
修改用户密码
普通用户可以通过调用password函数修改自己的密码,超级用户可以通过调用password函数修改任意用户的密码。
删除用户
删除用户的SQL如下:
DROP USER '用户名'@'登录地址';
给用户授权
SQL:
GRANT 权限列表 ON 库名.对象名 TO '用户名'@'登录地址' [IDENTIFIED BY '密码'];
说明:
权限列表:表示要授予用户何种权限,多个权限
库名.对象名:表示要授予用户哪个数据库下的哪个对象的权限。
'用户名'@'登录地址':表示给哪一个用户授权。
IDENTIFIED BY '密码':可选,如果用户存在,则在授予权限的同时修改改用户的密码,如果用户不存在,则创建该用户。
结合视图,要给用户授权访问某个视图,可以使用下面GRANT语句:
GRANT SELECT ON database_name.view_name TO 'username'@'localhost';
查看用户现有权限
在root用户下授权:
授权后通过show grants for '用户名'@'登录地址' 命令,可以查看该用户现有的权限,如下:
回收权限
回收权限的SQL如下:
REVOKE 权限列表 ON 库名.对象名 FROM '用户名'@'登录地址';
语法和授予权限类似。
例如:root用户回收权限
普通用户失去访问权限了: