"《数据库系统概论》第三章的例题主要涉及了关系数据库的基本概念,包括数据定义、完整性约束以及关系模型的实现。通过创建`student`、`course`和`sc`三个表,展示了如何在SQL中定义数据结构,并确保数据的完整性和一致性。"
在这段内容中,我们可以深入探讨以下几个重要的数据库知识点:
1. **数据定义语言 (DDL)**: DDL用于创建和修改数据库对象,如表、索引等。在示例中,`CREATE TABLE`语句就是DDL的一部分,用于定义表格结构。
2. **表结构定义**: `student`、`course`和`sc`表的定义包含了各列的数据类型、长度、是否允许为空(`NOT NULL`)、默认值(`DEFAULT`)以及完整性约束。
- `student`表包含学生编号(`sno`)、姓名(`sname`)、性别(`ssex`)、年龄(`sage`)和专业(`sdept`)。其中,`sno`为主键,`sname`不允许为空,`ssex`有默认值且只能为'男'或'女',`sage`的取值范围为15至45。
- `course`表包含课程编号(`cno`)、课程名(`cname`)、先修课程编号(`cpno`)和学分(`ccredit`),`cno`为主键。
- `sc`表记录学生选课信息,包括学生编号(`sno`)、课程编号(`cno`)和成绩(`grade`)。`sno`和`cno`共同构成复合主键,同时它们也是外键,分别引用`student`和`course`表的主键。
3. **完整性约束**:
- **实体完整性**:主键约束(`PRIMARY KEY`)确保了每个表的主键字段具有唯一且非空的值。例如,`student`和`course`表的主键分别是`sno`和`cno`。
- **参照完整性**:外键约束(`FOREIGN KEY`)确保了引用的字段值必须存在于被引用表的主键中。在`sc`表中,`sno`和`cno`都是外键,分别引用`student`的`sno`和`course`的`cno`。
- **域完整性**:`CHECK`约束限制了字段值的范围。如`ssex`的取值仅限于'男'或'女',`sage`的取值需在15到45之间,`grade`的取值需在0到100之间。
4. **数据插入**:`INSERT INTO`语句用于向表中插入数据。示例中展示了向`student`和`course`表插入学生和课程记录的过程。
这些知识点构成了关系数据库的基础,包括如何设计合理的数据库模式,确保数据的完整性和一致性,以及如何操作数据进行插入。在实际的数据库管理系统中,这样的设计和操作是创建和管理数据库的核心内容。