资讯中心

SQL 字段约束笔记

📅 2026/8/2 5:24:25
SQL 字段约束笔记
一、约束介绍约束作用在建表时给字段添加规则限制表中数据保证数据的完整性、合法性。MySQL 常用约束not null非空约束unique唯一约束primary key主键约束auto_increment主键自增联合主键多个字段共同作为主键foreign key外键约束二、非空约束not null规则被修饰的字段不能为 null插入数据时必须提供值。createtableuser(idint,namevarchar(20)notnull);说明插入数据时 name 不能不赋值不能写入 null。三、唯一约束unique规则当前字段所有数据不能重复允许存在一个 null。createtableuser(idint,phonevarchar(11)unique);注意区分unique允许 null主键不允许 null。四、主键约束primary key主键 唯一约束 非空约束特点字段不能重复不能为 null一张表只能有一个主键-- 单列主键写法createtableuser(idintprimarykey,namevarchar(20));主键自增auto_increment搭配整数主键使用新增数据时自动生成递增数字无需手动赋值。createtableuser(idintprimarykeyauto_increment,namevarchar(20));五、联合主键概念多个字段组合在一起共同充当主键规则多个字段组合整体不能重复单独字段可以重复。一张表依旧只能设置一组主键。createtablestudent_course(student_idint,course_idint,primarykey(student_id,course_id));示例理解学生id 课程id联合主键同一个学生可以选多门课同一课程可以被多个学生选但【学生课程】组合不能重复。六、外键约束foreign key作用维护多张表之间关联关系保证引用数据合法。子表从表设置外键的表父表主表被引用的表被引用列必须为主键-- 主表createtabledept(dept_idintprimarykey,dept_namevarchar(20));-- 从表建立外键关联createtableemp(emp_idintprimarykeyauto_increment,emp_namevarchar(20),d_idint,foreignkey(d_id)referencesdept(dept_id));⚠️ 开发重要提示互联网项目极少使用外键约束。外键会降低插入、删除性能线上项目一般在业务代码层面控制关联逻辑。七、约束对比小结约束关键字是否允许null是否允许重复非空约束not null❌ 不允许✅ 允许重复唯一约束unique✅ 允许1个null❌ 不可重复主键约束primary key❌ 不允许❌ 不可重复