• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql视图的了解和使用

mysql 搞代码 7年前 (2018-06-04) 214次浏览 已收录 0个评论

mysql视图的理解和使用

CREATE TABLE tb_x

(

  xid       INT         NOT NULL AUTO_INCREMENT ,

  xname     VARCHAR(50) NOT NULL,

  xloaction VARCHAR(40) NOT NULL,

  PRIMARY KEY (xid)  

 

)

 

CREATE TABLE tb_y

(

  yid       INT         NOT NULL AUTO_INCREMENT ,

  yname     VARCHAR(50) NOT NULL,

  yloaction VARCHAR(40) NOT NULL,  

  PRIMARY KEY (yid)  

)

 

CREATE TABLE tb_z

(

  zid       INT         NOT NULL AUTO_INCREMENT ,

  zname     VARCHAR(50) NOT NULL,

  zloaction VARCHAR(40) NOT NULL  ,

    PRIMARY KEY (zid)  

)

 

INSERT INTO tb_x (xname,xloaction) VALUES (“xn1″,”xl1”),(“xn2″,”xl2”),(“xn3″,”xl3”),(“xn4″,”xl4”),(“xn5″,”xl5”),(“xn6″,”xl6”),(“xn7″,”xl7”),(“m1″,”n1”),(“cc1″,”yy1”)

INSERT INTO tb_y (yname,yloaction) VALUES (“yn1″,”yl1”),(“yn2″,”yl2”),(“yn3″,”yl3”),(“yn4″,”yl4”),(“yn5″,”yl5”),(“yn6″,”yl6”),(“yn7″,”yl7”),(“m1″,”n1”),(“cc1″,”yy1”)

INSERT INTO tb_z (zname,zloaction) VALUES (“zn1″,”zl1”),(“zn2″,”zl2”),(“zn3″,”zl3”),(“zn4″,”zl4”),(“zn5″,”zl5”),(“zn6″,”zl6”),(“zn7″,”zl7”),(“m1″,”n1”),(“cc1″,”yy1”)

 

SELECT * FROM tb_x ;

SELECT * FROM tb_y ;

SELECT * FROM tb_z ;

 

 

SELECT tb_x.xid ,tb_y.yid, tb_z.zid FROM tb_x,tb_y,tb_z WHERE tb_x.xname = tb_y.yname AND tb_x.xname = tb_z.zname

SELECT * FROM tb_x,tb_y,tb_z WHERE tb_x.xname = tb_y.yname AND tb_x.xname = tb_z.zname

 

例如上面的例子中,

A要用的是最后一个语句SELECT * FROM tb_x,tb_y,tb_z WHERE tb_x.xname = tb_y.yname AND tb_x.xname = tb_z.zname 产生的数据,找出里面包含yy的行的数据。

B也要用到最后一个语句SELECT * FROM tb_x,tb_y,tb_z WHERE tb_x.xname = tb_y.yname AND tb_x.xname = tb_z.zname 产生的数据,找出里面包含m的行的数据。

C也来一个,同样要用的上面的语句的查询结果,是不是一件很麻烦的事情。(自己多添加三个表一样的数据)

 

这样就出现了虚拟的表,就叫视图。

 

视图是虚拟的表,与包含数据表的不一样,视图只包含使用动态检索数据的查询。

 

 

为上面要使用视图

1.简化了SQL语句

2.重用SQL语句

3.使用表的组成部分而不是整个表

4.保护数据,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限

5.更改数据格式和表示,视图可返回与底层表的表示和格式不同的数据

 

在视图创建之后,可用与表基本相同的方式的用他们的,可以视图执行SELECT语句,过滤,排序,将视图连接到其他视图或者是表中,甚至

可以添加和更新数据(有特定的限制)。

 

视图本身是不包含数据的,只是来查看存储在别处的数据的一种设施,因为他们返回的数据是从其他表中的检索出来的,在添加或者更改这些表中的数据时,视图将

返回改变过的数据

 

视图的一些规则

1.名字唯一

2.对于创建的视图数目是没有限制的

3.为了创建视图,必须具有足够的访问权限

4.视图是可以嵌套的,也就是可以利用从其他视图中检索数据的查询来构造一个视图

5.order by 可以用再视图中,但如果从该视图检索数据SELECT中也含有ORDER BY,那么视图中的ORDER BY将被覆盖

6.视图不能索引,也不能有关联的触发器或者是默认值

7.视图可以和表一起使用。

 

CREATE VIEW pros AS 

SELECT * FROM tb_x,tb_y,tb_z WHERE tb_x.xname = tb_y.yname AND tb_x.xname = tb_z.zname //创建视图

 

SHOW CREATE VIEW pros; //查看视图的语句

 

DROP VIEW pros //删除视图的语句

 

SELECT * FROM pros; //使用视图,就像一张表一样了

 

可以这么理解,将SELECT语句的查询结果封装成了视图,那么用户可以直接使用SELECT查询的结果了


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql视图的了解和使用

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址