MySQL——约束/外键约束

        约束是作用于表中字段的规则,用于限制存储在表中的数据,为了保证数据库的正确性,有效性和完整性。

外键的类型:

        NOT NULL(非空约束):限制字段的数据不能为NULL。如姓名,年龄。

        UNQUE(唯一约束):保证字段的所有数据都是唯一,不重复的。如身份证号、手机号 

        PRIMARY KEY(主键约束):主键是一行数据的唯一标识,要求非空且唯一。如ID编号

        DEFAULT(默认约束):保存数据时,如果没用指定该字段的值,则采用默认值。如设置默认时间

        CHECK(检查约束):保证字段值满足某一个条件。

        FORELGN KEY(外键约束):用来让两张表的数据之间建立连接,保证数据的一致性和完整性。

实例:

字段名字段含义字段类型约束条件约束关键字
idID唯一标识int主键,自动增长PRINMARY KEY,AUTO_INCREMENT
name姓名varchar(10)不为空,唯一NOT NULL,UNIQUE
age年龄int大于18,小于60CHECK
gender性别char(1)
time_day入职时间date默认为当天时间DEFAULT

create table user(
    id int PRIMARY KEY AUTO_INCREMENT COMMENT 'ID唯一标识',
    name varchar(10) NOT NULL UNIQUE COMMENT '姓名',
    age int CHECK ( age>18 && age<60 ) COMMENT '年龄',
    gender char(1) COMMENT '性别',
    time_day DATE DEFAULT '2024-09-01' COMMENT '入学时间'
)COMMENT '学生登记表';

        以上解释根据需求的建表语句,下面为字段插入如下数据。

insert into user (name,age,gender,time_day)
    VALUES ('张三','20','男','2024-09-02'),
        ('李四','16','男','2024-09-02'),
        ('王老五','19','男','2024-09-01'),
        (null,'20','女','2024-09-02');

        数据1:满足所设置的约束条件,所以可以插入数据。

        数据2:年龄不满足检查约束设置的值,所以数据不插入,但是ID会增加1。

        数据3:满足所设置的约束条件,所以可以插入数据,ID为3。

        数据4:姓名设置了非空,所以不满足条件。

外键:用来让两张表的数据之间建立连接,从而保证数据的一致性个完整性

        添加外键:

CREATE TABLE <表名>(
    <字段名> <数据类型>,
    ...
    [CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名)  REFERENCES <主表>(主表列名)
);

        或者

ALTER TABLE <表名> 
    ADD CONSTRAINT <外键名称> 
    FOREIGN KEY(外键字段名) 
    REFERENCES <主表>(主表名);

        删除外键

ALTER TABLE <表名> DROP FOREIGN KEY <外键名称>;

 外键约束:    

        约束行为:   可以在添加外键后面添加ON UPDATE <行为> ON DELETE <行为>

行为说明
NO ACTION当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许更新/删除。

RESTRICCT

当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许更新/删除。
CASCADE当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则也更新/删除对应外键
SET NULL当父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该该外键值为NULL
SET DEFAULT父表有变更时,子表将设置成一个默认值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值