[SQL语句]十道典型例题

您所在的位置:网站首页 mrp计算题经典例题带批量 [SQL语句]十道典型例题

[SQL语句]十道典型例题

2023-06-30 15:07| 来源: 网络整理| 查看: 265

 上篇我们对数据库SQL语句有了一定了解,接下来这十道例题会带你真正去操纵数据表,用多种语句得到想要查询的结果,加深对语句的理解。我们不单单是在一张表上查询,而是在多张表连接的表中查询。接下来我们开始由浅入深。

我们先设有如下四个基本表S(学生表),C(课程表),SC(学生选课表),T(教师表)。

(1)用SQL的DDL语言创建S表,S#为主码,SN不能为空。 (2)创建计算机系学生的视图,该视图的属性列由学号、姓名、课程号和任课教师号组成。 (3)检索计算机系年龄在20岁以上的学生学号。 (4)检索姓王的教师所讲课程的课程号及课程名称。 (5)检索张三同学所学课程的成绩,列出SN、C#和GR。 (6)检索选修总收入超过1000元的教师所讲课程的学生姓名、课程号和成绩。 (7)检索没有选修C1课程且选修课程数为两门的学生的姓名和平均成绩,并按平均成绩降序排列。 (8)检索选修和张三同学所选课程中任意一门相同的学生姓名、课程名。 (9)S1同学选修了C3,将此信息插入SC表中。 (10)删除S表中没有选修任何课程的学生记录。

(1)用SQL的DDL语言创建S表,S#为主码,SN不能为空。

create table S( S# char(6) primary key, SN char(20) not null, AGE char(3), DEPT char(20) )

(2)创建计算机系学生的视图,该视图的属性列由学号、姓名、课程号和任课教师号组成。

create view 计算机学生选课信息表 as select S.S# as 学号,SN as 姓名,SC.C# as 课程号,TN as 任课教师 from S left join SC on S.S# = SC.S# left join T on SC.C# = T.C# where DEPT = '计算机' --or create view 计算机学生选课信息表 as select S.S# as 学号,SN as 姓名,SC.C# as 课程号,TN as 任课教师 from S,SC,T where S.S# = SC.S# and SC.C# = T.C# and DEPT = '计算机'

(3)检索计算机系年龄在20岁以上的学生学号。

select S# as 学生学号 from S where DEPT = '计算机' and AGE > '20'

(4)检索姓王的教师所讲课程的课程号及课程名称。

select T.C# as 课程号, CN as 课程名称 from T left join C on T.C# = C.C# where TN like '王%' --or select T.C# as 课程号, CN as 课程名称 from T,C where T.C# = C.C# and SN like '王%'

(5)检索张三同学所学课程的成绩,列出SN、C#和GR。

select SN,C#,GR from SC left join S on SC.S# = S.S# where SN = '张三' --or select SN,C#,GR from S,SC where S.S# = SC.S# and SN = '张三'

(6)检索选修总收入超过1000元的教师所讲课程的学生姓名、课程号和成绩。

select SN,T.S#,GR from T,SC,S where T.C# = SC.C# and SC.S# = C.S# and (SAL+COMM)> 1000

(7)检索没有选修C1课程且选修课程数为两门的学生的姓名和平均成绩,并按平均成绩降序排列。

select SN,avg(GR) from S,SC where SC.S# = S.S# and C# 'C1' group by S#,SN having count(S#)=2 order by avg(GR) desc

(8)检索选修和张三同学所选课程中任意一门相同的学生姓名、课程名。

select SN,CN from S,SC,C where S.S# = SC.S# and SC.C# = C.C# and SN '张三' and C# in(select C# from S,SC where S.S# = SC.S# and SN = '张三')

(9)S1同学选修了C3,将此信息插入SC表中。

insert into SC(S#,C#) values('S1','C3')

(10)删除S表中没有选修任何课程的学生记录。

delete table S where S# not in(select distinct S# from SC) --or delete table S where not exists(select distinct S# from SC where S.S# = SC.S#)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3