关于mysql:MySQL-字段约束

1次阅读

共计 1105 个字符,预计需要花费 3 分钟才能阅读完成。

字段束缚

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

  • 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

正文完
 0