约束
一、约束
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

浙公网安备 33010602011771号