表的约束用于保证数据库中数据的准确性,本质是通过技术手段强制程序员插入正确的数据。
一、非空约束
字段值默认为 NULL,实际开发中建议尽可能设置为 NOT NULL,因为空值无法参与运算。
NULL 表示什么都没有,'' 表示有值但为空字符串。

二、Default 约束
DEFAULT 类似于 C++ 的缺省值。若未设置 DEFAULT 和 NOT NULL,默认 DEFAULT NULL;若设置了 NOT NULL,则不会有 DEFAULT NULL。

三、Comment 列描述
列描述即注释,用于说明字段含义。

四、ZeroFill 约束
INT(10) 配合 ZEROFILL 使用时,不足 10 位的数字会用 0 补充显示。

五、主键约束
主键(PRIMARY KEY)唯一约束字段数据,不能重复且不能为空。一张表只能有一个主键,通常为整数类型。 去除主键:
ALTER TABLE table_name DROP PRIMARY KEY;
添加主键:
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
复合主键:多列共同组成主键,仅当这几列同时与过往数据相同时才产生冲突。

六、Auto Increment 约束
AUTO_INCREMENT 字段在插入时不给值,系统会自动从当前最大值 +1 生成新值。通常与主键搭配作为逻辑主键。
特点:
- 必须是索引(Key 栏有值)。
- 必须是整数。
- 一张表最多只能有一个自增长字段。 自定义自增长值:
ALTER TABLE table_name AUTO_INCREMENT = value;
查看最后一次的插入自增长值:
SELECT LAST_INSERT_ID();

七、唯一键
主键不能为空,唯一键可以为空(NULL 不参与计算)。一张表只能有一个主键,但可以有多个唯一键。

八、外键
外键定义表与表之间的关系,主要定义在从表上。主表必须有主键或 UNIQUE 约束。定义外键后,外键列数据必须在主表的主键列存在或为 NULL。 创建外键示例:
ALTER TABLE child_table ADD CONSTRAINT fk_name FOREIGN KEY (child_col) REFERENCES parent_table(parent_col);


