`
endual
  • 浏览: 3508589 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    MySQL数据库应用 实验训练4:视图和索引的构建与使用

    基于实验1创建的汽车用品网上商城数据库Shopping,理解视图和索引的概念和作用,练习视图的基本操作,包括视图的建立,视图的查询,视图的更新,视图的删除,体会视图带来的方便;练习索引的创建和删除,对比有索引...

    国家开放大学 形考答案 mysql 实验训练4:视图和索引的构建与使用

    国家开放大学 形考答案 mysql 实验训练4:视图和索引的构建与使用

    MySQL数据库:数据视图的修改和删除.pptx

    理解 —— 修改视图定义的语法; 掌握 ——修改视图的方法; 掌握 —— 删除视图的方法。 视图的修改和删除 修改视图 视图被创建之后,由于某种原因(如基本表中的列发生改变或视图中增加或删除了若干列等),需要修改...

    MySQL数据库:数据视图概述.pptx

    理解 —— 理解视图的概念及存储; 了解 ——了解视图的优点。 视图概述 视图是从一个或者几个基本表或者视图中导出的虚拟表,是从现有基表中抽取若干子集组成用户的“专用表”,这种构造方式必须使用SQL中的SELECT...

    MySQL数据库:创建视图.pptx

    理解 —— 创建视图的语法格式; 掌握—— 创建视图的方法; 掌握 —— 查看视图的方法。 创建视图 使用CREATE VIEW语句创建视图 语法格式: CREATE [OR REPLACE] VIEW 视图名 [(列名列表)] AS select语句 [WITH ...

    (mysql面试题)MySQL中的视图的概念及其作用及代码展示.txt

    3. 隐藏数据的复杂性:视图可以将复杂的数据结构简化,隐藏底层数据的复杂性,使得用户更容易理解和使用数据。 4. 提高性能:视图可以在查询时直接使用基表的数据,而不需要再次执行SQL查询,从而提高查询性能。

    MySQL数据库查询优化

    初步理解MySQL的查询执行计划。 预计时间1小时 第3课 查询优化技术理论与MySQL实践(一)------子查询的优化(一) 第4课 查询优化技术理论与MySQL实践(二)------子查询的优化(二) 从理论看,子查询包括的内容...

    MySQL如何创建视图

    主要介绍了MySQL如何创建视图,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下

    oracle和mysql的区别

    对于我的理解,ORACLE项目来说一个项目就应该有一个用户和其对应的表空间,而MYSQL项目中也应该有个用户和一个库。在ORACLE(db2也一样)中表空间是文件系统中的物理容器的逻辑表示,视图、触发器和存储过程也可以保存...

    详细分析mysql视图的原理及使用方法

    主要介绍了mysql视图的相关资料,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下

    MySQL形考任务2

    实验目的:理解数据字典、表、索引、视图的作用,掌握数据字典的操纵方式,掌握库、表、索引、视图的操作方法。

    MySQL面试题进阶版附答案高难度深入挖掘MySQL的核心概念与技术探索ACID特性、事务隔离级别、索引优化、连接操作

    这些难度较高的MySQL面试题涵盖了数据库设计、事务处理、索引优化、视图、触发器和存储过程等方面的知识。熟悉并理解这些问题及其答案将有助于你在面试中展示出对MySQL的深入了解和实际应用能力。记得在准备面试时...

    高性能MySQL(第3版).part2

    6.8.1使用MySQL构建一个队列表251 6.8.2计算两点之间的距离254 6.8.3使用用户自定义函数257 6.9总结258 第7章MySQL高级特性259 7.1分区表259 7.1.1分区表的原理260 7.1.2分区表的类型261 7.1.3如何使用分区...

    MySQL 5.1中文手冊

    1.5.5. MaxDB和MySQL之间的特性差异 1.5.6. MaxDB和MySQL之间的协同性 1.5.7. 与MaxDB有关的链接 1.6. MySQL发展大事记 1.6.1. MySQL 5.1的新特性 1.7. MySQL信息源 1.7.1. MySQL邮件列表 1.7.2. IRC(在线聊天系统...

    【最新版】navicat150_mysql_en.dmg【亲测可用】最好的MySQL / MariaDB管理和开发工具

    使用复杂的数据库设计和建模工具将数据库转换为图形表示形式,以便您可以轻松地建模,创建和理解复杂的数据库。 我们的图表功能使您可以创建大型数据集的可视表示形式,并帮助您从数据中获得更深刻的见解。探索并...

    MySQL 5.1官方简体中文参考手册

    目录 前言 1. 一般信息 1.1. 关于本手册 ...1.5.5. MaxDB和MySQL之间的特性差异 1.5.6. MaxDB和MySQL之间的协同性 1.5.7. 与MaxDB有关的链接 1.6. MySQL发展大事记 1.6.1. MySQL 5.1的新特性 1.7. MySQL信息源 ...

    mysql5.1中文手册

    MaxDB和MySQL之间的特性差异 1.5.6. MaxDB和MySQL之间的协同性 1.5.7. 与MaxDB有关的链接 1.6. MySQL发展大事记 1.6.1. MySQL 5.1的新特性 1.7. MySQL信息源 1.7.1. MySQL邮件列表 1.7.2. IRC...

    十一、MySQL视图学习笔记(详解)

    含义:理解成一张虚拟的表,和普通表一样使用 mysql5.1版本出现的新特性,是通过表动态生成的数据 比如:舞蹈班和普通班级的对比 视图和表的区别: 名称 创建语法的关键字 使用 占用物理空间 视图 create ...

    MySQL 5.1参考手册

    1.5.5. MaxDB和MySQL之间的特性差异 1.5.6. MaxDB和MySQL之间的协同性 1.5.7. 与MaxDB有关的链接 1.6. MySQL发展大事记 1.6.1. MySQL 5.1的新特性 1.7. MySQL信息源 1.7.1. MySQL邮件列表 1.7.2. IRC(在线聊天系统...

    国家开放大学 数据库运维 形考2 MySQL数据库对象管理

    国家开放大学 数据库运维 形考2 MySQL数据库对象管理

Global site tag (gtag.js) - Google Analytics