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