添加约束(参照完整性约束)
ALTER TABLE <表名>
ADD CONSTRAINT<约束名>
例子:
ALTER TABLE students
ADD CONSTRAINT FK_Mno FOREIGN KEY(Mno)
REFERENCES major(Mno)
ON UPDATE CASCADE;
删除约束
ALTER TABLE<表名>
DROP CONSTRAINT <约束名>
例子:
ALTER TABLE students
DROP CONSTRAINT FK_Mno;
域完整性约束
唯一性约束
*作用
* 限定某个属性列的值不能重复*关键字
*UNIQUE
*特点
*同一个表可以有多个唯一性约束
* 唯一性约束可以是某一个列的值唯一,也可以多个列组合的值唯一
*唯一性约束允许列值为空
*MySOL会给唯一约束的列上默认创建一个唯一索引
唯一性约束
*添加声明
ALTER TABLE <表名>
MODIFY <属性列名> <数据类型> UNIQUE:
或者
ALTER TABLE <表名>
ADD [CONSTRAINT <约束名>]UNIQUE KEY(属性列表)
*删除声明
ALTER TABLE <表名>DROPINDEX<唯一索引名>;
DEFAULT约束
*作用
给某个字段/某列指定默认值,一旦设置默认值,在插入数据时,如果此*字段没有显式赋值,则赋值为默认值*关键字
*DEFAULT
*特点
* 默认值约束一般不在唯一键和主键列上加
DEFAULT约束
添加声明*
ALTER TABLE <表名>
MODIFY <属性列名> <数据类型> DEFUALT 默认值*删除声明
ALTER TABLE <表名>
MODIFY <属性列名> <数据类型>
(check)l
CHECK约束
添加声明*
ALTER TABLE <表名>
MODIFY <属性列名> <数据类型> CHECK(布尔表达式)
或者ALTER TABLE <表名>
ADD[CONSTRAINT <约束名>] CHECK(布尔表达式)
删除声明*
ALTER TABLE <表名>DROP CONSTRAINT <约束名>
例题:"① 在学生表中增加CHECK约束:Sno的长度必须为10个字符长度;② 分别向学生表中添加一条正确的学生信息和一条错误的学生信息,验证CHECK约束是否能正确执行。"
MySQL语句(6分)
① CHECK约束
ALTER TABLE Students
ADD CONSTRAINT CHK_LenSno CHECK (CHAR_LENGTH(Sno)=10);
② 错误信息验证
INSERT INTO Students(Sno,Sname)
VALUES ('202311','李四');
例题2:
请写出下列操作的SQL语句:"在教师表中增加CHECK约束:
若教师的职称是教授,则其工资Tsal要在3500元以上;
若教师的职称是副教授,则其工资要在2600元到3500元之间;
若教师的职称是讲师,则其工资要在1600元到2600元之间;
若教师的职称是助教,则其工资要在800元到1600元之间。"
ALTER TABLE Teachers
ADD CONSTRAINT CHK_Tprof_Tsal
CHECK (Tprof = '教授' and Tsal > 3500
OR Tprof = '副教授' and Tsal BETWEEN 2600 AND 3500
OR Tprof = '讲师' and Tsal BETWEEN 1600 AND 2600
OR Tprof = '助教' and Tsal BETWEEN 800 AND 1600);