创建Course表 字段名 代码 类型 约束 课程编号 cno char(10) 主键 课程名称 cname char(20) 非空 专业代码 spno char(8) 用speciality中的sp...
时间: 2024-05-26 18:16:40 浏览: 55
学分数 credit float 非负 教师姓名 tname char(10) 非空 上课时间 classtime char(20) 可以为空 上课地点 classroom char(20) 可以为空
其中,专业代码字段 spno 可以参考 speciality 表中的 spno 字段,建立外键关系,确保数据的一致性和完整性。
相关问题
按附件(数据字典)说明在你创建的数据库下创建四个表格: t_student(学生表)、t_course(课程表)、t_scores(选课成绩表)、t_class(班级表)。学生信息表( t_student) 字段名 名称 数据类型 空 备注 SNo 学号 Char(20) N 主键 Sname 姓名 varchar(50) N Sex 性别 Char(2) Y class_name 班级名 Char(2) Y 2.课程表 课程表( t_course) 字段名 名称 数据类型 空 备注 CNo 课程编号 Char(10) N 主键 Cname 课程名称 varchar(50) N Credit 学分 Int Y 3.选课表 选课成绩表(scores) 字段名 名称 数据类型 空 备注 SNo 学号 Char(20) N 主键 CNo 课程号 Char(10) N 主键 grade 成绩 Int Y 4.班级表 班级表(t_class) 字段名 名称 数据类型 空 备注 class_name 部门编号 Char(2) N 主键 department 部门名称 varChar(50) N teacher 教师 varChar(20) classroom 教室 varChar(30)
根据数据字典,可以使用以下 SQL 语句在创建的数据库中创建四个表:
```sql
-- 创建学生表
CREATE TABLE t_student (
SNo CHAR(20) NOT NULL PRIMARY KEY COMMENT '学号',
Sname VARCHAR(50) NOT NULL COMMENT '姓名',
Sex CHAR(2) COMMENT '性别',
class_name CHAR(2) COMMENT '班级名',
FOREIGN KEY (class_name) REFERENCES t_class(class_name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 创建课程表
CREATE TABLE t_course (
CNo CHAR(10) NOT NULL PRIMARY KEY COMMENT '课程编号',
Cname VARCHAR(50) NOT NULL COMMENT '课程名称',
Credit INT COMMENT '学分'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 创建选课成绩表
CREATE TABLE t_scores (
SNo CHAR(20) NOT NULL COMMENT '学号',
CNo CHAR(10) NOT NULL COMMENT '课程号',
grade INT COMMENT '成绩',
PRIMARY KEY (SNo, CNo),
FOREIGN KEY (SNo) REFERENCES t_student(SNo),
FOREIGN KEY (CNo) REFERENCES t_course(CNo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 创建班级表
CREATE TABLE t_class (
class_name CHAR(2) NOT NULL PRIMARY KEY COMMENT '部门编号',
department VARCHAR(50) NOT NULL COMMENT '部门名称',
teacher VARCHAR(20) COMMENT '教师',
classroom VARCHAR(30) COMMENT '教室'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
```
说明:
1. 表名和列名都采用了英文名称,符合要求。
2. 每个表都设置了主键,符合要求。
3. 学生表中的 sex 字段和选课成绩表中的 grade 字段都设置了数据类型,符合要求。
4. 学生表的 class_name 字段和选课成绩表的 SNo 和 CNo 字段都设置了外键约束,参照了班级表的 class_name 字段和课程表的 CNo 字段,符合要求。
5. 课程表添加了 Credit 字段,符合要求。
6. 班级表中的 teacher 和 classroom 字段都没有设置为 NOT NULL,因为数据字典中没有要求,但是仍然按照规范进行了定义。
以下操作基于包含如下3个关系的"学生﹣选课﹣课程"数据库。 学生表 Stu 字段 StlD StName StSex Birthdate CLName Telephone Address 类型 char (10) varchar (20) char (2) datet ime varchar (30) varchar (20) varchar (150) 是否 NULL No No Yes No Yes Yes Yes 备注 学号,主键姓名 性别 出生日期班级名称电话家庭地址 成绩表 SC 字段 St1D CNo Score 类型 char (10) char (10) int 是否 NULL No No Yes 备注 学号,主键课程编号,主键成绩 课程表 Course 字段 类型 CNo char (10) CName varchar (30) CType char (4) CCredit smallint 是否 NULL No No Yes No 备注 课程编号,主键课程名称 课程类型学分 请按以下要求进行查询,写出对应的 T - SQL 语句。 (1)查询家庭地址是湖南省的学生的姓名、性别和班级名称。(2)统计出班级人数在30人及以上的班级名称及人数。 (3)查询考试分数在95分及以上的学生学号、姓名、班级名称、电话号码。 (4)查询已选课的女学生的学号、姓名、课程名和分数。
(1)
SELECT StName, StSex, CLName
FROM Stu
WHERE Address LIKE '%湖南省%';
(2)
SELECT CLName, COUNT(*) AS NumOfStudents
FROM Stu
GROUP BY CLName
HAVING COUNT(*) >= 30;
(3)
SELECT StlD, StName, CLName, Telephone
FROM Stu
INNER JOIN SC ON Stu.StlD = SC.StlD
WHERE Score >= 95;
(4)
SELECT Stu.StlD, Stu.StName, Course.CName, SC.Score
FROM Stu
INNER JOIN SC ON Stu.StlD = SC.StlD
INNER JOIN Course ON SC.CNo = Course.CNo
WHERE Stu.StSex = '女';
阅读全文