Mysql_视图
视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。简单来说就是视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。 通过视图,可以展现基表的部分数据; 视图数据来自定义视图的查询中使用的表,使用视图动态生成。 基表:用来创建视图的表叫做基表 *[En]* ** *[En]* ** *[En]* ** 因为视图是需要基表才能构建,因此在讲解视图的时候,我们需要先创建两张数据表用于后面演示视图操作,下面是测试表和测试数据创建的SQL语句。 4.1、创建视图 书写格式: CREATE VIEW DROP VIEW *[En]* ** 4.2、视图的更改 create or replace view view_name as select语句; 在视图存在的情况下可对视图进行修改,视图不在的情况下可创建视图 ps.在MySQL中视图不能重复创建,不能重名。 4.3、DML操作更新视图 因为视图本身没有数据,因此对视图进行的dml操作最终都体现在基表中,比如我们执行以下操作 1 UPDATE v_blog SET 内容 = ‘修改后的内容’ WHERE 编号 = 1; 对于可以执行DML操作的视图mssql 使用视图,定义时可以带上WITH CHECK OPTION约束 作用:对视图所做的DML操作的结果,不能违反视图的WHERE条件的限制。
4.5、6.定义视图时的其他选项 ALGORITHM选项 选择在处理定义视图的select语句中使用的方法 – UNDEFINED:MySQL将自动选择所要使用的算法 – MERGE:将视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分 – TEMPTABLE:将视图的结果存入临时表,然后使用临时表执行语句 缺省ALGORITHM选项等同于ALGORITHM = UNDEFINED DEFINER选项 指出谁是视图的创建者或定义者 – definer= ‘用户名’@’登录主机’ – 如果不指定该选项,则创建视图的用户就是定义者,指定关键字CURRENT_USER(当前用户)和不指定该选项效果相同 SQL SECURITY选项 要查询一个视图,首先必须要具有对视图的select权限,如果同一个用户对于视图所访问的表没有select权限,那会怎么样? SQL SECURITY选项决定执行的结果: – SQL SECURITY DEFINER:定义(创建)视图的用户必须对视图所访问的表具有select权限,也就是说将来其他用户访问表的时候以定义者的身份,此时其他用户并没有访问权限。 – SQL SECURITY INVOKER:访问视图的用户必须对视图所访问的表具有select权限。 缺省SQL SECURITY选项等同于SQL SECURITY DEFINER 视图权限总结: 使用root用户定义一个视图(推荐使用第一种):u1、u2 1)u1作为定义者定义一个视图,u1对基表有select权限,u2对视图有访问权限:u2是以定义者的身份访问可以查询到基表的内容; 2)u1作为定义者定义一个视图,u1对基表没有select权限,u2对视图有访问权限,u2对基表有select权限:u2访问视图的时候是以调用者的身份,此时调用者是u2,可以查询到基表的内容。 Original: Author: and脱发周大侠 Title: Mysql_视图 (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |