赞
踩
专栏内容:
数据库视图是一个虚拟的表,它基于一个或多个实际表的查询结果。视图并不实际存储数据,而是通过查询语句动态地生成数据。视图的内容由查询定义,包含一系列带有名称的列和行数据。从用户角度来看,视图是从一个特定的角度来查看数据库中的数据。从数据库系统内部来看,视图是由SELECT语句组成的查询定义的虚拟表。
本文主要介绍视图的创建与删除,而视图的查询与普通表是一样的,当然一般不能修改视图的数据。
视图是一张虚拟的表,在创建视图之前先有实际的数据表。那么在开始之前我们先创建一张数据表,并且插入一些数据。
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
视图是基于上一个视图的数据再进行过滤,存在级联关系。
视图的查询方法与普通表没有区别。
当登陆通讯录系统时,角色就已经确定,系统就会根据角色的不同,调用不同的视图,下面看看两个视图的差异吧。
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)
不用的视图可以使用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
如有错误或者疏漏欢迎指出,互相学习。
注:未经同意,不得转载!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。