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 `