其他分享
首页 > 其他分享> > 实验5 复杂查询(2)

实验5 复杂查询(2)

作者:互联网

注意事项

1.SQL语句中用单引号表示字符串、日期,不是用双引号!!!

一、实验内容

一. 实验目的:
1. 理解左外连接、右外连接和完整外连接的区别。
2. 掌握SQL语句中的join子句。
3. 掌握用SQL语句实现数据的增删改。
4. 掌握SQL语句中的如何创建视图。

二. 实验内容:
打开“教学数据库”。再创建两个表T和TC,各表的结构如表所示。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

写出下列查询的SQL语句:

1. 利用SQL语句创建TC表。
2. 在C表中插入一门课程:C8,C语言程序设计,72。
3. 在T表的TN上创建一个唯一性索引。
4. 查询所有学生选修所有课程的姓名、课程名和成绩,包括没有选课的学生,包括没有被选修的课程。
5. 查询姓张的教师的姓名和所教课程的门数。
6. 查询没有选修“程序设计”课程的学生姓名。
7. 创建一个试图avg_view,求每门课程的课程号、课程名和平均分。
8. 把讲授C5课程的教师的岗位津贴增加100元。
9. 删除刘伟教师的授课记录。

二、参考解答

/*a.创建T(教师)表*/
create table T
(TNO char(5) not null primary key,
 TN char(8) not null,
 SEX char(2),
 AGE tinyint,
 PROF char(10),
 SAL int,
 COMM int,
 DEPT char(20)
)

/*b.创建TC(授课)表结构(法一)*/
create table TC
(TNO char(5) not null references T(TNO),
 CNO char(5) not null references C(CNO),
 primary key(TNO,CNO)
)

/*b.创建TC(授课)表结构(法二)*/
create table TC
(TNO char(5) not null,
 CNO char(5) not null,
 primary key(TNO,CNO),
 foreign key(TNO) references T(TNO)
 foreign key(CNO) references C(CNO)
)

/*1.利用SQL语句创建TC表(同b)*/
create table TC
(TNO char(5) not null references T(TNO),
 CNO char(5) not null references C(CNO),
 primary key(TNO,CNO)
)

/*2.在C表中插入一门课程:C8,C语言程序设计,72*/
insert
into C
values('C8','C语言程序设计',72)

/*3.在T表的TN上创建一个唯一性索引*/
create unique index tname on T(TN)

/*4.查询所有学生选修所有课程的姓名、课程名和成绩,
包括没有选课的学生,包括没有被选修的课程*/
select SN 姓名,CN 课程名,SCORE 成绩
from S full join SC on S.SNO=SC.SNO full join C on SC.CNO=C.CNO

/*5.查询姓张的教师的姓名和所教课程的门数*/
select TN 姓张的教师姓名,COUNT(*) 所教课程的门数
from T,TC
where T.TNO=TC.TNO and TN like '张%'
group by TN

/*6.查询没有选修“程序设计”课程的学生姓名*/
select SN  没有选修程序设计课程的学生姓名
from S
where SNO not in(select SNO
				 from SC,C
				 where SC.CNO=C.CNO and CN='程序设计'
				 )

/*7.创建一个试图avg_view,求每门课程的课程号、课程名和平均分*/
create view avg_view
as
select C.CNO 课程号,CN 课程名,AVG(SCORE) 平均分
from SC,C
where SC.CNO=C.CNO
group by C.CNO,CN

/*8.把讲授C5课程的教师的岗位津贴增加100元*/
update T
set COMM+=100
where TNO in(select TNO
			 from TC
			 where CNO='C5'
			 )

/*9.删除刘伟教师的授课记录*/
delete
TC
where TNO in(select TNO
			 from T
			 where TN='刘伟'
			 )

标签:复杂,查询,char,课程,实验,CNO,TNO,where,TC
来源: https://blog.csdn.net/qq_46139801/article/details/117603174