首页 > 其他分享 >表和视图的区别

表和视图的区别

时间:2023-04-27 13:58:11浏览次数:33  
标签:语句 区别 视图 数据表 role user id

表和视图的区别

区别:

  1、视图是已经编译好的sql语句。而表不是   
  2、视图没有实际的物理记录。而表有。
  3、表是内容,视图是窗口
  4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能由创建的语句来修改
  5、表是内模式,试图是外模式
  6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
  7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。 
  8、视图的建立和删除只影响视图本身,不影响对应的基本表。
  9、不能对视图进行update或者insert into操作。

联系:

视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。

那要视图有什么用?

1、当一个查询你需要频频的作为子查询使用时,视图可以简化代码,直接调用而不是每次都去重复写这个东西,有点高级语言中的封装的意思吧。
2、其实视图还有很多其他的用处,比如说你是一个系统的数据库管理员,你需要给他人提供一张表的某两列数据,而不希望他可以看到其他任何数据,这样你就可以给他建一个只有这两列数据的视图,然后把视图公布给他。

常用视图的场合应该就上述两处了,至少我经常在这两种情况下使用视图,其他地方用视图的还真不多。

创建视图:

基本语法
可以使用 CREATE VIEW 语句来创建视图。

语法格式如下:

CREATE VIEW <视图名> AS <SELECT语句>

语法说明如下。

  • <视图名>:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。
  • <SELECT语句>:指定创建视图的 SELECT 语句,可用于查询多个基础表或源视图。
    例如:
CREATE VIEW view_03 (id,用户名,角色名) AS select b.user_id,b.user_name,r.role_name from test_user b join test_user_role t on t.user_id = b.user_id join test_role r on r.role_id = t.role_id;

特别说明:

每次SELECT 视图 的时候,视图都会重新计算创建它的规则(sql算法),如果算法复杂,数据量大,就会比较慢,那样每次就很慢了。
而且,表的索引对于视图view来说是无效的,它是全表扫描的。

标签:语句,区别,视图,数据表,role,user,id
From: https://www.cnblogs.com/hwjShl/p/16735977.html

相关文章

  • 微信网页静默授权(snsapi_base与snsapi_userinfo区别)
    1、区别:有无授权完整服务弹框2、业务:有的网页只需要用户openid进行绑定,所以不需要弹框授权完整服务,用户会觉得整体体验不好。3、snsapi_base:scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。注:静默的另一种:对于已关注公众号的用户,......
  • MFC-Create动态创建列表视图控件
     BOOLbb=mylist.Create(LVS_SMALLICON|WS_DLGFRAME,rect,this,10001);//动态创建列表视图控件/*参数1:DWORDdwStyle列表视图控件的风格标准样式:LVS_ALIGNLEFT显示格式是大图标或小图标时,标签......
  • vue2与vue3的区别
    一.vue2和vue3双向数据绑定原理发生了改变vue2的双向数据绑定是利用ES5的一个APIObject.definePropert()对数据进行劫持结合发布订阅模式的方式来实现的。vue3中使用了es6的ProxyAPI对数据代理。相比于vue2.x,使用proxy的优势如下defineProperty只能监听某个属性,不......
  • [转]typeScript interface和type区别
    原文地址:https://www.jianshu.com/p/555e6998af36以下为截取的总结,详细请点击查看原文:总结interface和type很像,很多场景,两者都能使用。但也有细微的差别:不同点:扩展语法:interface使用extends,type使用‘&’同名合并:interface支持,type不支持。描述类型:对象、函数......
  • 强引用、软引用、弱引用、幻象引用有什么区别?具体使用场景是什么?
    典型回答不同的引用类型,主要体现的是对象不同的可达性(reachable)状态和对垃圾收集的影响。所谓强引用(“Strong”Reference),就是我们最常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还“活着”,垃圾收集器不会碰这种对象。对于一个普通的对象,如果没有其他的引用关系,只......
  • Navicat和Dbeaver有什么区别
    Navicat和Dbeaver都是一些广受欢迎的数据库管理工具。这两个工具都有其优点和缺点,因此许多开发人员和数据库管理员往往会在这两者之间犹豫不决。本文将深入探讨Navicat和Dbeaver之间的区别,以帮助您决定哪个工具最适合您的需求。 Navicat安装教程,安装包,脚本​ Navicat和Db......
  • StringBuilder、StringBuffer和String的区别
    在Java开发中,字符串(String)是一种非常基础和重要的数据类型,同时也是使用最广泛的数据类型之一。然而,在字符串处理和操作过程中,我们往往需要经常创建、添加、删除和修改字符串对象,这些操作会产生一些性能上的问题,影响程序的运行效率。针对这些问题,Java提供了两种可变字符串类:String......
  • java之用volatile和不用volatile的区别
    在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。 要解决这个问题,只需要像在本程序中的这样,把该变量......
  • unittest&pytest区别对比
    导包:unittest:python自带,直接importunittest导包即可pytest:需要pip安装后import导入类名命名方式:unittest:随意,但是必须继承于unittest.TestCasepytest:需要以Test开头,不需要继承内置方法:unittest:setUpClass、tearDownClass方法前需要有@classmethod解释器,setUp、tearDown用法与......
  • pip install和conda install的区别
    前言condainstall和pipinstall一般被认为是几乎相同的,但这两个工具虽然功能存在部分重叠,但其设计的目的是不同的。一.使用区别支持语言:pip是python官方推荐的包下载工具,但是只能安装python包conda是一个跨平台(支持linux,mac,win)的通用包和环境管理器,它除了支持pyt......