视图
-
本质是对应于一条
select
语句,select的查询结果
赋予一个名字,即视图名 -
视图本身并不包含任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化,视图数据也随之变化
基表就是
select语句
中from
后的表名 -
视图就像一个函数一样,当某些信息需要经常查询时(如学生成绩,居民用电量),创建一个视图来避免重复写
sql
创建视图
create view view_name as
select column_name(s)
from table_name
where condition
示例
-
这里有两张表:
学生表
、专业表
-
创建一个视图,查询每个学生的姓名及专业
-- (sname,pname) 指定了视图中的字段名 -- 如果没有指定,则使用 select 语句返回结果中的字段名 (s_name, p_name) create view stu_profession (sname,pname) as select s.s_name, p.p_name from t_student s,t_profession p where s.professional_code=p.professional_code;
-
查询视图
select * from stu_profession;
-
如果没有指定视图的字段名,就会按照select结果集的字段名
create view stu_profession as select s.s_name, p.p_name from t_student s,t_profession p where s.professional_code=p.professional_code;
-
如果想创建一个已经存在的视图,有两种办法:
- 先删除该视图,后创建
-- 删除视图 drop view stu_profession; -- 创建视图 create view stu_profession as select s.s_name, p.p_name from t_student s,t_profession p where s.professional_code=p.professional_code;
- 使用
or repalce
,这表明如果要创建的视图存在就替换
-- 创建新的视图 或 替换已存在的视图 create or replace view stu_profession as select s.s_name, p.p_name from t_student s,t_profession p where s.professional_code=p.professional_code;
删除视图
drop view view_name
示例
-- 删除视图
drop view stu_profession;
修改视图
alter view view_name as
select column_names
from table_name
where condition
示例
对于视图stu_profession
我们希望查询到的是学生名
和课程编码
alter view stu_profession as
select s.s_name, p.professional_code
from t_student s, t_profession p
where s.professional_code=p.professional_code;