SQL简单查询

实验二 SQL查询一
【实验目的】
1、 掌握单表查询
2、 初步掌握多表查询 【实验性质】 验证性 【实验内容】
使用实验一建立的银行贷款数据库和表,完成以下查询。
注意:实验一的数据集仅作为部分测试数据,不能以 SQL命令“在实验一所使用数据集上能返回正确结 果”作为检验 SQL命令是否正确的标准!
(1) 查询所有法人的法人代码、法人名称、经济性质和注册资金。
(2) 查询“102100028292”银行的的银行名称和电话。
(3) 查询单笔贷款金额在 30 至 80 万元之间的法人代码、银行代码、贷款日期和贷款金额。
(4) 查询 2009 年 1 月 1 日以后贷款且贷款期限是 10 年的法人代码。
(5) 查询经济性质为“私营企业”的所有法人的最高注册资金、最低注册资金和平均注册资金。
(6) 查询每种经济性质的法人的经济性质、最高注册资金、最低注册资金和平均注册资金。
(7) 统计每个法人的法人代码和贷款总次数,要求查询结果按贷款总次数的升序排列。
(8) 查询贷款次数超过 3 次的法人的平均贷款金额和贷款次数。
(9) 统计每种经济性质贷款的法人的总数和其平均贷款金额,列出平均贷款金额前三名的经济性质、 贷款总数和平均贷款金额。
(10) 查询贷款期限为 5 年、10 年或 15 年的法人名称、银行名称、贷款日期、贷款金额和贷款期限。
(11) 查询经济性质为“集体企业”的法人在“北京”的银行贷款(通过名称中是否包含“北京”判断银行所在 地)的信息,列出法人名称、银行名称和贷款日期。
(12) 查询哪些法人没有贷过款,列出法人名称。分别用多表连接和子查询两种方式实现。
(13) 查询有多少个法人没有贷款记录。
使用实验一建立的学生数据库和表,完成以下查询。
(14) 查询 CS 系没有选课的学生的姓名和性别。
(15) 统计‘PASCAL 程序设计’课程的考试最高分、最低分和平均分和选课人数。
(16) 统计每个系学生‘数据库原理’课程考试的最高分、最低分、平均分和选课人数。
(17) 查询每个学生的修课总学分,并进行如下处理:如果总学分高于 10 分,则显示‘优秀’;如果总学 分在 6 到 10 分间,则显示‘正常’;如果总学分低于 6 分,则显示‘应努力’。
(18) 统计每个系每个学生的修课门数和平均成绩,如果修课门数大于 3 并且平均成绩高于 90 的显示‘优 秀’;如果修课门数大于 3 并且平均成绩在 80~90,则显示‘较好’;对于修课门数小于等于 3 的并 且平均成绩高于 90 的显示‘较好’;如果修课门数小于等于 3 并且平均成绩在 80~90,则显示‘一 般’;其他情况显示为‘应努力’。列出系名、学号、原修课门数和平均成绩以及处理后的显示结 果。
(19) 查询 SE 系学生的‘数据库原理’课程考试的最低分所对应的学生的姓名、课程名和成绩。
(20) 查询没有选修直接先修课就选修了后续课程的学生选课信息:姓名、学号、已选课程名、未选先 修课名称。

答案仅供参考,数据库是一门实践性很强的课程,各位同学还是要自主完成哦。
答案如有错误,欢迎指出。

SELECT Eno,Ename,Enature,Ecapital
FROM LET

SELECT Bname,Tel
FROM bankt
WHERE Bno=‘102100028292’

SELECT Eno,Bno,LSdate,Lamount
FROM Loant
WHERE Lamount>30 AND Lamount< 80

SELECT Eno
FROM Loant
WHERE LEdate>'2009-1-1’AND Lterm=10

SELECT MAX(Ecapital) 最高注册资金,MIN(Ecapital) 最低注册资金,AVG(Ecapital) 平均注册资金
FROM LET
WHERE Enature=‘私营企业’

SELECT Enature 经济性质,MAX(Ecapital) 最高注册资金,MIN(Ecapital) 最低注册资金,AVG(Ecapital) 平均注册资金
FROM LET
GROUP BY Enature

SELECT Eno,count()
FROM Loant
GROUP BY Eno
ORDER BY count(
) ASC

SELECT AVG(Lamount) 平均贷款金额,count()
FROM Loant
GROUP BY Eno
HAVING count(
)>3

SELECT Enature 经济性质,count(*) 贷款总数,AVG(Lamount) 平均贷款金额
FROM Loant,LET
WHERE Loant.Eno=LET.Eno
GROUP BY Enature
ORDER BY AVG(Lamount) DESC LIMIT 3

SELECT Ename,Bname,LSdate,Lamount,Lterm
FROM Loant,LET,bankt
WHERE Loant.Eno=LET.Eno AND Bankt.Bno=LoanT.Bno AND (Lterm=5 OR Lterm=10 OR Lterm=15)

SELECT Lamount,Ename,Bname,LSdate
FROM Bankt,LET,Loant
WHERE Bankt.Bno=Loant.Bno AND LET.Eno=LoanT.Eno AND Enature=‘集体企业’ AND Bname LIKE ‘%北京%’

多表连接
SELECT Ename
FROM LET LEFT JOIN LoanT ON LET.Eno=LoanT.Eno
where loant.Eno IS NULL
子查询
SELECT Ename
FROM LET
WHERE Eno NOT IN (
select Eno
FROM Loant
);

SELECT count(eno)
FROM LET
where eno not in(
select eno
from loant
)

SELECT sname,ssex
FROM student,sc
where sdept=“CS” AND student.sno!=sc.sno

SELECT MAX(grade),MIN(grade),AVG(grade),count(*)
FROM sc,course
where sc.cno=course.cno AND cname=“PASCAL程序设计”

SELECT cname,sdept,MAX(grade),MIN(grade),AVG(grade),count(*)
FROM sc,course,student
where sc.cno=course.cno AND student.sno=sc.sno AND cname=“数据库原理”
group by sdept

select sno,
(
case
when sum(credit)>10 then ‘优秀’
when sum(credit) between 6 AND 10 then ‘正常’
else ‘应努力’
end
) 评价,sum(credit) 总学分
FROM sc,course
where sc.Cno=course.Cno
group by sno

select sc.sno,
(
case
when count(sc.cno)>3 AND AVG(grade)>90 then ‘优秀’
when count(sc.cno)>3 AND AVG(grade) between 80 AND 90 then ‘较好’
when count(sc.cno)<=3 AND AVG(grade)>90 then ‘较好’
when count(sc.cno)<=3 AND AVG(grade) between 80 AND 90 then ‘一般’
else ‘应努力’
end
) 评价,sdept 系名,count(sc.sno) 原修课门数,AVG(grade) 平均成绩
FROM sc,course,student
where sc.Cno=course.Cno AND student.sno=sc.sno
group by sc.sno

select sname,cname,grade
FROM student,course,sc
where student.sno=sc.sno AND course.cno=sc.cno AND sdept=“SE” AND cname=“数据库原理” AND grade=(
select min(grade)
from sc,student,course
where student.sno=sc.sno AND course.cno=sc.cno AND sdept=“SE” AND cname=“数据库原理”
)

select sname,student.sno,course.cname,pre_table.pre
FROM student,sc,course,
(
select c1.cno cno,c2.cname pre
from course c1
left outer join course c2 on c1.cpno=c2.cno
)pre_table
where sc.cno=student.sno AND sc.cno=course.cno AND
pre_table.cno=course.cno AND cpno is not null AND cpno not in
(
select c.cno
from student stu,sc,course c
where sc.sno=student.sno AND sc.cno=c.cno AND
c.cno=course.cpno AND stu.sno=student.sno
)

SQL查询一 实验学时:2   实验类型:验证 实验要求:必修 一、实验目的 通过本实验使学生掌握单表查询并初步掌握多表查询的技能。 二、实验内容 使用实验一建立的银行贷款数据库和表,完成以下查询。 1-10题为单表查询,11-25为多表查询查询所有法人的法人代码、法人名称、经济性质和注册资金。 查询“B1100”银行的的银行名称和电话。 查询贷款金额在2000至4000万元之间的法人代码、银行代码、贷款日期和贷款金额。 查询2009年1月1日以后贷款且贷款期限是10年的法人代码。 查询贷款期限为5年、10年或15年的贷款信息。 查询经济性质为“私营“的所有法人的最高注册资金、最低注册资金和平均注册资金。 查询每种经济性质的法人的经济性质、最高注册资金、最低注册资金和平均注册资金。 统计每个法人的法人代码和贷款次数,要求查询结果按贷款次数的升序排列。 查询贷款次数超过3次的法人的平均贷款金额和贷款次数。  统计每种经济性质贷款的法人的数和其平均贷款金额,列出平均贷款金额前三名的经济性质、法人数和平均贷款金额。  查询贷款期限为5年、10年或15年的法人名称、银行名称、贷款日期、贷款金额和贷款期限。  查询经济性质为“国营”的法人在“上海”的银行贷款的信息,列出法人名称、银行名称和贷款日期。  查询与“B1100”银行在同一城市(假设银行名称的第5和第6个字符为城市名称)的其他的银行的名称。  查询哪些银行没有贷过款,列出银行号和银行名称。分别用多表连接和子查询两种方式实现。  查询贷过款的所有法人的名称,贷款银行名称,贷款日期,贷款金额,要求将查询结果放在一张新的永久表New_LoanT中,新表中的列名分别为:法人名称、银行名称、贷款日期和贷款金额。  分别查询经济性质“国营”和“私营”的法人名称,贷款银行名称,贷款日期,贷款金额,要求将这两个查询结果合并成一个结果集,并以法人名称、银行名称、贷款日期和贷款金额作为显示列名,结果按贷款日期的升序和贷款金额的降序显示。 使用实验一建立的学生数据库和表,完成以下查询 查询计算机系没有选课的学生的姓名和年龄。 统计‘VB’课程的考试最高分、最低分和平均分。 统计‘数据库’课程的选课人数。 统计计算机系学生’vb’课程考试的最高分、最低分、平均分。  统计每个学生’vb’课程考试的最高分、最低分、平均分,列出系名和三个分数。 查询每个学生修课学分,并进行如下处理:如果学分高于10分,则显示‘好学生’;如果学分在6到10分间,则显示‘一般学生’;如果学分低于6分,则显示‘不好学生’。 统计每个每个学生修课门数和平均成绩,如果修课门数大于3并且平均成绩高于90的显示‘优秀’;如果修课门数大于3并且平均成绩在80~90,则显示‘较好’;对于修课门数小于等于3的并且平均成绩高于90的显示‘较好’;如果修课门数小于等于3并且平均成绩在80~90,则显示‘一般’;其他情况显示为‘应努力’。列出系名、学号、原修课门数和平均成绩以及处理后的显示结果。 查询计算机系学生考试成绩最低的两个成绩所对应的学生的姓名、课程名和成绩。 列出没有选课的学生的学号、姓名和所在系。 三、思考题 1、创建表: 教师表(   tid 普通编码定长字符型,长度为10,主关键字   tname 普通编码定长字符型,长度为10,非空 zc 普通编码定长字符型,长度为6) 设此表数据如下: tid Tname zc T1 A 教授 T2 B 副教授 T3 C 教授 编写SQL语句,使查询的结果显示为如下形式: 教师号 教师名 教授 副教授 T1 A 教授 T2 B 副教授 T3 C 教授 2、创建表: 教师表(   tid 普通编码定长字符型,长度为10,主码   tname 普通编码定长字符型,长度为10,非空 zc 普通编码定长字符型,长度为6 Salary 工作,整型) 设此表数据如下: tid Tname zc Salary T1 A 教授 5000 T2 B 副教授 4000 T3 C 教授 5000 编写SQL语句,使查询的结果显示为如下形式: 教师号 教师名 教授工资 副教授工资 T1 A 5000 Null T2 B Null 4000 T3 C 5000 Null 四、实验报告 将实验结果反映在实验报告中,并对实验中遇到的问题及解决方案进行整理、分析结,提出实验结论或自己的看法。
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
发出的红包

打赏作者

就是木子呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值