1、视图和表的区别?
-
视图是虚拟的表,视图展示的数据来自于 基本表。
-
视图中不存储具体的数据,而存储的是sql逻辑,基本表的数据发生改变,视图的展示结果也会随着发生改变,它占用少量的物理空间;而表中保存的是数据,占用大的物理空间;
-
对视图的操作跟普通表是一样的,如:创建视图,删除视图。。视图的建立create和删除drop只影响视图本身,不影响对应的基本表。
-
若视图中的字段数据是来自于基表的话,一般是可以对视图中的数据 进行更新的,对视图数据进行添加、删除和修改操作会直接影响基本表。其他情况不允许更新,如:若视图中的字段使用了函数avg(age)等,就不能进行更新;
-
视图的使用:一般都是把基表的子查询sql语句 封装成视图,方便使用,而且更高效。
-
隐藏一些不想展示给用户的数据。只展示必要的数据。如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等。
2.两者的联系
视图是基于基本表上建立的表,它的结构和内容都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。
3.视图的两种查询机制——创建视图时进行指定使用哪种视图查询机制
-
1、替代式merge
:当使用视图进行查询时,实际上是把查询视图的sql语句 转换成一个 带有子查询的sql语句,然后再进行查询。(即:一步到位:更加高效,,不像具化式,还得在内存中再搞一个临时表)
-
此种机制下,你对视图更新,同时会更新基本表的数据。
-
2、**具化式:**是先把视图查出来,作为一个临时的表放到内存中,然后 再对临时表进行一个查询。(即:分两个步骤)
-
此种机制下,对视图更新只是对内存中的临时表进行的更新,基本表不会更新。(不能对视图进行更新)
4、创建视图时的选项:
-
若创建视图时,指定了with check option的选项,那么在更新视图时,就会检测你的更新操作是否满足视图的条件。不满足,就不让你进行一个更新。
-
如这个视图都是 salary > 2000的,那么你就不能往视图中插入一个salary为1000的记录。
5、哪些视图是可更新的,哪些是不可更新的?
主要 构建视图的语句中 出现如下的东西,此视图都不可以更改。
演示:此种情况下,视图中的数据不是来自于一个基表中,因此不能更新视图数据。
区别?视图是虚拟的表,包含的是sql逻辑,占用少量的物理空间。而表中保存的是数据,占用大的物理空间;当使用视图时,才会根据视图存储的sql逻辑动态生成一个虚拟表;对视图的操作跟普通表是一样的(增删改查);视图的建立create和删除drop只影响视图本身,不影响对应的基本表。应用:隐藏一些不想展示给用户的数据。只展示必要的数据。如:社会保险基金表,可以用视图只显示姓名,地址,而不显示...
视图
是从一个或几个基本
表
(或
视图
)中导出的虚拟的
表
。在系统的数据字典中仅存放了
视图
的定义,不存放
视图
对应的数据。
视图
是原始数据库数据的一种变换,是查看
表
中数据的另外一种方式。可以将
视图
看成是一个移动的窗口,通过它可以看到感兴趣的数据。
视图
是从一个或多个实际
表
中获得的,这些
表
的数据存放在数据库中。那些用于产生
视图
的
表
叫做该
视图
的基
表
。一个
视图
也可以从另一个
视图
中产生。
视图
的定义存在数据库中,与...
视图
(view) 与
表
数据库中的
表
是真实存取数据的,
表
里边的数据,可以
注意:col 是列的意思,val 是值的意思;col = colomn, val = value;
增(add)删(delete)改(update) 查(query,fetch,retrieve)
1.增(add)
INSERT INTO table_name(col1,col2,…) values(val1,val2,…);
INSERT INTO t1(id,name) values(1,‘test’);
2.删(de
一般来说
视图
是为了满足某种查询而建立的一个对象。
视图
适合于多
表
连接浏览时使用,不适合增、删、改,存储过程适合于使用较频繁的SQL语句,这样可以提高执行效率!一个
视图
可以对应一个基本
表
,也可以对应多个基本
表
(多
表
字段名称不能有重复)。
1、
表
是内容,
视图
是窗口
2、
视图
没有实际的物理记录。而
表
有。
3、
视图
是已经编译好的sql...
1.
视图
表
内容列,可以由多个基本
表
中的列来填充
2.
视图
表
的列删除,整
表
删除,不影响基本
表
3.(
视图
表
仅由一个基本
表
来填充时)修改
视图
表
中的数据,会影响基本
表
内的数据
4.当
视图
表
来自多个基本
表
的数据,不能修改删除里面的数据
创建一个
视图
表
create view view_name1#创建
视图
as select 语句#定义
视图
的字段规则
[with [cascaded][local] check option]#这一行是可选项,对
视图
更新时,会检查
视图
的规则
视图
:
视图
是虚拟
表
,它可以包含来自多个
表
的数据;
两者
区别
:1)
视图
是已经编译好的SQL语句,而基本
表
不是;2)
视图
没有实际的物理记录,而基本
表
有;3)基本
表
是内容,
视图
是窗口;4)基本
表
只用物理空间而
视图
不占用物理空间;5)基本
表
是内模式,试图是外模式;6)基本
表
属于全局模式中的
表
,是实
表
,
视图
属于局部模式的
表
,是虚
表
;7)
视图
的建立和删除只影响
视图
本身,不影响对应的基本
表
;
视图
是数据库中虚拟的
表
,并不真实存储数据,只存储数据的定义。
两者的
区别
和联系是什么?
区别
:存储方式不同(基本
表
,真实存储数据;
视图
,不存储真实数据,存储数据的定义),存在形式不同(基本
表
,真实存在于数据库中;
视图
,并不真实存在于数据库中,是一张虚拟的
表
)
联系:
视图
是由一个或者多个基本
表
导出的
基本
表
:基本
表
是本身独立存在的
表
,在SQL中一个关系就对应一个
表
。
视图
:
视图
是从一个或几个基本
表
导出的
表
。
视图
本身不存在独立存储在数据库中,是一个虚
表
。即数据库中只存放
视图
的定义而不存放
视图
对应的数据,这些数据仍然存放在导出
视图
的基本
表
中。
视图
的优点:
视图
能够简化用户的操作,
视图
使得用户能够以多种角度看待同一数据,
视图
对重构数据库提供一定的逻辑独立性,
视图
能够对机密数据提供安全保护,适当的...
2、
视图
没有实际的物理记录,而
表
有;
3、
表
是内容,
视图
是窗口;
4、
表
占用物理空间而
视图
不占用物理空间,
视图
只是逻辑概念的存在,
表
可以及时对它进行修改,但
视图
只能用创建的语句来修改;
5、
表
是三级模式结构中的概念模式,试图是外模式;
6、
视图
是查看数据
表
的一种方法,可以查询数据
表
中某些字段构成的数据,只是一些SQL语句的集合,从安全的角度说,
视图
可以不给用户接触数据
表
,从而不知道
表
结构;
7、
表
属于全局模式中的
表
,是实
表
,
视图
属于局部模式的
表
,是虚
表
;
所有的Mysql列类型都可以被索引。
mysql支持BTREE索引、HASH索引、前缀索引、全文本索引(FULLTEXT)【只有MyISAM引擎支持,且仅限于char,varchar,text列】、空间列索引【只有MyISAM引擎支持,且索引的字段必须非空】,但不支持函数索引。
MyISAM和InnoDB存储引擎的
表
默认创建BTREE索引,
MEMORY存储引擎的
表
默认创建HASH索引。
二、创建索引
create index语法为
视图
概述
视图
是从一个或几个基本
表
(或
视图
)导出的
表
。它与基本
表
不同,是一个虚
表
。数据库中只存放
视图
的定义,而不存放
视图
对应的数据,这些数据仍存放在原来的基本
表
中。
所以一旦基本
表
中的数据发生变化,从
视图
中查询出的数据也就随之改变了。从这个意义上讲,
视图
就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。
视图
一经定义,就可以和基本
表
一样被查询、删除。也可以在一个
视图
之上再定义新的
视图
,但对
视图
的更新(增、删、改)操作则有一定的限制。
视图
只存定义,每次查看
视图
就相当于执行一次语句。
视图
的特点
表
与
视图
很相似,都是可以包含相同类型的数据的二维结构,都有行,列,单元格,在select语句的from字句中,都可以将他们用作数据源。
当需要区分
表
和
视图
的时候,通常
表
被称为基
表
或者数据
表
。
不同之处:
1:
表
直接将数据存储在磁盘上,
视图
是将sql语句存储到磁盘上
2:
视图
是建立在
表
的基础上,
表
存储数据库中的数据,而
视图
显示已经在
表
中的