首页 > 数据库 >数据库原理与应用-----视图

数据库原理与应用-----视图

时间:2024-12-03 22:28:45浏览次数:12  
标签:studentid sub 数据库 视图 ----- subjectid sc select

1.1定义

视图是从一个或多个表中导出的虚拟表

1.2创建试图的目的

  • 简单:隐藏数据的复杂性

  • 安全:可以对试图进行授权

  • 数据独立:可以屏蔽表结构的变化对用户产生的影响

1.3 创建方法

语法:

create view 视图名 as SQL语句;

示例:----基于单表的视图

create view rgzn_view as select * from tstudent where class='人工智能';

示例:----基于多表的视图

create view studentinfo as select s.studentid 学号,s.sname 姓名,s.cardid 身份证号,sub.subjectname科目名称,sc.mark成绩 from tstudent s join tscore sc on s.studentid = sc.StudentID join tsubject sub on sub.subjectid = sc.subJectID;

注意:我们可以将生成的视图当成表来使用。

select * from vstudentinfo;-- 开发者只需要此句话,即实现以它想要的数据

创建视图

CREATE VIEW studentMark
(
AS
SELECT a.studentid 学号,sname 姓名,maxk 分数,subJectName 学科
FROM TStudent a JoIN TScore b ON a.studentid=b.studentid
JOIN TSubject c oN b.subjectid=c.subjectid
);

创建行列转换视图

select 学号,姓名,
sum(case 科目 when'.net开发' then 成绩 end) net开发,
sum(case 科目 when'JAVA开发' then 成绩 end )JAVA开发,
sum(case 科目 when'人工智能' then 成绩 end)人工智能
from studentgrade
group by 学号,姓名;

示例:查询各科的最高分?

-- 传统方式

select sub.subjectname 科目名称,max(sc.mark)最高分 from tsubject sub join tscore sc on sub.subjectid=sc.subjectid group by sub. subjectname;

-- 视图方式

select 科目名称,max(成绩) from vstudentinfo group by 科目名称;

示例:查询学生的学号、姓名、分数和学科

create view studentmark as ( select s.studentid 学号,s.sname 姓名,sc.mark 分数,sub.subjectname学科 from student s,tsubject sub,tscore sc where s.studentid=sc.studentid and sub.subjectid = sc.subjectid );

查看该视图

select * from studentmark;

修改视图

alter view studentgrade
as
(
select s.studentid 学号,s.sname 姓名,sub.subjectname 科目,s.email 电子邮箱,sc.mark 成绩
from tstudent s,tsubject sub,tscore sc
where s.studentid=sc.studentid and sub.subjectid=sc.subJectID
);

删除视图

drop view studentgrade;

标签:studentid,sub,数据库,视图,-----,subjectid,sc,select
From: https://blog.csdn.net/2301_78884634/article/details/144223698

相关文章

  • Redis设计与实现第17章 -- 集群 总结2(执行命令 重新分片)
    17.3在集群中执行命令接收命令的节点会计算出命令要处理的数据库键属于哪个槽,并检查这个槽是否指派给了自己:如果是的话,直接执行这个命令否则,节点向客户端返回一个MOVED错误,指引客户端转向redirect至正确的节点,并再次发送之前想要执行的命令17.3.1计算键属于哪个槽......
  • vxe-table 在 vxe-tabs 页签组件中使用表格
    在vxe-tabs页签组件中使用vxe-table表格组件,自适应页签高度。官网:https://vxetable.cn/<template><div><vxe-tabspadding><vxe-tab-panetitle="页签1"name="1"><vxe-gridv-bind="gridOptions1">&l......
  • 数据结构---顺序表
    1.顺序表的尾插2.顺序表的头插3.顺序表的尾删4.顺序表的头删5.顺序表的查找6.指定位置插入数据7.指定位置删除数据1.顺序表的尾插在写代码之前,我们先来了解一下顺序表的结构:#include<stdio.h>typedefintSLDataType;//把int类型重命名为SLDataTypetypedefstruct......
  • csp-s 2024 游记
    Day(-6)~(-2)天天打模拟赛,要打吐了。五场noip模拟,分数分别为310,290,50,272,285,喜提极差最大(雾。Day-1上午在机房摸鱼,中午拿到了手机,玩了一个下午,爽了。五点半出校门准备回家,打了车,路程非常颠簸,司机还在车上抽烟/fn,一个容易晕车的人轻轻的碎了。下了车到机场,感觉还是不舒服,晕晕乎......
  • Element Plus组件v-loading在el-dialog组件上使用无效
    前情公司有经常需要做一些后台管理页面,我们选择了ElementPlus,它是基于Vue3,面向设计师和开发者的组件库,是Vue框架生态中比较火的UI组件库,组件库丰富易用,组件链接:一个Vue3UI框架|ElementPlus,对于请求服务数据交互提供一个loading加载中效果是一个提高用户体验的好方法。......
  • 使用 Hosting 构建 WPF 程序 - prism 篇
    在使用Hosting构建WPF程序-Stylet篇中,使用Hosting+Stylet的方式,构建了一个WPF框架,本文用于记录使用.NETGenericHost+Prism构建WPF所需的修改,仅供参考。示例代码:Jasongrass/Demo.AppHostPrism:WPF+Prism+Hosting......
  • 高精度计算器-Qt版
    代码widget.h文件#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>#include<vector>#include<stack>usingnamespacestd;QT_BEGIN_NAMESPACEnamespaceUi{classWidget;}QT_END_NAMESPACEclassWidget:publicQWidget{Q_OBJEC......
  • springboot基于springboot的论坛网站(代码+数据库+LW)
    摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了论坛网站的开发全过程。通过分析论坛网站管理的不足,创建了一个计算机管理论坛网站的方案。文章介绍了论坛网站的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功......
  • Jackson ObjectMapper - 指定对象属性的序列化顺序
    注释很有用,但在任何地方应用起来都会很痛苦。您可以配置整个 ObjectMapper 以这种方式工作当前杰克逊版本:objectMapper.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY,true)较旧的杰克逊版本:objectMapper.configure(SerializationConfig.Feature.SORT_PROPERTIE......
  • springboot靓车汽车销售网站(代码+数据库+LW)
    摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了靓车汽车销售网站的开发全过程。通过分析靓车汽车销售网站管理的不足,创建了一个计算机管理靓车汽车销售网站的方案。文章介绍了靓车汽车销售网站的系统分析部分,包括可行性分......