有三个关系模式: Student(sno varchar(10) 主键,sname varchar(8), ssex varchar(2) 默认为‘男’, sage int 介于20到30之间, sdept varchar(20)); Course(cno varchar(5) 主键, cname varchar(20) 唯一, cpno varchar(5), credit int); SC(sno varchar(10) 主键,Student表的外键, cno varchar(5) 主键,Course表的外键, grade int)。 数据库的完整性 (1)利用SQL语句创建上述3个基本表。 (2)删除Student表的关于sage 20到40的约束
时间: 2023-12-12 07:04:06 浏览: 281
以下是 SQL 语句实现:
1. 利用 SQL 语句创建上述 3 个基本表
```sql
-- 创建 Student 表
CREATE TABLE Student (
sno VARCHAR(10) PRIMARY KEY,
sname VARCHAR(8),
ssex VARCHAR(2) DEFAULT '男',
sage INT CHECK (sage >= 20 AND sage <= 30),
sdept VARCHAR(20)
);
-- 创建 Course 表
CREATE TABLE Course (
cno VARCHAR(5) PRIMARY KEY,
cname VARCHAR(20) UNIQUE,
cpno VARCHAR(5),
credit INT
);
-- 创建 SC 表
CREATE TABLE SC (
sno VARCHAR(10) REFERENCES Student(sno),
cno VARCHAR(5) REFERENCES Course(cno),
grade INT,
PRIMARY KEY (sno, cno)
);
```
2. 删除 Student 表的关于 sage 20 到 40 的约束
```sql
ALTER TABLE Student DROP CONSTRAINT constraint_name;
```
其中,`constraint_name` 是需要删除的约束名称,您可以通过以下 SQL 语句查询出该约束的名称:
```sql
SELECT name FROM sys.constraints WHERE parent_object_id = OBJECT_ID('Student') AND type_desc = 'CHECK' AND definition LIKE '%[Ss]age%[2-4][0-9]%'
```
该 SQL 语句会查询出 Student 表中 Sage 20 到 40 的约束名称,您可以将查询结果中的 `name` 替换到第一个 SQL 语句中的 `constraint_name` 中执行即可删除该约束。需要注意的是,执行删除操作前请先备份数据以避免误操作导致数据丢失。
阅读全文