视图基础操作
专栏内容:
- postgresql使用入门基础
- 手写数据库toadb
- 并发编程
个人主页:我的主页
管理社区:开源数据库
座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物.
文章目录
- 视图基础操作
- 概述
- View 创建
-
- 准备数据
- 创建视图
- View 查询
- View 删除
- 总结
-
- 作用
- 重要性
- 结尾
概述
数据库视图是一个虚拟的表,它基于一个或多个实际表的查询结果。视图并不实际存储数据,而是通过查询语句动态地生成数据。视图的内容由查询定义,包含一系列带有名称的列和行数据。从用户角度来看,视图是从一个特定的角度来查看数据库中的数据。从数据库系统内部来看,视图是由SELECT语句组成的查询定义的虚拟表。
本文主要介绍视图的创建与删除,而视图的查询与普通表是一样的,当然一般不能修改视图的数据。
View 创建
准备数据
视图是一张虚拟的表,在创建视图之前先有实际的数据表。那么在开始之前我们先创建一张数据表,并且插入一些数据。
CREATE TABLE employee (
eid int primary key,
ename VARCHAR(50) NOT NULL,
birth_date DATE,
position VARCHAR(100),
department VARCHAR(100) ,
email VARCHAR(100) ,
phone_number VARCHAR(20),
hire_date date ,
address varchar,
emergency_contact VARCHAR(100)
);
-- 插入数据
insert into employee values(1,'lihua','2010-10-1','jiangsu','sales department','abc','123','2015-4-22','jiangsu','34'),(2,'zhanglei','2000-10-1','jiangsu','software department','df','444','2015-1-22','jiangsu','65645');
创建了一张员工信息表,这在公司中很常见,要找某个员工的信息,可以查看公司员工通讯录就可以了。
所有员工都可以看到通讯录的全部信息吗? 答案是否定的,知道真相后很扎心吧!
这是怎么实现的呢?其中一种方法就是通过视图来实现。
创建视图
下面创建两个视图,一是管理员角色可以看到的数据;一是普通员工看到的数据的视图;
创建视图的语法如下:
CREATE VIEW vw_name
AS
query_sql;
其中vw_name
是用户定义的视图名称,query_sql
是定义视图数据的查询语句。
那么管理员的视图创建如下:
postgres=# create view vw_admin as SELECT * from employee ;
CREATE VIEW
普通员工的视图创建如下:
create view vw_common as SELECT eid,ename,department from vw_admin ;
CREATE VIEW
这里的vw_common
视图是基于上一个视图的数据再进行过滤,存在级联关系。
View 查询
视图的查询方法与普通表没有区别。
当登陆通讯录系统时,角色就已经确定,系统就会根据角色的不同,调用不同的视图,下面看看两个视图的差异吧。
postgres=# select * from vw_admin ;
eid | ename | birth_date | position | department | email | phone_number | hire_date | address | emergency_contact
-----+----------+------------+----------+---------------------+-------+--------------+------------+---------+-------------------
1 | lihua | 2010-10-01 | jiangsu | sales department | abc | 123 | 2015-04-22 | jiangsu | 34
2 | zhanglei | 2000-10-01 | jiangsu | software department | df | 444 | 2015-01-22 | jiangsu | 65645
(2 rows)
postgres=# select * from vw_common ;
eid | ename | department
-----+----------+---------------------
1 | lihua | sales department
2 | zhanglei | software department
(2 rows)
View 删除
不用的视图可以使用drop view
命令进行删除,当有依赖时也可以追加cascade
进行级联删除。
postgres=# drop view vw_admin cascade;
NOTICE: drop cascades to view vw_common
DROP VIEW
当我们级联删除vw_admin
视图时,与它关联的视图vw_common
也被删除了。
总结
视图应用非常广泛,它有下面分享一下它的作用和重要性。
作用
- 简化数据访问:视图可以将多个表的数据组合在一起,使得用户可以通过一个视图来访问多个表的数据,从而简化了数据访问的过程。这有助于用户更容易地理解和操作数据。
- 数据安全性:视图可以限制用户对底层表的访问权限,只允许用户访问视图中的数据。通过视图,可以限制用户访问数据的权限,只允许用户访问特定字段或满足特定条件的记录,从而防止用户访问敏感数据或意外修改数据,提高了数据的安全性。
- 数据逻辑独立性:视图可以隐藏底层表的结构,使得用户只需要关注视图的结构,而不需要关注底层表的结构。这有助于用户更容易地理解和使用数据,同时也提高了数据的逻辑独立性。当底层表的结构发生变化时,只要视图定义没有改变,用户访问数据的方式就不会受到影响。
- 数据一致性:视图通过将多个表的数据组合在一起,有助于保证数据的一致性,避免了数据冗余和不一致的问题。
- 性能优化:视图可以对底层表进行优化,例如对表进行聚合、过滤、排序等操作,从而提高了查询的性能。
重要性
数据库视图在数据库设计和应用中具有重要性,主要体现在以下几个方面:
- 灵活性:视图可以根据不同的需求和场景进行定义,提供了灵活的数据访问方式。
- 安全性保障:通过视图,可以实现对数据的访问控制,保护敏感数据不被非法访问或修改。
- 简化复杂操作:视图可以封装复杂的查询逻辑,使得用户可以更简单地访问和操作数据。
- 数据抽象:视图提供了一种抽象的数据表示方式,使得用户可以更专注于业务逻辑的实现,而不需要过多关注底层数据的细节。
结尾
非常感谢大家的支持,在浏览的同时别忘了留下您宝贵的评论,如果觉得值得鼓励,请点赞,收藏,我会更加努力!
作者邮箱:study@senllang.onaliyun.com
如有错误或者疏漏欢迎指出,互相学习。
注:未经同意,不得转载!