MySql数据库视图创建与管理_MySQL数据库SQL优化技巧之视图的创建与销毁

本篇主要介绍的是创建简单的视图,和利用视图简化复杂的表连接,以及视图的销毁和使用视图的注意事项。

与前面介绍的创建表、创建索引相似,视图的创建主要是由CREATE VIEW关键字实现的,视图的销毁则是由DROP VIEW关键字实现的。其数据则由SELECT语句定义。语法CREATE VIEW [ (column1,column2……)]ASSELECT FROM [(column1, colum)]为可选项。

97730271152bb2b5e2c24e640040734f.png

缺省时,为子查询结果中的字段名。SELECT语句指明了视图中的字段及其数据。关于视图我们还要强调两点。视图创建后, 在数据字典中只存放视图的定义,而其中的SELECT语句并不执行。只有当用户对视图进行操作时,才按照视图的定义将数据从基本表中取出。

ae92a4e00d80f1fe5ae66073d5edd73d.png

为表中的一-列或者几列信息创建视图,为StudentInfo表中的姓名( sname).生源( address )信息创建一个 视图NameAddress_ View。示例代码如下。CREATE VIEWNameAddress ViewASSELECT sname,address FROM StudentInfo

a445ab0da71eda86a95e75b003f3c594.png

用户可以通过创建视图进行数据查询。例如,一个表有50列,有成千上万行,而用户只需要使用表中的两列数据,这时,我们可以为这两列创建一个视图,在视图中查询注意需要的数据,这样会大大提高查询效率。

创建与表具有不同字段名的视图前面实例创建的视图,并没有特别指明视图的字段名,系统就默认为与表相同的字段名。实际上,创建视图时,我们也可以为表中的数据定义新的字段名。

6b851baa53390ab0203bc9baea4a97a3.png

比如为表创建具有不同字段名的视图并查看其信息为StudentInfo 表中所有男同学的sname、 address 字段创建一-个 视图NewColumnName_View,这两个字段的字段名定义为Boy_ Name和Boy_ _Address代码如下CREATE VIEW NewColumnName_View (Boy_ Name, Boy_ Address,sex)ASSELECT sname, address, sexFROM StudentInfoWHEREsex =,男'

db9359318c02b1de780f35342e9eba8f.png

实际应用时,我们要注意新定义的字段名与表中数据的对应关系。利用视图简化表的复杂连接视图的一个重要用途就是进行复杂的SQL数据处理。通过创建视图,我们可以实现多表之间的复杂连接。将频繁使用的连接定义成视图后,用户就不必每次使用时都要指定复杂的连接条件了。

比如3个相互关联的表学生信息表(StudentInfo)、招生信息表( RecruitInfo)和院系信息表(Department)。在实际应用中,用户一次查询的记录往往分别存储在这3个不同的表中,如查询“李山”同学所在的系以及高考时所在地区的录取分数线信息。

d4baaa9f2eb6e6c5a153bb6e52bb9e44.png

这时,需要的3个字段sname、dname 和dnum分别在这3个不同的表中。如果我们采用连接表的方式查询,每次查询不同的同学都需要通过复杂的连接条件连接一次表, 显然效率低下;而如果为sname、dname和dnum这3个字段的记录创建一个视图,我们只需要进行一次表的连接,而后相关的查询只要访问视图就可以了,明显提高了查询效率。

ae473d952569d8a125115de42b5da8c8.png

创建一视图Join_ View, 包含StudentInfo表中的姓名(sname) 字段、RecruitInfo 表中的系名(dname) 以及Department表中的录取分数(dnum) 的信息。示例代码如下。CREATE VIEW Join ViewASSELECTsname,dname, scoreFROMStudentInfo,Department, RecruitInfoWHERE StudentInfo.address = RecruitInfo. AddressANDStudentInfo.dno = Depar tment . dno

ab52956624793dc0b552df77c9b87202.png

创建了视图Join_ View 后,用户以后需要对姓名(sname)、 所在系名(dname) 以及所在的录取分数(dnum)的信息查询,只要对视图Join_ _View进行操作就可以了,而不必每次都对表进行连接。 只需要使用select * from join view查看就行。

视图的销毁在SQL中,我们可以通过DROP VIEW关键字销毁创建的视图。语法如下。DROP VIEW view_ name销毁视图,只需在DROP VIEW关键字后写入视图的名称即可。

d128d8a334b6ae70eea69a01badac2f8.png

使用视图的几点原则一.般情况下,创建和使用视图应遵循以下几点原则。和表一样,视图必须有唯一的名字。不仅视图之间不允许有相同的名字,并且试图与表也不允许拥有相同的名字。视图的创建个数不受限制, 用户可以创建任意多个视图。用户要创建视图,必须从数据库管理员那里得到创建权限。视图可以嵌套, 即可以创建视图的视图。一些数据库管理系统(如SQL Server) 禁止用户在查询语句中使用ORDER BY子句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值