Mysql视图

视图

  • 本质是对应于一条select语句,select的查询结果赋予一个名字,即视图名

  • 视图本身并不包含任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化,视图数据也随之变化

    基表就是select语句from后的表名

  • 视图就像一个函数一样,当某些信息需要经常查询时(如学生成绩,居民用电量),创建一个视图来避免重复写sql

创建视图

create view view_name as

select column_name(s)

from table_name

where condition
示例
  • 这里有两张表:学生表专业表
    
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LJPoSwZo-1651558160879)(2022-05-03-09-47-14.png)]

  • 创建一个视图,查询每个学生的姓名及专业

    -- (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;
    

  • 如果想创建一个已经存在的视图,有两种办法:

    1. 先删除该视图,后创建
    -- 删除视图
    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;
    
    1. 使用 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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值