mysql视图的作用(详细)

测试表:user有id,name,age,sex字段

测试表:goods有id,name,price字段

测试表:ug有id,userid,goodsid字段

视图的作用实在是太强大了,以下是我体验过的好处:

作用一:

提高了重用性,就像一个函数。如果要频繁获取user的name和goods的name。就应该使用以下sql语言。示例:

select a.name as username, b.name as goodsname from user as a, goods as b, ug as c where a.id=c.userid and c.goodsid=b.id;

但有了视图就不一样了,创建视图other。示例

create view other as select a.name as username, b.name as goodsname from user as a, goods as b, ug as c where a.id=c.userid and c.goodsid=b.id;

创建好视图后,就可以这样获取user的name和goods的name。示例:

select * from other;

以上sql语句,就能获取user的name和goods的name了。

作用二:

对数据库重构,却不影响程序的运行。假如因为某种需求,需要将user拆房表usera和表userb,该两张表的结构如下:

测试表:usera有id,name,age字段

测试表:userb有id,name,sex字段

这时如果php端使用sql语句:select * from user;那就会提示该表不存在,这时该如何解决呢。解决方案:创建视图。以下sql语句创建视图:

create view user as select a.name,a.age,b.sex from usera as a, userb as b where a.name=b.name;

以上假设name都是唯一的。此时php端使用sql语句:select * from user;就不会报错什么的。这就实现了更改数据库结构,不更改脚本程序的功能了。

作用三:

提高了安全性能。可以对不同的用户,设定不同的视图。例如:某用户只能获取user表的name和age数据,不能获取sex数据。则可以这样创建视图。示例如下:

create view other as select a.name, a.age from user as a;

这样的话,使用sql语句:select * from other; 最多就只能获取name和age的数据,其他的数据就获取不了了。

作用四:

让数据更加清晰。想要什么样的数据,就创建什么样的视图。经过以上三条作用的解析,这条作用应该很容易理解了吧

mysql 视图怎么调用方法_mysql 视图的使用相关推荐

  1. mysql 视图调用存储过程_MySQL视图、存储过程

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 什么是视图(视图) 虚拟表 内容类似于真实表,有字段和记录 该视图不以数据库中存储的数据的形式存在 行和列的数据来自 ...

  2. MVC视图之间调用方法总结

    调用视图方式有两种: 一:直接调用(不通过controller) <body> @Html.Partial("../Shared/Error"); </body& ...

  3. mysql视图有空间吗_MySQL视图

    视图是从一个表或多个表导出来的表,是一种虚拟表,不占内存空间,视图中保存的仅仅是一条select语句,其数据源来自数据库表或其他视图.当基本表发生变化时,视图的数据也会随之变化.视图是存储在数据库中的 ...

  4. mysql视图怎么加字段_mysql视图添加字段

    mysql视图里面怎么新增一个全新字段,在原来表内没首先,要清楚视图的概念: 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数 ...

  5. mysql函数如何调用过程_MySQL调用存储过程和函数

    存储过程和存储函数都是存储在服务器端的 sql 语句集合.要想使用这些已经定义好的存储过程和存储函数就必须要通过调用的方式来实现. 存储过程通过 CALL 语句来调用,存储函数的使用方法与 MysqL ...

  6. apmserv mysql_APMServ MySQL 1577错误解决方法_MySQL

    bitsCN.com APMServ MySQL 1577错误解决方法 Navicat导出任何一个数据库,都会提示:1577 – Cannot proceed because system table ...

  7. mysql新建data的方法_mysql建立数据库的方法

    mysql建立数据库的方法 方法一:使用create mysql> create database roudy; Query OK, 1 row affected (0.00 sec) mysq ...

  8. mysql还原数据的方法_MySQL 数据还原

    1.1还原使用mysqldump命令备份的数据库的语法如下: mysql -u root -p [dbname] < backup.sq 示例: mysql -u root -p < C: ...

  9. mysql 视图 查询速度慢_mysql 视图查询速度慢

    场景: 表 stockpooldata_flash CREATE TABLE `stockpooldata_flash` ( `id` bigint(15) NOT NULL AUTO_INCREME ...

最新文章

  1. Go 分布式学习利器(12)-- Go语言的扩展和复用
  2. Martix工作室考核题 —— 2019-3-8 第三题
  3. linux时钟与电源管理,SOC的时钟和电源管理
  4. PyCharm点击设置没反应,无法进行设置
  5. 牛客寒假算法基础集训营5 炫酷数字 (暴力)
  6. php jquery ajax实例,jQuery的$.ajax示例
  7. Create umbraco website-On the road of umbraco (1)
  8. python uwsgi_Python uWSGI 安装配置
  9. UI设计师——你是什么设计师?
  10. 怎么让联想计算机升级,如何刷bios,教您联想电脑如何刷bios
  11. 汪文君高并发编程总结-第一阶段
  12. oppoa5降级教程_OPPO A5官方原版固件rom系统刷机包升级包下载A.12版
  13. 代码优化和内存屏障(barrier、mb、rmb、wmb)
  14. Invalid use of SingleClientConnManager: connection still allocated解决方案
  15. 保龄球积分c语言程序,C语言保龄球积分.doc
  16. 卸载360企业版密码
  17. OpenGL学习笔记——坐标转换
  18. 如何给一小段视频添加音乐
  19. 【前端春招】前端春招实习+秋招心路历程
  20. AAB 扶正!APK 将退出历史舞台

热门文章

  1. 大剑无锋之如何评判一个算法的优劣【面试推荐】
  2. springboot _配置过滤器、拦截器、使用原生servlet
  3. javaSE各阶段练习题--面向对象-StringBuilder-继承-包和访问权限
  4. leetcode 332. Reconstruct Itinerary | 332. 重新安排行程(Java)
  5. 左神算法:判断二叉树是否为平衡二叉树(树形dp套路,Java版)
  6. 左神算法:二叉树的最大 / 最小深度(普通+Morris遍历进阶)(Java版)
  7. C++ 避免内存泄漏
  8. AI数学基础之:确定图灵机和非确定图灵机
  9. 深入理解HashMap和TreeMap的区别
  10. CentOS 6 安装Hadoop 2.6 (四)运行简单例子