赞
踩
任务要求如下:
给出xxgl数据库以及学生表、课程表和选课表。进行以下查询:
Student(sno char(12),sname char(10),ssex char(2),sage tinyint ,sdept nchar(20))
Course(cno char(3),cname nchar(20),credit tinyint)
Sc(sno char(12),cno char(3),grade tinyint)
(1)查询学生的学号、姓名、课程名和成绩。
(2)查询选修C1号课程且成绩在60分以上的所有学生的学号和姓名。
(3)查询选修了课程名为“计算机网络”的学生的学号和姓名。
(4)查询与“计算机网络”学分相同的课程的课程名和学分,用自身连接查询完成。
(5)查询与“程晓晴”年龄相同的学生的信息,用自身连接查询完成。
(6)查询与“程晓晴”在同一个系学习的学生的学号、姓名和系别。要求分别用自身连接查询和嵌套查询完成。
(7)查询选课成绩大于60分以上的学生的学号和姓名。
(8)查询成绩至少比学号为S3的学生选修的某一门课成绩要高的学生的学号、课程号和成绩。
(9)查询成绩比学号为S3的学生选修的任一门课成绩都要高的学生的学号、课程号和成绩。
(10)找出超过所有学生选修课程平均成绩的学号、课程号和成绩。
student表
sno | sname | ssex | sage | snat | sdept |
S1 | 赵无言 | 男 | 18 | 汉族 | 计算机系 |
S2 | 蒋洪 | 男 | 19 | 回族 | 通信系 |
S3 | 汪艳 | 女 | 18 | 汉族 | 自动化 |
S4 | 张拟 | 女 | 18 | 汉族 | 通信系 |
S5 | 孙瑶 | 男 | 19 | 汉族 | 电子系 |
S6 | 张军军 | 男 | 20 | 回族 | 计算机系 |
course表
cno | cname | credit |
001 | C语言程序设计 | 2 |
002 | 高数 | 3 |
003 | 大学英语 | 2 |
004 | 计算机网络 | 3 |
005 | 数据库原理 | 2 |
sc表
sno | cno | grade |
S1 | 001 | 80 |
S1 | 003 | 75 |
S2 | 002 | 54 |
S2 | 003 | 90 |
S3 | 002 | 70 |
S3 | 003 | 30 |
主要代码如下:
- create database JXGL1
- on
- (name=JXGL,
- filename='D:\sql\JXGL1.mdf',//选择自己的文件保存位置
- size=10MB,
- maxsize=30MB,
- filegrowth=5MB)
- log on
- (name=xxgl_log,
- filename='D:\sql\JXGL1_log.ldf',
- size=4MB,
- maxsize=10MB,
- filegrowth=2MB)
- use JXGL1
- go
- create table S(sno char(12)primary key,
- sname char(10),
- sex char(2),
- age tinyint,
- sdept nchar(20)
- )
- create table C
- (cno char(3)primary key,
- cname nchar(20),
- Tname varchar(20),
- credit tinyint
- )
- create table SC
- (sno char(12)references S(sno),
- cno char(3)references C(cno),
- grade float,
- primary key(sno,cno),
- )
- insert into S values
- ('S1','程晓晴','女',21,'CS'),
- ('S2','吴玉江','男',20,'CS'),
- ('S3','姜云','女',18,'CS'),
- ('S4','张峰','男',19,'CS'),
- ('S5','张丽丽','女',21,'MA'),
- ('S6','李文','女',25,'MA'),
- ('S7','李文远','女',19,'MA'),
- ('S8','张峰名','男',20,'IS'),
- ('S9','王大力','男',21,'IS'),
- ('S10','张姗姗','女',22,'IS')
-
- insert into c values
- ('C1','C语言程序设计','殷老师',4),
- ('C2','计算机网络','王老师',4),
- ('C3','数据结构','詹老师',4),
- ('C4','数据库系统','詹老师',3),
- ('C5','Jave Web','支老师',3)
-
- insert into SC values
- ('S1','C1',96),
- ('S1','C2',55),
- ('S1','C3',84),
- ('S1','C5',52),
- ('S2','C1',84),
- ('S2','C2',90),
- ('S2','C4',85),
- ('S3','C5',73),
- ('S3','C4',Null),
- ('S4','C1',50)
- use JXGL1
- select s.sno,s.sname,c.cname,SC.grade
- from S join Sc
- on s.sno=SC.sno
- join C on c.cno=SC.cno
- select s.sno,s.sname
- from s join (SC join C on SC.cno=c.cno)
- on s.sno=SC.sno and grade>60 and c.cno=sc.cno and sc.cno='c1'
- select s.sno,s.sname
- from S
- where sno in
- (select sno
- from sc
- where cno='c2')
- select cname,credit
- from C
- where cno in
- (select cno
- from SC
- where credit=4)
- select *
- from S
- where age in
- (select age
- from S
- where age=21)
- --自身连接--
- select b.sno,b.sname,b.sdept
- from S as a join s as b
- on a.sdept=b.sdept and a.sname='程晓晴'
- --嵌套连接--
- select sno,sname,sdept
- from S
- where sdept in
- (select sdept
- from s
- where sname='程晓晴')
- select s.sno,s.sname
- from s join (SC join C on SC.cno=c.cno)
- on s.sno=SC.sno and grade>60
-
- select s.sno,c.cno,grade
- from s join (SC join C on SC.cno=c.cno)
- on s.sno=SC.sno
- where grade > any
- (select grade
- from sc
- where sno>'s3')
-
- select s.sno,c.cno,grade
- from s join (SC join C on SC.cno=c.cno)
- on s.sno=SC.sno
- where grade > any
- (select grade
- from sc
- where sno='s3')
-
- select sno,cno,grade
- from SC as a
- where grade>=
- (select avg(grade)
- from SC as b
- where a.sno=b.sno)
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。