
中指数据库
防疫报告-安神定志丸方歌
2023年3月19日发(作者:风景名胜英语)数据库视图基础概念
数据库中视图的概念:
视图是从⼀个表或是多个表导出的表,视图与表不同,视图是⼀个虚表,即视图所对应的数据不进⾏实际存储,数据库中指存储视图的定
义,在对视图的数据进⾏操作时,系统根据视图的定义去操作与视图相关联的基本表。
视图是虚表,是从⼀个或是⼏个基本表导出的表。可以将视图看做是移动的窗⼝,通过它可以看到⾃⼰感兴趣的数据,视图是从⼀个或是多
个表中获得的,这些表的数据存放在数据库中,那些⽤户产⽣视图的表叫做视图的基表,当然也可以从另⼀个视图中产⽣视图。
视图看上⾮常像是数据库的物理表,对它的操作同任何其他的表⼀样。当通过视图修改数据时候,实际上是改变基表中的数据,相反的,基
表数据的改变也会⾃动反应在由基表产⽣的视图中。
视图中的数据会随着原表的变化⾃动更新,因为视图归根结底就是SELECT语句,每次查看视图其实就是执⾏SELECT语句,因此可以保证
数据的最新状态。
举例理解视图:
数据库虽然可以存储海量数据,但是在数据表设计上却不可能每种关系创建数据表,例如,对于学⽣表,存储了学⽣信息,学⽣的属性包括
学号、姓名、年龄、家庭地址等信息;⽽学⽣成绩表只存储了学⽣学号、科⽬、成绩等信息。现获得学⽣姓名和成绩信息,那么就需要创建
⼀个关系,该关系需要包含学⽣的姓名、科⽬、成绩。但是为了该关系创建⼀个新的数据表,并利⽤实际信息进⾏填充,以备查询使⽤,是
不合适的,这样会造成了数据库中数据的⼤量冗余。
视图就是解决这个问题的最佳策略,因此视图可以存储查询定义,⼀旦使⽤视图存储了查询定义,就如同存储了⼀个新的关系,⽤户就可以
直接对视图中所存储的关系进⾏各种操作,就如同⾯对的是真实的数据表。
使⽤视图的好处:
好处1:减少数据的冗余,⽅便对数据操作(如上⾯的例⼦)
好处2:数据的安全和保密(如下⾯的例⼦)
⼀个数据表可能包含很多列,但是这些列的信息,对于不同的⾓⾊来说,肯定不是全部公开的,对于员⼯表来说吧,⼀个普通的员⼯只能看
见这个员⼯表中的姓名和年龄这些信息,但是对于⾼层来说,他们要看见员⼯表中更多信息,不仅仅是上⾯的两列还有其他的信息,包括员
⼯的住址和员⼯的薪资待遇,这个时候都是同⼀张表,怎么办?视图可以解决呀,⾸先建⽴⼀个视图只有员⼯的姓名和年龄,再建⼀个视图
包含地址和薪资待遇的信息。这样就可以根据不同的⾓⾊分配两个视图的查询权限,与实际表隔离开来。这样就可以提⾼数据访问的安全性
了。
下⾯就是创建视图的sql的语句:
createview视图的名字
as
select*from表名;--写需要⽤到的SQL查询语句
⼦查询:
相当于⼀次性视图,在SELECT语句执⾏完后就会消失。
--在FROM⼦句中直接书写定义视图的SELECT语句:
如上所⽰,我们把⽤来定义视图的SELECT语句直接⽤于FROM⼦句当中。上图中的SELECT语句事实上包含了嵌套的结构,⾸先执⾏
FROM中的SELECT语句,然后才执⾏外层的SELECT语句。
虽然⼦查询⽀持多层嵌套,但是可读性不好,应该避免使⽤多层嵌套的⼦查询。