数据库中有如下三个表:学生表(Sno、SName……),选课表(Sno、Cno、Score、……),课程表(Cno、

数据库中有如下三个表:学生表(Sno、SName……),选课表(Sno、Cno、Score、……),课程表(Cno、,第1张

select a.Sno as 学号,Sname as 姓名,avg(Score) as 平均分

from 学生表 a inner join 选课表 b on a.Sno=b.Sno

inner join 课程表 c on b.Cno=c.Cno

group by a.Sno,Sname

having avg(Score) > 70 and count(c.Cno) > 2

order by 平均分

用SQL语言实现下列功能的SQL语句代码:

1、创建[学生表]代码:

学生表(学号 char(6),姓名,性别,年龄,专业)

要求使用:主键(学号)、非空(姓名,专业)、检查(性别)

CREATE TABLE 学生表

(

学号 CHAR(6) PRIMARY KEY,

姓名 CHAR(10) NOT NULL,

性别 CHAR(2) NOT NULL CHECK (性别 IN ('男','女')),

年龄 INT,

专业 CHAR(20) NOT NULL

)

2、创建[选课表]代码:

选课表(ID,学号,课号,分数)

要求使用:外键(选课表.学号,选课表.课程号)、检查(分数),自动编号(ID)

CREATE TABLE 选课表

(

ID INT IDENTITY(1,1) NOT NULL,

学号 CHAR(6) NOT NULL FOREIGN KEY REFERENCES 学生表(学号),

课号 CHAR(10) NOT NULL FOREIGN KEY REFERENCES 课程表(课程号),

分数 INT CHECK (分数 BETWEEN(0,100))

)

3、将下列课程信息添加到课程表的代码

课程号 课程名 学分 先行课程号

100002 数据结构 2100001

修改 课程号为100003的课程名:SQL数据库

删除 课程号为100002的课程信息

INSERT INTO 课程表 (课程号,课程名,学分,先行课程号)VALUES ('100002','数据结构',2,'100001')

UPDATE 课程表 SET 课程名 = 'SQL数据库' WHERE 课程号 = '100003'

DELETE FROM 课程表 WHERE 课程号 = '100002'

4、写出创建:选课表视图(学号,姓名,课程号,课程名,学分,分数)的代码

CREATE VIEW UV_选课表_OnShow

AS

SELECT A.学号,A.姓名,C.课程号,C.课程名,C.学分,B.分数

FROM 学生表 AS A INNER JOIN 选课表 AS B ON A.学号 = B.学号

INNER JOIN 课程表 AS C ON B.课号 = C.课程号

现有关系数据库如下:

学生(学号,姓名,性别,专业,奖学金)课程(课程号,名称,学分)学习(学号,课程号,分数)用SQL实现:

(5)查询没有任何一门成绩在80分以下的所有学生的信息,包括学号、姓名和专业

SELECT 学生.学号,学生.姓名,学生.专业

FROM 学生,学习

WHERE 学生.学号 = 学习.学号

GROUP BY 学生.学号,学生.姓名,学生.专业

HAVING MIN(分数) >80

(6)对成绩得过满分(100分)的学生,如果没有获得奖学金的,将其奖学金设为1000

不知道没有获得奖学金的情况下,奖学金是多少,现假设是0

UPDATE 学生 SET 奖学金 = 1000 WHERE 学号 IN (SELECT 学生.学号

FROM 学生,学习

WHERE 学生.学号 = 学习.学号

GROUP BY 学生.学号

HAVING MAX(分数) = 100) and 奖学金 = 0


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6905381.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-30
下一篇 2023-03-30

发表评论

登录后才能评论

评论列表(0条)

保存