Oracle——某次作业

1.建表

/*学生表(student) (
	学号(sno) 普通编码定长字符类型,长度7,主码,
	姓名(sname) 普通编码定长字符类型,长度10,非空,
	性别(ssex) 统一编码定长字符类型,长度3,
	年龄(sage) 整型,
	所在系(sdept) 统一编码可变长字符类型,长度20
)*/
create table student
(sno char(7) primary key,
sname char(10) not null,
ssex char(3),
sage int,
sdept varchar(20)
);
/*课程表(course) (
	课程号(cno) 普通编码定长字符类型,长度6,主码,
	课程名(cname) 统一编码定长字符类型,长度20,非空,
	学分(credit) 整型,
	学期(semester) 整型
)*/
create table course
(cno char(6) primary key,
cname char(20) not null,
credit int,
semester int
);
/*修课表(sc)(
	学号(sno) 普通编码定长字符类型,长度7,主码,外码
	课程号(cno) 普通编码定长字符类型,长度6,主码,外码
	成绩(grade) 整型,(说明:空值表示选修了但未去上课,最终没有成绩)
	修课类别(xklx)普通编码定长字符类型,长度6
)*/
create table sc
(sno char(7) references student(sno),
cno char(6) references course(cno),
grade int,
xklx char(6),
primary key(sno,cno)
);

2.查询

1.查询每个选课学生选课情况,输出学号、课程号、成绩(如果没有成绩则显示为0)。

nvl函数的用法:nvl(expr1,expr2),若第一个表达式的值为空,则输出表达式2的值。

select sno,cno,nvl(grade,0) from sc;

2.查询每个学生的选课情况,输出平均成绩超过60分,选课门数超过2次的学生学号、平均成绩和选课门数(空值按0处理)。

select sno,avg(nvl(grade,0)),count(sno) from sc  
group by sno 
having avg(nvl(grade,0))>60 and count(sno)>2;

3、查询每门课程的考试最高分、最低分和平均分,输出课程号和对应的分值(空值按0处理)

select cno,max(nvl(grade,0))最高分, min(nvl(grade,0))最低分,avg(nvl(grade,0))平均分 
from sc 
group by cno;

4、统计每个系男女生人数,输出系名、性别和人数

select sdept,ssex,count(*)人数 from student
group by sdept,ssex;

5、查询计算机系年龄超过20岁的李姓男生,输出姓名

select sname from student where sage>20 and sdept='计算机系' and sname like'李%';

6、查询最受学生欢迎的课程,输出课程号


                
SQL查询二 2 通过本实验使学生掌握多表查询、子查询以及基本数据操作 二、实验内容 使用实验一建立的银行贷款数据库表,完成以下查询。 1-4是多表查询查询,5-11是数据操作 查询经济性质为“国营”的法人在上海的银行贷款的信息,列出法人代码、银行代码贷款日期,分别用多表连接查询两种方式实现。 查询在“建设银行上海分行”贷过款的法人称,分别用多表连接查询两种方式实现。 查询在“工商银行北京A支行”贷款金额前三(包括并列的情况)的法人的法人代码、法人经济性质,分别用多表连接查询两种方式实现。 查询在“工商银行北京B支行”贷款、且贷款金额高于此银行的平均贷款金额的法人代码、贷款日期贷款金额。 在银行表中插入如下数据:银行代码号为:B321B,银行称为:建设银行上海B分行,电话为空值。 在法人表中插入如下数据:法人代码号为:E11,法人称为:新法人,注册资金为:2350万元,经济性质使用默认值。 删除银行编号为“B321B”的银行信息。 删除2000年之前一次贷款金额最小的贷款记录。 删除从贷款日期到当前日期天数超过10年的贷款记录。 删除法人称为“爱贝乐玩具有限公司”且贷款金额小于10万元的贷款记录,分别用子查询多表连接两种方式实现。 将经济性质为“私营”的法人在“工商银行上海支行”贷款的所有贷款金额加5万元,分别用子查询多表连接两种方式实现。 使用实验一建立的学生数据库表,完成以下查询 12-15是多表查询查询,16-20是数据操作 查询计算机年龄大于总平均年龄的学生的姓年龄。 查询计算机年龄大于计算机平均年龄的学生的姓年龄。 查询计算机考试成绩小于总平均分的学生的学号、姓。 将考试成绩最低的并且不及格学生的最低修课成绩改为60。 将数据库基础考试成绩最低的且成绩为不及格学生数据库考试成绩改为60。 删除计算机“计算机网络”课程的全部选课记录。 删除vb考试成绩最低的两个学生的vb考试记录。 对数据库考试成绩进行如下修改:如果成绩低于60分,则提高10%;如果成绩在60到80之间,则增加6%;如果成绩在80到95之间则提高4%,其他情况不提高。 对学分进行如下修改:如果是第1到第3学期开始的课程,则学分增加1分;如果是第4到第6学期开设的课程,学分增加2分,其他学期开始的课程学分增加3分。 以下查询必须用子查询完成: 查询男生年龄最大的学生的姓所在查询选修了‘数据库基础’的学生的姓、所在。s 选修了第6学期开始的课程的学生的学号、姓所在查询男生所修的课程的课程查询年龄最小的学生所选的课程。 三、实验报告 将实验结果反映在实验报告中,并对实验中遇到的问题及解决方案、进行整理、分析总结,提出实验结论或自己的看法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值