字段束缚
目标:保证数据的:有效性、完整性、正确性。
分类:
- 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