(1)创建student表,同时定义其实体完整性(不考虑该表的其他约束)
时间: 2023-07-16 17:15:24 浏览: 172
这里是一个示例SQL语句,可以创建一个名为"student"的表,并定义其实体完整性:
```
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT NOT NULL,
gender CHAR(1) NOT NULL CHECK (gender IN ('M', 'F')),
major VARCHAR(50) NOT NULL
);
```
在上述SQL语句中,我们定义了一个名为"student"的表,并为其定义了以下列:
- id:学生的ID,为整数类型,同时被指定为主键。
- name:学生的姓名,为字符串类型,同时被指定为非空字段。
- age:学生的年龄,为整数类型,同时被指定为非空字段。
- gender:学生的性别,为字符类型,只能输入'M'或'F',同时被指定为非空字段。
- major:学生的专业,为字符串类型,同时被指定为非空字段。
其中,gender列的CHECK约束用于确保只有'M'或'F'两种性别可以被插入该列中。这是实体完整性的一种体现,可以防止不合法的数据插入到该列中。
相关问题
通过SQL语言, 建立数据库中表的基本约束: a)实体完整性:分别定义Student表、Course表、SC表的主码 b)参照完整性:定义SC表的外码 c)用户自定义完整性:非空约束、唯一性约束
好的,我来回答你的问题。
a) 实体完整性是指一个表中的每一行都能被唯一地标识,通常通过定义主键来实现。下面是在SQL语言中定义Student表、Course表、SC表的主键的示例:
```sql
-- 定义Student表的主键
ALTER TABLE Student ADD PRIMARY KEY (sno);
-- 定义Course表的主键
ALTER TABLE Course ADD PRIMARY KEY (cno);
-- 定义SC表的主键
ALTER TABLE SC ADD PRIMARY KEY (sno, cno);
```
b) 参照完整性是指在一个表中定义的外键必须引用另一个表中的主键。下面是在SQL语言中定义SC表的外键的示例:
```sql
-- 定义SC表的外键,引用Student表和Course表的主键
ALTER TABLE SC ADD FOREIGN KEY (sno) REFERENCES Student(sno);
ALTER TABLE SC ADD FOREIGN KEY (cno) REFERENCES Course(cno);
```
c) 用户自定义完整性是指在表中定义非空约束、唯一性约束等,以保证数据的完整性和一致性。下面是在SQL语言中定义非空约束、唯一性约束的示例:
```sql
-- 定义Student表的非空约束
ALTER TABLE Student MODIFY COLUMN sno CHAR(10) NOT NULL;
ALTER TABLE Student MODIFY COLUMN sname VARCHAR(20) NOT NULL;
-- 定义Course表的唯一性约束
ALTER TABLE Course ADD UNIQUE (cname);
```
有学生-课程模式 S-T : 学生表:Student(Sno,Sname,Ssex,Sage,Sdept); 课程表:Course(Cno,Cname,Cpno,Ccredit); 学生选课表:SC(Sno,Cno,Grade)。 用SQL语言定义上述关系模式(属性数据类型及长度根据经验值设置),给出实体完整性、参照完整性约束定义,自定义完整性要求成绩Grade按五级制记载(A、B、C、D、E)
学生表:
```
CREATE TABLE Student (
Sno CHAR(10) PRIMARY KEY,
Sname VARCHAR(20) NOT NULL,
Ssex CHAR(2) CHECK (Ssex IN ('男', '女')),
Sage INT CHECK (Sage > 0),
Sdept VARCHAR(20) NOT NULL
);
```
课程表:
```
CREATE TABLE Course (
Cno CHAR(10) PRIMARY KEY,
Cname VARCHAR(20) NOT NULL,
Cpno CHAR(10) DEFAULT NULL,
Ccredit INT CHECK (Ccredit >= 0 AND Ccredit <= 10),
FOREIGN KEY (Cpno) REFERENCES Course(Cno) ON DELETE SET NULL
);
```
学生选课表:
```
CREATE TABLE SC (
Sno CHAR(10),
Cno CHAR(10),
Grade CHAR(1) CHECK (Grade IN ('A', 'B', 'C', 'D', 'E')),
PRIMARY KEY (Sno, Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno) ON DELETE CASCADE,
FOREIGN KEY (Cno) REFERENCES Course(Cno) ON DELETE CASCADE
);
```
其中,实体完整性约束由主键和非空约束保证;参照完整性约束由外键保证;自定义完整性约束由 CHECK 约束保证。在学生选课表中,使用了联合主键,以保证一个学生不能重复选同一门课程。同时,设置了 ON DELETE CASCADE,以保证删除学生或课程时,对应的选课记录也被删除。
阅读全文