MySQL 字段约束

字段约束 目的:保证数据的:有效性、完整性、正确性。
分类:

  • not null: 非空约束 此列不为null 必须提供
  • unique: 唯一约束 此列的值不能重复
  • primary key: 主键约束 唯一标一条数据
  • foreign key: 外键约束 建立不同表之间的关系
非空约束&唯一约束
【MySQL 字段约束】not null: 非空约束 此列不为null 必须提供
例如下面带有not null或者带有unique的字段:
CREATE TABLE students( -> stu_num char(8) not null unique, -> stu_name varchar(20) not null, -> stu_age int not null, -> stu_tel char(11) not null unique, -> stu_qq varchar(11) unique -> );

主键约束
一张数据表只能有一个主键,不过一个主键可以有多个列组成(联合主键),另外,主键一定非空且唯一,所以设置主键之后,该字段就没必要加非空和唯一约束了,比如:
写法一:
CREATE TABLE students( -> stu_num char(8) not null primary key, -> stu_name varchar(20) not null, -> stu_age int not null, -> stu_tel char(11) not null unique, -> stu_qq varchar(11) unique -> );

写法二:
CREATE TABLE students( -> stu_num char(8) not null, -> stu_name varchar(20) not null, -> stu_age int not null, -> stu_tel char(11) not null unique, -> stu_qq varchar(11) unique, -> primary key(stu_num) -> );

创建表之后添加主键约束
用modify
ALTER table stus modify stu_num char(4) primary key

主键自动增长
CREATE tabletypes( type_id int primary key auto_increment, type_name varchar(20) not null, )

注意:自动增长从1开始, 每天夹一条记录,计数器+1,删除某条记录后,计数器不会更新,所以自增只保证唯一性,不保证连续性。
联合主键(使用频率低)
将数据表中的多个字段组合在一起
CREATE table grades( stunum char(8), course_id int, score int, primary key(str_num, course_id )

外键约束
后面多表关联再展开
参考:bilibili

    推荐阅读