实验目的:
①如何创建视图
②如何在视图中进行数据查询
实验内容:
①创建视图
②查询视图
实验步骤与过程:
一、建库
二、完成习题
第一题
设有学生表S(SNO,SN)【SNO为学生号, SN 为 姓 名】
学 生 选 修 课 程 表 SC(SNO,CNO,CN,G)【CNO 为课程号,CN 为课程号,G为成绩】
试用 SQL 语言完成以下各题∶
1、建立一视图 V-SSC(SNO,SN,CNO,CN,G)
2、从视图 V-SSC上查询平均成绩在 90分以上的 SN,CNO,CN 和 G
·根据题目建表:
-设计“S”表结构:
根据属性需求设定相关字段>>根据字段需求设定适合的数据类型和字符长度>>设置主键(SNO)
-设计“SC”表结构:
根据属性需求设定相关字段>>根据字段需求设定适合的数据类型和字符长度>>设置主键(SNO,CNO)
·根据题目录入记录:
①录入“S”表记录:
②录入“SC”表记录:
1、建立一视图 V-SSC(SNO,SN,CNO,CN,G)
命令输入:
Create View V_SSC
As Select S.SNO,SN,CNO,CN,SC.G
From S,SC
Where S.SNO = SC.SNO And S.SNO = SC.SNO;
查看视图:
2、从视图 V-SSC上查询平均成绩在 90分以上的 SN,CNO,CN 和 G
命令输入:
Select V_SSC.SNO,CNO,CN,G
From V_SSC(Select SNO
From V_SSC
Group By SNO Having AVG(G) > 90)As T
Where T.SNO = V_SSC.SNO;
得到查询结果:
第二题
·根据题目建表:
-设计“R”表结构:
根据属性需求设定相关字段>>根据字段需求设定适合的数据类型和字符长度
-设计“S”表结构:
根据属性需求设定相关字段>>根据字段需求设定适合的数据类型和字符长度
-设计“T”表结构:
根据属性需求设定相关字段>>根据字段需求设定适合的数据类型和字符长度
·根据题目录入记录:
-录入“R”表记录:
-录入“S”表记录:
-录入“T”表记录:
1、将R、S、T三个关系按关联属性建立一个视图R-S-T
命令输入:
Create View R_S_T
As Select S.A,B,C,S.D,E,F
From S,R,T
Where R.A = S.A And S.D = T.D;
查看视图:
2、对视图R-S-T按属性A分组后,求属性C和E的平均值。
命令输入:
Select A,AVG(C) C平均值,AVG(E) E平均值
From R_S_T
Group By A;
得到查询结果:
第三题
·根据题目建表:
-设计“R”表结构:
根据属性需求设定相关字段>>根据字段需求设定适合的数据类型和字符长度
·根据题目录入记录:
-录入“R”表记录:
1、按属性A分组,求出每组中在属性 C上的最大值和最小值,且将它们置于视图 RVE中
命令输入:
Create View RVE
As Select A,MAX(C) C最大值,MIN(C) C 最小值
From R
Group By A;
查看视图:
2、在视图 RVE 中查询属性 A="98"的记录
命令输入:
Select *
From RVE
Where A = '98';
得到查询结果:
第四题
假定一个工厂由不同的车间构成,每个员工的工资的计算方法如下
对每个员工A,A的月工资=A生产的部件的价值x0.1%+A的月基本工资+A 所在车间的月平均奖金。假定一个员工只能在一个车间工作。
·根据题目建表:
-设计“工资表”表结构:
根据属性需求设定相关字段>>根据字段需求设定适合的数据类型和字符长度>>设置主键(工号)
·根据题目录入记录:
-录入“工资表”表记录:
1、求工厂的基本工资总和
命令输入:
Select SUM(基本工资) 基本工资总和
From 工资表;
查询结果:
2、求每个员工所在车间月平均奖金
命令输入:
Create View 车间月平均奖金(车间,月平均奖金)
As Select 车间,AVG(月平均奖金) 月平均奖金
From 工资表
Group By 车间;
查看视图:
3、求所有车间每个员工的月工资
命令输入:
Create View 新工资表
As Select 工号,工资表.车间,姓名,生产部件价值,基本工资,车间月平均奖金,月平均奖金,总工资
From 车间月平均奖金,工资表
Where 车间月平均奖金.车间 = 工资表.车间;
查看视图:
命令输入:
Update 新工资表
Set 总工资 = 生产部件价值 * 0.001 + 基本工资 + 月平均奖金;
查看视图:
实验反思:
·当目标列为*时,视图名后的字段不可省略