约束

一、约束

1. 非空约束 NOT NULL

在一个已创建的表的 Age 字段中添加 NOT NULL 约束如下所示:

ALTER TABLE `Persons`
MODIFY `Age` int NOT NULL;

2. 唯一约束 UNIQUE

2.1 ALTER TABLE 时的 UNIQUE 约束
当表已被创建时,在 P_Id 列创建 UNIQUE 约束:

ALTER TABLE `Persons`
ADD UNIQUE(`P_Id`)

当表已被创建时,需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束:

ALTER TABLE `Persons`
ADD CONSTRAINT uc_PersonID UNIQUE (`P_Id`,`LastName`)

2.2 撤销 UNIQUE 约束
如需撤销 UNIQUE 约束 :

MySQL:
ALTER TABLE `Persons`
DROP INDEX uc_PersonID
SQL Server / Oracle / MS Access:
ALTER TABLE `Persons`
DROP CONSTRAINT uc_PersonID

3. 主键约束 PRIMARY KEY

3.1 添加 PRIMARY KEY

ALTER TABLE `Persons`
ADD PRIMARY KEY (`P_Id`)

如需命名并定义多个列的 PRIMARY KEY 约束,可以使用下面的 SQL 语法:

ALTER TABLE `Persons`
ADD CONSTRAINT pk_PersonID PRIMARY KEY (`P_Id`,`LastName`)

3.2 撤销 PRIMARY KEY

MYSQL:
ALTER TABLE `Persons`
DROP PRIMARY KEY
SQL Server / Oracle / MS Access:
ALTER TABLE `Persons`
DROP CONSTRAINT pk_PersonID

在创建数据表时,因为数据库工作人员忘记添加主键约束,现在我们需要对课程表 courses 添加主键约束,将 id 列设置为主键,请编写相应的 SQL 语句。

ALTER TABLE `courses`
ADD PRIMARY KEY (`id`);

请编写 SQL 语句,删除课程表 courses 中的主键约束

ALTER TABLE courses
DROP PRIMARY KEY;

4. 外键约束 FOREIGN KEY

4.1 ALTER TABLE 时的 SQL FOREIGN KEY 约束
当 "Orders" 表已被创建时,如需在 "P_Id" 列创建 FOREIGN KEY 约束:

ALTER TABLE `Orders`
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束:

ALTER TABLE `Orders`
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

4.2 撤销 FOREIGN KEY 约束
👇我们可以通过下面的实例来感受一下如何删除 FOREIGN KEY 约束。
如需撤销 FOREIGN KEY 约束:

MySQL:
ALTER TABLE `Orders`
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Acces:
ALTER TABLE `Orders`
DROP CONSTRAINT fk_PerOrders

请编写 SQL 语句,为课程表 courses 中的 teacher_id 添加外键约束,使之能与教师表 teachers 中的 id 相关联。

alter table courses 
add foreign key(teacher_id)
references teachers (id);

5. 检查约束 CHECK

5.1 表已存在时添加 CHECK 约束
课程表 courses 已存在的情况下为学生总数 student_count 字段添加一个大于 0 的 CHECK 约束。

ALTER TABLE `courses` 
ADD CHECK ( `student_count` > 0);
或
ALTER TABLE `courses`  
ADD CONSTRAINT chk_courses CHECK ( `student_count` > 0 AND `teacher_id` > 0);

5.2 撤销 CHECK 约束
如果想要撤销 CHECK 约束,可以使用 DROP 关键字。

MYSQL:
ALTER TABLE `courses` 
DROP CHECK chk_courses
SQL Server / Oracle / MS Access:
ALTER TABLE `courses` 
DROP CONSTRAINT chk_courses

6. DEFAULT 约束

6.1 ALTER TABLE 时的 DEFAULT 约束
👇如果表已被创建时,想要在 City 列创建 DEFAULT 约束,请使用下面的 SQL:

MYSQL:
ALTER TABLE `Persons`
ALTER `City` SET DEFAULT 'SANDNES'
SQL Server / MS Access:
ALTER TABLE `Persons`
ADD CONSTRAINT ab_c DEFAULT 'SANDNES' for `City`

6.2 撤销 DEFAULT 约束
👇如需撤销 Persons表的 DEFAULT 约束 :

MYSQL:
ALTER TABLE `Persons`
ALTER `City` DROP DEFAULT
SQL Server / Oracle / MS Access:
ALTER TABLE `Persons`
ALTER COLUMN `City` DROP DEFAULT
posted @ 2023-11-05 16:11  粥粥alg  阅读(51)  评论(0)    收藏  举报