MySQL字段约束和主键



1.MySQL的字段约束

char(x),varchar(x),int(x)
-- char(x),varchar(x): 字符串的长度
-- int(x):此处 x 没有意义,默认无符号的int为int(11),有符号的的为int(10)
-- int(x) unsigned zerofill 设置前导零时,int(x)的宽度才有意义

not null
-- 参数不能为null,如果为null则引发异常

unsigned, unsigned zerofill
-- 所有数值类型数据(除了bit和boolean)都可以有符号或无符号,默认为有符号
-- 有符号数值列可以存储正数或负数,无符号数值列只能存储正数
-- unsigned zerofill 将在参数前面用 0 填充直至达到指定长度

primary key
-- 主键,不能为null,且唯一

auto_increment
-- 定义字段为自增属性,数值会自动加1

default
-- 设置默认值

unique
-- 唯一索引,值不能重复,可以增加检索速度但是会降低插入和更新速度


2.主键

table中每一行都应该有可以唯一标识自己的一列
应该总是定义主键,虽然并不总是需要主键,但应该保证创建的每一个table具有一个主键,以便以后的数据操作和管理

1.一条记录一旦插入table中,主键最好不要再修改
2.主键不允许为 null
3.不要使用可能会被更改的值作为主键

-- 自增整数类型:数据库会在插入数据时自动为每一条记录分配一个自增整数,这样主键就不用预先设置,值也不会重复
--可以使用多个字段列作为联合主键,但所有列值的组合必须是唯一的
``