Mysql实战常用约束

Mysql约束

* 概念:对表中的数据进行限定,保证数据的正确性、完整性、有效性。
* 分类:
    1. 主键约束:primary key
    2. 非空约束:not null
    3. 唯一约束:unique
    4. 外键约束:foreign key     

约束详解

2. 非空约束:NOT NULL
    * 在创建表时,在字段类型后面加上即可
        * `NAME  VARCHAR(20) NOT NULL`
    * 还可以在创建表之后添加约束
        * `ALTER TABLE 表名 MODIFY 字段名 字段类型 NOTNULL`
    * 删除表中字段的非空约束:
        * `ALTER TABLE 表名 MODIFY 字段名 字段类型`
        
3. 唯一约束:unique,值不能重复
    * 在创建表时,在字段类型后面加上即可
    * `NAME  VARCHAR(20) unique`
    -- 注意:Mysql中唯一约束可以有多个null(表示不确定)
    * 还可以在创建表之后添加约束
        * `ALTER TABLE  表名 DROP INDEX 字段名 字段类型 unique`
    * 删除表中字段唯一约束:
        * `ALTER TABLE  表名 DROP INDEX 字段名`
        
1. 主键约束:PRIMARY KEY
    1. 含义:非空且唯一
    2. 一张表只能有一个字段为主键
    3. 主键就是一张表中记录的唯一标识
    * 在创建表时,在字段类型后面加上即可
        * `ID  INT PRIMARY KEY`
    * 删除主键:(因为一个表只有一个主键)
        * `ALTER TABLE 表名 DROP PRIMARY KEY `
    * 创建完表之后添加主键
        * `ALTER TABLE 表名 MODIFY 字段名 PRIMARY KEY`
    -- 自动增长:
        * 概念:如果某一列是数值类型的,可以使用 auto_increment 来完成自动增长(一般配合主键使用)
        * 创建表时添加
            * `ID  INT PRIMARY KEY AUTO_INCREMENT`
            * 注意:自动增长之后上一条记录有关系
        * 删除表中字段的自动增长:
            * `ALTER TABLE 表名 MODIFY 字段名 字段类型`
        * 添加表中字段的自动增长:
            * `ALTER TABLE 表名 MODIFY 字段名 字段类型 AUTO_INCREMENT`
        
4. 外键约束:FOREIGN KEY  让表与表之间产生关系,从而保证数据的正确性
    1. 在创建表时可以添加外键
        * `CONSTRAINT 外键名称 FOREIGN KEY (外键列名称) REFERENCE 主表名称(关联字段名称) `
    2. 删除外键
        * `ALTER TABLE 表名 DROP FOREIGN KEY 外键名称` 
    3. 创建表之后添加外键 
        *  `ALTER TBALE  ADD CONSTRAINT 外键名称 FOREIGN KEY (外键列名称) REFERENCE KEY 主表(关联字段名)`
        * 如果执行出错:错误代码:1452 
            * 检查主表关联从表的列数据,在从表中是否存在,不存在的删除,重新执行SQL语句即可。
 
5. 级联操作(联动操作):在修改从表的数据时,主表自动更改关联数据
    1. 在设置外键时设置级联更新。
        * `ALTER TBALE  ADD CONSTRAINT 外键名称 FOREIGN KEY (外键列名称) REFERENCE KEY 主表(关联字段名)ON UPDATE CASCADE `
    2. 级联删除:从表相关联的主表数据一起删除 (可以和级联更新同时使用)(===慎用===)
        * `ALTER TBALE  ADD CONSTRAINT 外键名称 FOREIGN KEY (外键列名称) REFERENCE KEY 主表(关联字段名)ON UPDATE CASCADE ON DELETE CASCADE `
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值