SQL查询练习题(赋答案)

现在有一教学管理系统,具体的关系模式如下:

Student (no, name, sex, birthday, class)

Teacher (no, name, sex, birthday, prof, depart)

Course (cno, cname, tno)

Score (no, cno, degree)

其中表中包含如下数据:

Course表:

 

 

Score表:

 

Student表:

 

 

Teacher表:

 

根据上面描述完成下面问题:


DDL

1.  写出上述表的建表语句。

 

create table Student(
no   int,
name varchar(14),
sex  varchar(13),
birthday varchar(30),
class varchar(20)
)

create table Teacher(
no  int,
name varchar(14),
sex varchar(13),
birthday varchar(30),
prof varchar(16),
depart varchar(20)
)

create table Course(
cno varchar(20),
cname varchar(20),
tno int
)

create table Score(
no  int,
cno varchar(20),
degree int
)


DML

2. 给出相应的INSERT语句来完成题中给出数据的插入。

 

insert into Course values
('3-101','数据库',1)
insert into Course values
('5-102','数学',3)
insert into Course values
('3-103','信息系统',4)
insert into Course values
('3-104','操作系统',6)
insert into Course values
('3-105','数据结构',4)
insert into Course values
('3-106','数据处理',5)
insert into Course values
('4-107','pascal语言',5)
insert into Course values
('4-108','c++',7)
insert into Course values
('4-109','java',8)
insert into Course values
('3-245','数据挖掘',10)
insert into Course values
('3-111','软件工程',11)

insert into Score values
(5001,'3-105',69)
insert into Score values
(5001,'5-102',55)
insert into Score values
(5003,'4-108',85)
insert into Score values
(5004,'3-105',77)
insert into Score values
(5005,'3-245',100)
insert into Score values
(5006,'3-105',53)
insert into Score values
(5003,'4-109',45)
insert into Score values
(5008,'3-105',98)
insert into Score values
(5004,'4-109',68)
insert into Score values
(5010,'3-105',88)
insert into Score values
(5003,'3-105',98)
insert into Score values
(5005,'4-109',68)
insert into Score values
(5002,'3-105',88)
insert into Score values
(107,'3-105',98)
insert into Score values
(108,'4-109',68)
insert into Score values
(109,'3-105',88)
insert into Score values
(107,'3-111',88)
insert into Score values
(5003,'3-111',80)

insert into Student values
(5001,'李勇','男','1987-7-22',95001)
insert into Student values
(5002,'刘晨','女','1987-11-1',95002)
insert into Student values
(5003,'王敏','女','1987-10-5',95001)
insert into Student values
(5004,'李好尚','男','1987-9-25',95003)
insert into Student values
(5005,'李军','男','1987-7-17',95004)
insert into Student values
(5006,'范新位','女','1987-6-18',95005)
insert into Student values
(5007,'张霞东','女','1987-8-29',95006)
insert into Student values
(5008,'赵薇','男','1987-6-15',95007)
insert into Student values
(5009,'钱民将','女','1987-6-23',95008)
insert into Student values
(5010,'孙俪','女','1987-9-24',95002)
insert into Student values
(108,'赵里','男','1987-6-15',95007)
insert into Student values
(109,'丘处机','男','1987-6-23',95008)
insert into Student values
(107,'杨康','男','1987-9-24',95001)

insert into Teacher values
(1,'李卫','男','1957-11-5','教授','电子工程系')
insert into Teacher values
(2,'刘备','男','1967-10-9','副教授','math')
insert into Teacher values
(3,'关羽','男','1977-9-20','讲师','sc')
insert into Teacher values
(4,'李修','男','1957-6-25','教授','elec')
insert into Teacher values
(5,'诸葛亮','男','1977-6-15','教授','计算机系')
insert into Teacher values
(6,'殷素素','女','1967-1-5','副教授','sc')
insert into Teacher values
(7,'周芷若','女','1947-2-23','教授','sc')
insert into Teacher values
(8,'赵云','男','1980-6-13','副教授','计算机系')
insert into Teacher values
(9,'张敏','女','1985-5-5','助教','sc')
insert into Teacher values
(10,'黄蓉','女','1967-3-22','副教授','sc')
insert into Teacher values
(11,'张三','男','1967-3-22','副教授','sc')
查询:
3. 输出成绩为858688或在60-80之间的记录(no,cno,degree
命令:
select no,cno,degree
from Score
where degree in (85,86,88) or (degree >= 60 and degree <=80);
结果:

4. 输出3-105’号课程的平均分

命令:
select cast (avg(degree) as numeric(8,6))
from score
where cno = '3-105';

结果:

#注意cast和numeric的用法

5. 输出95001’班级所选课程的课程号和平均分


命令:
select cno,avg(degree)
from score join student on score.no=student.no
where class =95001
group by cno;

结果:
#注意:

1. group by 上可用where;
2.select后的属性要么包含在group by 后,要么是聚集函数;

3.有聚集函数一定要有group by;

6.  列出“计算机系”教师所教课程的成绩表(课程编号,课程名,学生名,成绩)
命令:
select course.cno,cname,student.name,degree
from student,teacher,course,score
where student.no=score.no and score.cno=course.cno and
      course.tno=teacher.no and depart='计算机系';

结果:

#注意:多表查询时(1)在from语句中用join...on...连接
                             (2)在where语句中每个连接之间要有and

猜你喜欢

转载自blog.csdn.net/qq_39354682/article/details/80569251