MySQL笔记——表的约束

空属性

name varchar(20) not null

默认值

age tinyint unsigned default 0

默认值生效:数据在插入的时候不给该字段赋值,就使用默认值

列描述

sex char(2) default '男' comment '性别'

desc tablename    //查看不到注释信息

show create table tablename    //可以看到

zerofill属性

如果宽度小于设定的宽度,自动填充0

主键

  • 创建表的时候直接在字段上指定主键

id int unsigned primary key comment '学号不能为空'
  • 在创建表的时候,在所有字段之后,使用primary key(主键字段列表)来创建主键,如果有多个字段作为主键,可以使用复合主键

create table tt14(

    id int unsigned, 

    course char(10) comment '课程代码',

    score tinyint unsigned default 60 comment '成绩', 

    primary key(id, course) //id和course为复合主键

);

这里第二种方式还可以在表创建好以后,进行追加主键

alter table 表名 add primary key(字段列表)

主键约束:主键对应的字段中不能够重复,一旦重复,操作失败

删除主键

alter table 表名 drop primary key

自增长

auto_increment:当对应的字段,不给值,会自动被系统触发,从当前字段中已有的最大值+1操作,得到一个新的不同的值,通常和主键搭配使用,作为逻辑主键

id int unsigned primary key auto_increment

条件

  • 任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)

  • 自增长字段必须是整数

  • 一张表最多只能有一个自增长

唯一键

一张表中往往需要多个字段都具有唯一性,但是主键只能有一个,唯一键就用来解决该问题

唯一键允许为空,而且可以多个为空,空字段不做唯一性比较

id char(10) unique comment '学号,不能重复,但可以为空'

外键

用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或者unique约束,当定义外键后,要求外键列数据必须在主表的主键存在或为空

foreign key (字段名) references 主表(列)

猜你喜欢

转载自blog.csdn.net/ladykiller21/article/details/89961742