sql完整性约束(实体完整性约束,参照完整性约束,域完整性约束)

添加约束(参照完整性约束)

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);

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值