mysql视图之管理视图实例详解【增删改查操作】
本文实例讲述了mysql视图之管理视图操作。分享给大家供大家参考,具体如下:
mysql提供了用于显示视图定义的SHOWCREATEVIEW语句,我们来看下语法结构:
SHOWCREATEVIEW[database_name].[view_name];
要显示视图的定义,需要在SHOWCREATEVIEW子句之后指定视图的名称,我们先来根据employees表创建一个简单的视图用来显示公司组织结构,完事在进行演示:
CREATEVIEWorganizationAS SELECT CONCAT(E.lastname,E.firstname)ASEmployee, CONCAT(M.lastname,M.firstname)ASManager FROM employeesASE INNERJOIN employeesASMONM.employeeNumber=E.ReportsTo ORDERBYManager;
从以上视图中查询数据,得到以下结果:
mysql>SELECT*FROMorganization; +------------------+------------------+ |Employee|Manager| +------------------+------------------+ |BondurLoui|BondurGerard| |CastilloPamela|BondurGerard| |JonesBarry|BondurGerard| |HernandezGerard|BondurGerard| .......此处省略了manymany数据....... |KatoYoshimi|NishiMami| |KingTom|PattersonWilliam| |MarshPeter|PattersonWilliam| |FixterAndy|PattersonWilliam| +------------------+------------------+ 24rowsinset
要显示视图的定义,请使用SHOWCREATEVIEW语句如下:
SHOWCREATEVIEWorganization;
我们还可以使用任何纯文本编辑器(如记事本)显示视图的定义,以打开数据库文件夹中的视图定义文件。例如,要打开organization视图定义,可以在数据库文件夹下的data文件夹中找到你数据库文件夹,完事进入其中按着你视图名称找.frm文件。
我们再来通过ALTERVIEW和CREATEORREPLACEVIEW来尝试修改视图,先来看下alertview语法:
ALTER [ALGORITHM={MERGE|TEMPTABLE|UNDEFINED}] VIEW[database_name].[view_name] AS [SELECTstatement]
以下语句通过添加email列来演示如何修改organization视图:
ALTERVIEWorganization AS SELECTCONCAT(E.lastname,E.firstname)ASEmployee, E.emailASemployeeEmail, CONCAT(M.lastname,M.firstname)ASManager FROMemployeesASE INNERJOINemployeesASM ONM.employeeNumber=E.ReportsTo ORDERBYManager;
要验证更改,可以从organization视图中查询数据,咱就不赘述了,完事来看下另一个语法结构:
CREATEORREPLACEVIEWv_contactsAS SELECT firstName,lastName,extension,email FROM employees; --查询视图数据 SELECT*FROMv_contacts;
我们要注意,在我们修改的时候,如果一个视图已经存在,mysql只会修改视图。如果视图不存在,mysql将创建一个新的视图。好啦,我们来看下上述sql执行的结果:
+-----------+-----------+-----------+--------------------------------+ |firstName|lastName|extension|email| +-----------+-----------+-----------+--------------------------------+ |Diane|Murphy|x5800|dmurphy@yiibai.com| |Mary|Hill|x4611|mary.hill@yiibai.com| |Jeff|Firrelli|x9273|jfirrelli@yiibai.com| |William|Patterson|x4871|wpatterson@yiibai.com| |Gerard|Bondur|x5408|gbondur@gmail.com| |Anthony|Bow|x5428|abow@gmail.com| |Leslie|Jennings|x3291|ljennings@yiibai.com| ..............此处省略了manymany数据.................................. |Martin|Gerard|x2312|mgerard@gmail.com| |Lily|Bush|x9111|lilybush@yiiibai.com| |John|Minsu|x9112|johnminsu@classicmodelcars.com| +-----------+-----------+-----------+--------------------------------+ 25rowsinset
假设我们要将职位(jobtitle)列添加到v_contacts视图中,只需使用以下语句:
CREATEORREPLACEVIEWv_contactsAS SELECT firstName,lastName,extension,email,jobtitle FROM employees; --查询视图数据 SELECT*FROMv_contacts;
执行上面查询语句后,可以看到添加一列数据:
+-----------+-----------+-----------+--------------------------------+----------------------+ |firstName|lastName|extension|email|jobtitle| +-----------+-----------+-----------+--------------------------------+----------------------+ |Diane|Murphy|x5800|dmurphy@yiibai.com|President| |Mary|Hill|x4611|mary.hill@yiibai.com|VPSales| |Jeff|Firrelli|x9273|jfirrelli@yiibai.com|VPMarketing| ...................此处省略了一大波数据.................................................... |Yoshimi|Kato|x102|ykato@gmail.com|SalesRep| |Martin|Gerard|x2312|mgerard@gmail.com|SalesRep| |Lily|Bush|x9111|lilybush@yiiibai.com|ITManager| |John|Minsu|x9112|johnminsu@classicmodelcars.com|SVPMarketing| +-----------+-----------+-----------+--------------------------------+----------------------+ 25rowsinset
完事我们来看使用DROPVIEW语句将视图删除,先来看下语法结构:
DROPVIEW[IFEXISTS][database_name].[view_name]
上述sql中,IFEXISTS是语句的可选子句,它允许我们检查视图是否存在,用来避免删除不存在的视图的错误。完事我们来删除organization视图:
DROPVIEWIFEXISTSorganization;
我们得注意下,每次修改或删除视图时,mysql会将视图定义文件备份到/database_name/arc/目录中。如果我们意外修改或删除视图,可以从/database_name/arc/文件夹获取其备份。
好啦,本次记录就到这里了。
更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》
希望本文所述对大家MySQL数据库计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。