芜湖建站公司,阿里云网站备案流程,兰州网络推广方案,广州建网站兴田德润很好个人简介#xff1a;Java领域新星创作者#xff1b;阿里云技术博主、星级博主、专家博主#xff1b;正在Java学习的路上摸爬滚打#xff0c;记录学习的过程~ 个人主页#xff1a;.29.的博客 学习社区#xff1a;进去逛一逛~ 约束 ⑦【MySQL】约束条件1. 约束的基本使用2.… 个人简介Java领域新星创作者阿里云技术博主、星级博主、专家博主正在Java学习的路上摸爬滚打记录学习的过程~ 个人主页.29.的博客 学习社区进去逛一逛~ 约束 ⑦【MySQL】约束条件1. 约束的基本使用2. 外键约束 ⑦【MySQL】约束条件 1. 约束的基本使用
约束 什么是约束 约束是作用于表中字段上的规则用于限制存储在表中的数据。 约束的作用 保证数据库中数据的正确性、有效性和完整性。 约束分类 ①非空约束 —— 限制该字段的数据不能为null NOT NULL②唯一约束 —— 保证该字段的所有数据都是唯一、不重复的 UNIQUE③主键约束—— 主键是一行数据的唯一标识要求非空且唯一 PRIMARY KEY④默认约束—— 保存数据时未指定该字段的值则采用默认值 DEFAULT⑤检查约束(8.0.16版本之后)—— 保证字段满足某一条件 CHECK⑥外键约束—— 用来让两证表的数据之间建立连接保证数据的一致性和完整性 FOREIGN KEY⑦自增约束 AUTO_INCREMENT-- 案例/*
创建表
ID唯一标识id、int、主键且自增
姓名name、varchar(10)、不为空且唯一
年龄age、int、大于0且小于等于120
状态status、char(1)、默认值为1
性别gender、char(1)、无约束条件
*/
CREATE TABLE test(id INT COMMENT id唯一标识 PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(10) COMMENT 姓名 UNIQUE NOT NULL,age INT COMMENT 年龄 CHECK(age BETWEEN 1 AND 120),STATUS CHAR(1) COMMENT 状态 DEFAULT 1,gender CHAR(1) COMMENT 性别
);-- 查看表结构
DESC test;-- 向表中插入数据自增字段可以不指定会按123...n顺序自动填充
INSERT INTO test(NAME,age,STATUS,gender) VALUES
(小一,18,1,男);-- 当设置唯一约束的字段name插入不唯一数据时会报错
-- 错误代码 1062 Duplicate entry 小一 for key test.name
INSERT INTO test(NAME,age,STATUS,gender) VALUES
(小一,22,1,女);-- 当设置非空约束的字段name插入null值会报错
-- 错误代码 1048 Column name cannot be null
INSERT INTO test(NAME,age,STATUS,gender) VALUES
(NULL,22,1,女);-- 当设置了检查约束的age字段插入不符合检查条件的数据会报错
-- 错误代码 3819 Check constraint test_chk_1 is violated.
INSERT INTO test(NAME,age,STATUS,gender) VALUES
(小二,-1,1,女);-- 当插入数据时没有为默认约束字段status设置值会自动设置默认值1
INSERT INTO test(NAME,age,gender) VALUES
(小三,66,女);2. 外键约束
如何添加外键约束 方式一(在创建表时指定外键约束) CREATE TABLE 表名(字段名 数据类型,...[CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名) REFERENCES 主表(主表字段名)
);方式二(在修改表时添加外键约束) ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCES 主表(主表字段名); 外键的删除/更新行为 NO ACTION在父表进行更新/删除时首先检查记录是否存在外键存在则不允许删除/更新。与RESTRICT行为一致 RESTRICT在父表进行更新/删除时首先检查记录是否存在外键存在则不允许删除/更新。与NO ACTION行为一致 CASCADE在父表进行更新/删除时首先检查记录是否存在外键存在则同时对外键关联的子表进行相应的更新/删除 SET NULL在父表进行更新/删除时首先检查记录是否存在外键存在则将外键关联的字段值设置为null前提是外键关联字段可以为null SET DEFAULT在父表进行更新/删除时首先检查记录是否存在外键存在则将外键关联的字段值设置为一个默认值Innodb不支持 添加外键约束时指定更新行为 ALTER TABLE 表名 ADD
CONSTRAINT 外键名称
FOREIGN KEY(外键字段名) REFERENCES 主表(主表字段名)
ON UPDATE CASCADE ON DELETE CASCADE;
-- 将更新行为设定为CASCADE、将删除行为设定为CASCADE。
-- 指定何种更新/删除行为以实际为准这里提供设定为CASCADE方式二的参考。
-- 除了在修改表时添加外键约束并设定更新/删除行为还可以在新增表时方式一添加并设置。