视图
视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据。从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表。从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表一样。视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。
视图是存储在数据库中的查询的SQL 语句,它主要出于两种原因:安全原因, 视图可以隐藏一些数据,如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,另一原因是可使复杂的查询易于理解和使用。
视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。
语法
Create view 视图名 as
Select 查询
实例
1.从单表中创建视图
CREATE VIEW employee_view AS
SELECT eid,ename,esex,eage FROM employee
一个基表可以创建多个视图
我们对视图进行删除、更新、修改会影响基本表。
对基本表做CRUD 也会影响视图
2.从两张表中创建视图
CREATE VIEW employee_dept AS
SELECT e.eid,e.ename,d.dname FROM employee e LEFT JOIN dept d ON e.eid = d.deptno
3.创建两个视图,从两个视图中查询数据
CREATE VIEW emp_a AS
SELECT eid,ename,esex,eage,telephone,pnum,dfk FROM employee
SELECT * FROM emp_a
CREATE VIEW dept_a AS
SELECT deptno,dname FROM dept
SELECT * FROM dept_a
SELECT ea.*,da.* FROM emp_a ea ,dept_a da WHERE ea.dfk=da.deptno
删除视图
drop view 视图名