CREATE VIEW V_SCG AS SELECT Sno,Sname,Cname,Score,Credit from student,grade,course WHERE grade.Sno = student.Sno AND grade.Cno = course.Cno AND Cno = '0001'; 哪里错了
时间: 2024-02-16 20:02:56 浏览: 91
在这个 SQL 查询语句中,FROM 子句中的表 student、grade、course 没有使用 JOIN 操作符链接,而是使用了逗号分隔,这会导致查询结果出现笛卡尔积,即每个表中的每一行都与其他表中的每一行进行组合,从而导致查询结果出现重复数据。解决这个问题的方法是使用 JOIN 操作符来链接这些表,并在 ON 子句中指定连接条件。另外,查询中的 Cno = '0001' 应该指定表的别名,例如 course.Cno = '0001'。修改后的 SQL 查询语句如下所示:
```
CREATE VIEW V_SCG AS
SELECT Sno,Sname,Cname,Score,Credit
FROM student
JOIN grade ON student.Sno = grade.Sno
JOIN course ON grade.Cno = course.Cno
WHERE course.Cno = '0001';
```
相关问题
SCG(Sno,Sname,Sage,Cno,Grade) SP(Sno,Sname,Scity,Pno,Pname,Qty) S:供应商 P:零件 Pty:数量 SL(Sno,Sname,Sdept,Sloc) Sloc:系办公室 SSC(Sno,Sid,Cno,score) Sid:身份证号 分别写出: (1)主码,主属性,非主属性 (2)函数依赖 (3)属于第几范式?为什么? (4)存在什么问题? (5)如何分解?分解后原问题是否解决?
(1)
- SCG表:主码为(Sno, Cno),主属性为Sno, Sname, Sage, Cno, Grade,非主属性为无。
- SP表:主码为(Sno, Pno),主属性为Sno, Sname, Scity, Pno, Pname, Qty,非主属性为无。
- SL表:主码为Sno,主属性为Sno, Sname, Sdept, Sloc,非主属性为无。
- SSC表:主码为(Sno, Sid, Cno),主属性为Sno, Sid, Cno, score,非主属性为无。
(2)
- SCG表:(Sno, Cno) -> Grade
- SP表:(Sno) -> Sname, Scity;(Pno) -> Pname
- SL表:(Sno) -> Sname, Sdept, Sloc
- SSC表:(Sno, Cno) -> Sid, score
(3)
- SP表不满足第一范式,因为存在重复的列。
- SSC表不满足第二范式,因为Sid不完全依赖于主键(Sno, Cno)。
- 其余表均满足第三范式。
(4)
- SP表存在部分函数依赖,可能导致数据冗余和更新异常。
- SSC表存在传递依赖,可能导致数据冗余和更新异常。
(5)
- 将SP表分解成SP1(Sno, Pno, Qty)和SP2(Pno, Pname),消除SP表中的部分函数依赖;
- 将SSC表分解成SSC1(Sno, Cno, Sid)和SSC2(Sno, Cno, score),消除SSC表中的传递依赖。
- 分解后原问题得到解决。
一、用SQL语言创建一个名为School的数据库 1)所有数据文件存放于非C:盘的其它盘下以学生的学号姓名,命名的文件夹内。 2)数据库的属性如下: 主数据文件的大小为5MB,文件【按兆字节】的方式增长,一次增长2MB,最大容量20MB; 事务日志文件大小为4MB,文件【按百分比】的方式增长,一次增长25%,最大容量10MB; 二级数据文件,文件名为scg1dt1,文件大小1MB,【按兆字节】方式增长,增长量为1MB,最大容量10MB,存放于名为SCGroup1文件组中。 3)修改数据库: 修改主数据文件的大小为10MB,增长方式改为【按百分比】增长,一次增长20%; 为SCGroup1文件组增加一个名为scg1dt2的数据文件,其属性同scg1dt1; 2、管理数据库 使用sp_helpdb命令查看数据库School信息; 使用sp_helpfile命令查看主数据文件信息; 使用sp_helpfilegroup命令查看SCGroup1文件组信息; 二、在school数据库中创建如下三个新表: 1)学生表(Student) 属性名 含义 数据类型 约束 Sno 学号 Char(10) 主键(primary key) Sname 姓名 char(10) 非空 Ssex 性别 char(2) 非空;且只能取值‘男’、‘女’ Sage 年龄 int 大于等于10岁,小于等于45岁 Sdept 所在系 char(10) 数据如下: 学号 Sno 姓名 Sname 性别 Ssex 年龄 Sage 所在系 Sdept 200215121 李勇 男 20 CS 200215122 刘晨 女 19 CS 200215123 王敏 女 18 MA 200215125 张立 男 19 IS 2)课程表(Course) 属性名 含义 数据类型 约束 Cno 课程号 int 主键(primary key) Cname 课程名 char(10) 唯一、非空 Cpno 先修课程号 int 外键,参照Cno Ccredit 学分 int 1,2,3,4 数据如下:课程号 课程号 Cno 课程名 Cname 先行课 Cpno 学分 Ccredit 1 数据库 5 4 2 数学 2 3 信息系统 1 4 4 操作系统 6 3 5 数据结构 7 4 6 数据处理 2 7 PASCAL语言 6 4 8 DB_Design 1 4 3)学生选课表(SC) 属性名 含义 数据类型 约束 Sno 学号 Char(10) 外键,参照Student.Sno, Cno 课程号 int 外键,参照Course.Cno, Grade 成绩 int 大于等于0,小于等于100 注: 数据如下: 学号 Sno 课程号 Cno 成绩 Grade 200215121 1 92 200215121 2 85 200215121 3 88 200215122 2 90 200215122 3 80 200215123 3 200215125 4 1、管理数据表 1)查看Student表的信息。 2)在SC表中添加由(Sno,Cno)共同构成的主键(primary key)约束。 3)在Student表中添加一列 属性名 含义 数据类型 约束 Scity 籍贯 char(10) 4)为Course表增加计算列Cmoney“重修费”,其值为“学分*100” 记录上述操作的SQL语句和运行结果。 2、约束管理 1)在SC表中添加由(Sno,Cno)共同构成的主键(primary key)约束。 2)删除student表中的sno一列,查看运行结果是否有误,并分析原因如何解决。 3)为student表的“所在系”列添加默认值约束,默认值为‘CS’ 4)删除3)的默认值约束
As an AI language model, I do not have any personal belief or feelings. I am neutral and do not have emotions. "Null" is a term used in computer programming languages to represent a non-existent or non-valued state.
阅读全文