mysql 约束
mysql 约束:
-
约束关键字:not null,unique,primary key,foreign key 和 check;
-
primary key:用于唯一标识当前行的数据,定义主键约束后,该行不能重复;
- primary key 不能重复,而且不能为null,涉及符复合主键也不能为null;
- 一张表,最多只能有一个主键,但是可以复合主键【primary key (字段1,字段2)】;
- 主键的指定方式:
- 字段名 + 类型 + primary key,
- 在表定义以后,写primary key(列名)
-
unique:不能重复,为一值,但是可以放入多个null 值,unique认为null 不是一个具体的数值;
- primary key = unique not null;
- 复合主键的唯一是字段共同判断,单个字段可以重复;
-
foreign key:外键
-
定义从表和主表之间的关系,外键的约束定义在从表上,主表则必须要有primary key或者是unique约束【确保对应唯一】;
-
当定义外键后,插入数据,要求外键数据必须在朱标的主键上存在,或者为null【null,代表数据的不存在或未定义状态】;
-
表的类型是innodb,才支持外键;
-
一旦建立外键关系,主表数据就不能随意删除
-- t20(id, ename 是复合主键) CREATE TABLE t21 ( id INT, ename VARCHAR(255), address VARCHAR(255), FOREIGN KEY(id, ename) REFERENCES t20(id, ename) );
-
-
check:强制行数据必须满足的条件,
- 但是mysql 5.7目前只支持语法校验,但是不会生效;
CREATE TABLE t21 ( id INT, sex CHAR(1) CHECK(sex in('男','女')), ename VARCHAR(255), address VARCHAR(255), );
-
null的基本特性
- 不可比较性,
NULL
与任何值(包括另一个NULL
)比较时,结果不是TRUE
或FALSE
,而是 UNKNOWN。- 需要
IS NULL
/IS NOT NULL
进行判断;
- 需要
- 在聚合函数中,(如
SUM
,AVG
,COUNT
等)会忽略NULL
值; NULL
参与逻辑运算(如AND
/OR
)时,可能导致意外结果;- 与空值的区别:
NULL
是“无值”,而空字符串''
或 0 是具体的值
- 不可比较性,
-
自增长
-
自增长默认是从1开始,也可以自己设置;
CREATE TABLE asc_( id INT PRIMARY KEY AUTO_INCREMENT, ename VARCHAR(255) ); ALTER TABLE asc_ AUTO_INCREMENT = 100;
-
修饰字段最好是整数;
-
一般和 primary key 或者 unique 配合使用;
-
如果添加数据,则以添加数据为准,但下次以当前列的最大值 + 1进行自增长;
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!