MySQL视图-增删改查 原创 数据库 2022年7月11日 14:43 夏至未至 978 当前内容 2000 字,在路上,马上到,马上到 ### 目录 [TOC] ### 创建视图 CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] [DEFINER = { user | CURRENT_USER }] [SQL SECURITY { DEFINER | INVOKER }] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] - OR REPLACE:表示替换已有视图 - ALGORITHM:表示视图选择算法,默认算法是UNDEFINED(未定义的):MySQL自动选择要使用的算法 ①UNDEFINED:MySQL将自动选择所要使用的算法 ②MERGE:将视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分 ③TEMPTABLE:将视图的结果存入临时表,然后使用临时表执行语句 缺省ALGORITHM选项等同于ALGORITHM = UNDEFINED - DEFINER选项:指出谁是视图的创建者或定义者 ①definer= '用户名'@'登录主机' ②如果不指定该选项,则创建视图的用户就是定义者,指定关键字CURRENT_USER(当前用户)和不指定该选项效果相同 - SQL SECURITY选项:要查询一个视图,首先必须要具有对视图的select权限。SQL SECURITY选项决定执行的结果: ①SQL SECURITY DEFINER:定义(创建)视图的用户必须对视图所访问的表具有select权限,也就是说将来其他用户访问表的时候以定义者的身份,此时其他用户并没有访问权限。 ②SQL SECURITY INVOKER:访问视图的用户必须对视图所访问的表具有select权限。 缺省SQL SECURITY选项等同于SQL SECURITY DEFINER - select_statement:表示select语句 - [WITH [CASCADED | LOCAL] CHECK OPTION]:表示视图在更新时保证在视图的权限范围之内,cascade是默认值,表示更新视图的时候,要满足视图和表的相关条件,local表示更新视图的时候,要满足该视图定义的一个条件即可 PS:推荐使用WHIT [CASCADED|LOCAL] CHECK OPTION选项,可以保证数据的安全性 ### 删除视图 删除视图是指删除数据库中已存在的视图,删除视图时,只能删除视图的定义,不会删除数据,也就是说不动基表: DROP VIEW [IF EXISTS] view_name ,[view_name] ; 如果视图不存在,则抛出异常;使用IF EXISTS选项使得删除不存在的视图时不抛出异常。 ### 修改视图 `CREATE OR REPLACE VIEW` 语句修改视图 create or replace view view_name as select语句; 在视图存在的情况下可对视图进行修改,视图不在的情况下可创建视图 ALTER语句修改视图: ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] [DEFINER = { user | CURRENT_USER }] [SQL SECURITY { DEFINER | INVOKER }] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] 注意:修改视图是指修改数据库中已存在的表的定义,当基表的某些字段发生改变时,可以通过修改视图来保持视图和基本表之间一致 ### 查看视图 使用 show create view 语句查看视图信息 show create view 视图名称 视图一旦创建完毕,就可以像一个普通表那样使用,视图主要用来查询 mysql> select * from view_name; 有关视图的信息记录在information_schema数据库中的views表中 select * from information_schema.views where TABLE_NAME='v_F_players'\G; 本文标题: MySQL视图-增删改查 本文作者: 夏至未至 发布时间: 2022年7月11日 14:43 最近更新: 2022年7月11日 14:43 原文链接: 许可协议: 署名-非商业性-禁止演绎 4.0 国际(CC BY-NC-ND 4.0) 请按协议转载并保留原文链接及作者 MySQL(28) 上一个 C++11三种智能指针使用 下一个 天天生鲜项目学习资料(Django) 当前文章评论暂未开放,请移步至留言处留言。