likes
comments
collection
share

MySQL 字段约束

作者站长头像
站长
· 阅读数 22

字段约束

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

  • not null: 非空约束 此列不为null 必须提供
  • unique: 唯一约束 此列的值不能重复
  • primary key: 主键约束 唯一标一条数据
  • foreign key: 外键约束 建立不同表之间的关系

非空约束&唯一约束

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

转载自:https://segmentfault.com/a/1190000041918986
评论
请登录