mysql:字段约束

为了确保数据的完整性和唯⼀性,关系型数 据库通过约束机制来实现目的

unique

唯一性约束,值不可重复

not null

非空约束,值不可为空

default

默认值约束,当增加数据时没有插⼊值时,会自动插⼊默认值;

check

检查约束,mysql不支持该约束,但写入语句不会报错;

primary key

主键约束 = 唯一性约束 + 非空约束,是一张表的代表性字段

  • 一张表只能有一个主键,主键可以是一个字段,也可以是多个字段(联合主键,复合主键)
  • 整形主键字段可以使用auto_increment(自动增长)修饰,
  • 插入时不写主键字段值,值 = 上一列值 + 1;

foreign key

外键约束,外键是另一表的主键,常用来和其他表建立联系

  • 外键与主键的引用类型必须一致,如果主键是int外键是char则不行
  • 一定要匹配主表中 引用的列 ( 所要创建的外键是主表中的主键 )
  • 主键和外键的字符编码必须一致,如果主表为utf8,则此表也要为utf8
     

添加方式

(注:文中添加方式仅为示例,实际同时对一个字段同时添加多个约束会有bug,具体原因可以参见约束原理)

第一种,创建表时在修饰字段末直接添加,不支持添加foreign key

create table stu(sid int unique,sname char(20));
create table stu(sid int not null,sname char(20));
create table stu(sid int default 0,sname char(20));
create table stu(sid int primary key,sname char(20));

第二种,创建表时单独添加,constraint表示起别名,不支持添加default

create table stu(sid int,
                 sname char(20),constraint unique_stu unique(sid),
                 constraint notnull_stu not null(sid),
                 constraint pk_stu primary key(sid),
                 constraint fk_stu foreign key(sid) references s(sid)
                 );

第三种,表已经存在,且字段下的所有值符合约束条件

alter table stu add constraint unique_stu unique(sid);
alter table stu add constraint notnull_stu not null(sid);
alter table stu add constraint pk_stu primary key(sid);
alter table stu add constraint fk_stu foreign key(sid) references s(sid);

查询约束信息,可查看约束名,table表示表名

show keys from table; 

删除约束,index表示约束名,table表示表名

drop index on table;
posted @ 2019-02-25 17:26  漓白白"  阅读(2093)  评论(0编辑  收藏  举报