数据库系统概论Sql练习表student、sc、course.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
数据库系统概论Sql练习表student、sc、course 数据库系统概论 数据库系统概论Sql 练习表 练习表student、 、sc、 、course。 。 先创建⼀个数据库 create database sql_test; //创建名为sql_test的数据库 创建三张表student、sc、course (1)student CREATE TABLE `student` ( `Sno` char(20) NOT NULL, `Sname` char(20) DEFAULT NULL, `Ssex` char(2) DEFAULT NULL, `Sage` smallint DEFAULT NULL, `Sdept` char(20) DEFAULT NULL, PRIMARY KEY (`Sno`), UNIQUE KEY `Sname` (`Sname`) ); //直接复制即可 (2)course CREATE TABLE `course` ( `Cno` char(4) NOT NULL, `Cname` char(40) NOT NULL, `Cpno` char(4) DEFAULT NULL, `Ccredit` smallint DEFAULT NULL, PRIMARY KEY (`Cno`), KEY `Cpno` (`Cpno`), CONSTRAINT `course_ibfk_1` FOREIGN KEY (`Cpno`) REFERENCES `course` (`Cno`) ); (3)sc CREATE TABLE `sc` ( `Sno` char(20) NOT NULL, `Cno` char(4) NOT NULL, `Grade` smallint DEFAULT NULL, PRIMARY KEY (`Sno`,`Cno`), KEY `Cno` (`Cno`), CONSTRAINT `sc_ibfk_1` FOREIGN KEY (`Sno`) REFERENCES `student` (`Sno`), CONSTRAINT `sc_ibfk_2` FOREIGN KEY (`Cno`) REFERENCES `course` (`Cno`) ); 插⼊数据 (1)student INSERT INTO `student` VALUES ('201215121', '李勇', '男', 20, 'CS'); INSERT INTO `student` VALUES ('201215122', '刘晨', '⼥', 19, 'CS'); INSERT INTO `student` VALUES ('201215123', '王敏', '⼥', 19, 'MA'); INSERT INTO `student` VALUES ('201215125', '张⽴', '男', 19, 'IS'); (2)course insert into COURSE(Cno,Cname)values('1','数据库'); insert into COURSE(Cno,Cname)values('2','数学'); insert into COURSE(Cno,Cname)values('3','信息系统'); insert into COURSE(Cno,Cname)values('4','操作系统'); insert into COURSE(Cno,Cname)values('5','数据结构'); insert into COURSE(Cno,Cname)values('6','数据处理'); insert into COURSE(Cno,Cname)values('7','PASCAL语⾔'); //先插⼊第⼀段,因为参照完整性规则此表含有student表的外键不能⼀次性插⼊ update COURSE set Cpno='5',Ccredit = 4 where Cno = '1'; update COURSE set Cpno='4',Ccredit = 2 where Cno = '2'; update COURSE set Cpno='1',Ccredit = 4 where Cno = '3'; update COURSE set Cpno='6',Ccredit = 3 where Cno = '4'; update COURSE set Cpno='7',Ccredit = 4 where Cno = '5'; update COURSE set Cpno='5',Ccredit = 2 where Cno = '6'; update COURSE set Cpno= 在本资料中,我们关注的是一个关于数据库系统概论的SQL练习,主要涉及了三个关键表:`student`, `sc`, 和 `course`。这些表是数据库设计中的基本元素,用于存储学生、选课和课程的相关信息。 创建一个名为`sql_test`的数据库,这是所有后续操作的基础。接下来,我们创建了三张表: 1. **student** 表: - `Sno`(学号):主键,非空,用于唯一标识每个学生。 - `Sname`(姓名):默认为NULL,可以为空,但应具有唯一性。 - `Ssex`(性别):默认为NULL,可为空。 - `Sage`(年龄):默认为NULL,表示学生的年龄。 - `Sdept`(系别):默认为NULL,记录学生的系部信息。 2. **course** 表: - `Cno`(课程号):主键,非空,代表每门课程的唯一编号。 - `Cname`(课程名称):非空,记录课程的名称。 - `Cpno`(预修课程号):默认为NULL,表示这门课程需要先修的课程编号。 - `Ccredit`(学分):默认为NULL,记录课程的学分。 在`course`表中,`Cpno`是一个外键,关联到自身表的`Cno`,形成课程之间的预修关系。这种设计遵循了数据库设计的规范化原则,确保数据的一致性和完整性。 3. **sc** 表(学生选课关系): - `Sno`(学号):主键,非空,关联`student`表的学号。 - `Cno`(课程号):主键,非空,关联`course`表的课程号。 - `Grade`(成绩):默认为NULL,记录学生在该课程的成绩。 在`sc`表中,`Sno`和`Cno`组合成复合主键,确保每个学生对每门课程只能有一个成绩。同时,`Sno`和`Cno`都是外键,分别引用`student`和`course`表,保证数据的参照完整性。 接着,通过`INSERT INTO`语句向`student`和`course`表中插入数据。对于`course`表,由于参照完整性的规则,`Cpno`的设置必须在相关课程已存在的情况下进行,因此先插入课程信息,再更新预修课程号和学分。 这个练习提供了数据库设计和SQL操作的基础实践,包括表的创建、数据插入以及外键约束的运用。通过这样的练习,学习者可以更好地理解和掌握数据库的基本概念和操作。
- 粉丝: 105
- 资源: 9352
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助