删除course表的主键约束
时间: 2023-08-08 13:08:30 浏览: 70
要删除主键约束,可以使用 ALTER TABLE 命令,具体如下:
```
ALTER TABLE 表名 DROP PRIMARY KEY;
```
例如,如果要删除名为 course 的表的主键约束,可以执行以下命令:
```
ALTER TABLE course DROP PRIMARY KEY;
```
执行该命令后,course 表的主键约束将被删除。但需要注意的是,删除主键约束可能会破坏表的完整性,因此在执行该操作之前应该仔细考虑。
相关问题
创建新的数据库,命名为test_system;创建对应数据库表。为每个表建立主键。对course表建立如下约束:course_name非空,credit取值在1-6之间。为相应表创建外键,建立参照完整性约束。修改student和teacher表,分别增加一列用于存储学生和教师的E_mail地址。创建course2表,与course表结构一样,删除course2表。
以下是使用SQL语句来完成您的要求:
1. 创建新的数据库test_system:
```
CREATE DATABASE test_system;
```
2. 连接到test_system数据库,创建对应的表:
```
USE test_system;
-- 创建student表
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(50),
gender VARCHAR(10),
email VARCHAR(100)
);
-- 创建teacher表
CREATE TABLE teacher (
id INT PRIMARY KEY,
name VARCHAR(50),
gender VARCHAR(10),
email VARCHAR(100)
);
-- 创建course表
CREATE TABLE course (
id INT PRIMARY KEY,
course_name VARCHAR(50) NOT NULL,
credit INT,
CONSTRAINT credit_range CHECK (credit >= 1 AND credit <= 6)
);
-- 创建course2表
CREATE TABLE course2 LIKE course;
```
3. 修改course表,添加约束:
```
-- 添加约束
ALTER TABLE course
ADD CONSTRAINT course_name_not_null CHECK (course_name IS NOT NULL);
```
4. 为相应表创建外键,建立参照完整性约束:
```
-- 为student表添加外键
ALTER TABLE student
ADD CONSTRAINT student_course_id_fk FOREIGN KEY (course_id) REFERENCES course(id);
-- 为teacher表添加外键
ALTER TABLE teacher
ADD CONSTRAINT teacher_course_id_fk FOREIGN KEY (course_id) REFERENCES course(id);
```
5. 修改student和teacher表,分别增加一列用于存储学生和教师的E_mail地址:
```
-- 修改student表
ALTER TABLE student
ADD COLUMN email VARCHAR(100);
-- 修改teacher表
ALTER TABLE teacher
ADD COLUMN email VARCHAR(100);
```
6. 删除course2表:
```
DROP TABLE course2;
```
以下内容请分别用SQL语句的两种方式实现并通过相关操作进行验证。 (1)对实验中的几张表建立主键约束(对已创建了主键约束的,请删除后重建);(2)在SC表的Sno字段创建外键约束,引用Student表的Sno字段,要求实现级联删除;(3)在SC表的Cno字段创建外键约束,引用Course表的Cno字段,要求被同学选修的课程不能删除; (4)在SC表的Tno字段创建外键约束,引用Teacher表的教工号字段,要求实现级联更新和删除; (5)在Teacher表上创建Unique约束Unique_TNP,不允许出现姓名和联系电话完全一样的教师记录; (6)在Student表中创建Default约束Df_Ssex,当用户插入学生记录时,如果没有提供性别字段Ssex的值则用“男”填充; (7)在学生表Student中创建CHECK约束CK_Sbirth,以保证用户输入的出生日期字段Sbirth 的值不超过当前日期(可使用系统函数 getdate()获取系统当前日期)。
1. 创建主键约束:
方式一:
```
-- 对Student表的Sno字段创建主键约束
ALTER TABLE Student ADD CONSTRAINT PK_Student_Sno PRIMARY KEY (Sno);
-- 对Course表的Cno字段创建主键约束
ALTER TABLE Course ADD CONSTRAINT PK_Course_Cno PRIMARY KEY (Cno);
-- 对Teacher表的Tno字段创建主键约束
ALTER TABLE Teacher ADD CONSTRAINT PK_Teacher_Tno PRIMARY KEY (Tno);
-- 对SC表的Sno、Cno、Tno字段组成的联合主键创建主键约束
ALTER TABLE SC ADD CONSTRAINT PK_SC PRIMARY KEY (Sno, Cno, Tno);
```
方式二:
```
-- 对Student表的Sno字段创建主键约束
ALTER TABLE Student ADD CONSTRAINT PK_Student_Sno PRIMARY KEY CLUSTERED (Sno);
-- 对Course表的Cno字段创建主键约束
ALTER TABLE Course ADD CONSTRAINT PK_Course_Cno PRIMARY KEY CLUSTERED (Cno);
-- 对Teacher表的Tno字段创建主键约束
ALTER TABLE Teacher ADD CONSTRAINT PK_Teacher_Tno PRIMARY KEY CLUSTERED (Tno);
-- 对SC表的Sno、Cno、Tno字段组成的联合主键创建主键约束
ALTER TABLE SC ADD CONSTRAINT PK_SC PRIMARY KEY CLUSTERED (Sno, Cno, Tno);
```
2. 创建外键约束:
```
-- 在SC表的Sno字段创建外键约束,引用Student表的Sno字段,要求实现级联删除
ALTER TABLE SC ADD CONSTRAINT FK_SC_Sno FOREIGN KEY (Sno) REFERENCES Student(Sno) ON DELETE CASCADE;
-- 在SC表的Cno字段创建外键约束,引用Course表的Cno字段,要求被同学选修的课程不能删除
ALTER TABLE SC ADD CONSTRAINT FK_SC_Cno FOREIGN KEY (Cno) REFERENCES Course(Cno) ON DELETE NO ACTION;
-- 在SC表的Tno字段创建外键约束,引用Teacher表的教工号字段,要求实现级联更新和删除
ALTER TABLE SC ADD CONSTRAINT FK_SC_Tno FOREIGN KEY (Tno) REFERENCES Teacher(Tno) ON UPDATE CASCADE ON DELETE CASCADE;
```
3. 创建Unique约束:
```
-- 在Teacher表上创建Unique约束Unique_TNP,不允许出现姓名和联系电话完全一样的教师记录
ALTER TABLE Teacher ADD CONSTRAINT Unique_TNP UNIQUE (Tname, Tphone);
```
4. 创建Default约束:
```
-- 在Student表中创建Default约束Df_Ssex,当用户插入学生记录时,如果没有提供性别字段Ssex的值则用“男”填充
ALTER TABLE Student ADD CONSTRAINT Df_Ssex DEFAULT '男' FOR Ssex;
```
5. 创建CHECK约束:
```
-- 在学生表Student中创建CHECK约束CK_Sbirth,以保证用户输入的出生日期字段Sbirth 的值不超过当前日期
ALTER TABLE Student ADD CONSTRAINT CK_Sbirth CHECK (Sbirth <= GETDATE());
```