MySQL视图的创建和使用

本文介绍了一种使用视图来简化复杂SQL查询的方法。通过创建包含多个表连接及条件筛选的视图,可以大大减少每次执行相同查询所需编写的代码量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


通过视图实现链接查询

 select  字段名  from
          (select * from 创建的视图名称) cs
                     left join
         (select * from  创建的视图名称 ) h
         on cs.appkey=h.appkey left join
         (select * from创建的视图名称) g
           on cs.appkey=g.appkey where  查询条件


在上面的基础上,把上边的查询过程也创建成一个视图:

CREATE   
VIEW 视图名称 AS  
SELECT  
//下面的是所查询的字段名称
cs.appkey AS appkey,
cs.desc1 AS desc1,
ifnull(cs1.counts,0) AS counts,  
ifnull(c.lastmonth,0) AS lastmonth,
ifnull(y.yesterday,0) AS yesterday,
ifnull(z.todaybefor,0) AS todaybefor,
ifnull(g.cumulativenumber,0) AS cumulativenumber,
ifnull(c.lastmonthnum,0) AS lastmonthnum,
ifnull(y.yesterdaynum,0) AS yesterdaynum,
ifnull(z.todaybefornum,0) AS todaybefornum   
FROM

//将视图进行左连接 

view_desc1 AS cs  
LEFT JOIN view_counts AS cs1 ON cs.appkey=cs1.appkey   
LEFT JOIN view_lastmonth_lastmonthnum AS c ON  cs.appkey=c.appkey  
LEFT JOIN view_yesterday_yesterdaynum AS y ON  cs.appkey=y.appkey
LEFT JOIN view_todaybefor_todaybefornum AS z ON cs.appkey=z.appkey
LEFT JOIN view_cumulativenumber AS g ON cs.appkey=g.appkey

//整个查询的判断条件

where  cs.appkey='245accec3c124642967fe476cef558c4'  

这样我们就可以通过select * from 视图名  这条sql语句代替复杂的sql语句

一、建立以下五个表: 教师表:Teacher,学生表:Student, 课程表:Course,选课表:SC,授课表:TC 二、完成以下查询: 1.查询成绩在80-90之间的记录。 2.查询至少4个同学选修的课程名。 3.查询其他系中比“信息系”所有学生年龄都大的学生名单及年龄,并按年龄降序输出: 4.查询与学生张建国同岁的所有学生的学号。姓名系别。 5.查询选修了2门以上课程的学生名单。 6.查询至少有一门与“张建国”选课相同的学生的姓名,课程号,系别 7.查询成绩比该课程平均成绩高的学生的成绩表。 8.查询选课号为01001课程且成绩高于课程01002学生的姓名,此两门课的课程名成绩。 9.查询所有没选修01001号课程的学生名单 10、查询每个同学各门课程的平均成绩最高成绩,按降序输出姓名、平均成绩、最高成绩; 11、查询所有学生都选修了的课程号课程名; 12、查询选修了991102号学生选修了的课程的学生学号姓名。 三、使用SQL创建视图,修改记录 1.创建成绩视图SCORE_VIEW,包含学号sno,姓名sn,课程名cn,成绩score; 2.创建一个计算机系学生名单视图S_VIEW,包含学号sno,姓名sn,性别sex; 3.通过上面的视图,修改学号为991102,课程号01001的成绩记录; 4,创建一个视图,计算机系学生的成绩单score_view_CDEPT,包含学号sno,姓名sn,课程名cn,成绩score
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值