mysql视图和程序_mysql视图的理解和使用

本文介绍了数据库中的视图概念,视图作为虚拟表简化了SQL查询,允许重用复杂查询,提供数据安全性,并能改变数据的表示。通过示例展示了如何创建、查看和删除视图,并阐述了使用视图的规则和优势。视图不存储数据,而是动态检索其他表中的数据,并在数据更新时反映变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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查询的结果了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值