约束

定义:是一种限制,通过对表的行或列的数据做出限制,来确保表的完整性,唯一性。

在MySQL中,常用的几种约束有:

约束类型: 主键 外键 唯一 非空 自增 默认值
关键字: primary key foreign key unique not null auto_increment default

primary key主键


什么是主键:
  • 一个表只能有一个主键,当建表时忘记设置主键约束时.设置为主键的列查询速度会非常快,所以一般会用聚集索引

添加主键约束:

  • create  table 表名(字段名 字段类型 primary key);
    

删除主键约束:

  • alter table myself drop primary key;
    

foreign key


什么是外键:
  • 当建表时需要用到另外一个表的主键作为本表的的主键时,需要设置外键。设置外间后,若想在删除本表数据时会级联删除或者默认删除其他方式。

添加外键约束

  • ##############
    ###创建国家表##
    ##############
    create table state(id int primary key auto_increment,
                      name varchar(20) not null unique
                      );
    ##############
    ###创建学生表##
    ##############                  
    create table student(id int primary key auto_increment,
                         name varchar(16) not null,
                         sex enum('男','女'),
                         state_id int,
                         foreign key(state_id) references state(id)
                         on update cascade
                         on delete cascade
                        );
    
外键联动
  • 级联更新 on update cascade
    级联删除 on delete cascade
    

unique唯一


定义:本列的内容只能唯一不能重复。

添加唯一约束

  • create  table 表名(字段名 字段类型 unique);
    

联合唯一

  • create  table 表名(字段名1 字段类型,字段名2 字段类型,
                    unique(字段名1,字段名2)
                    );
    

not null非空


定义:不为空 - 针对一些字段,如注册时的用户名,出生人的性别等,这些需求下的字段,只不能设置为Null,必须要对其赋值

添加非空约束

  • create  table 表名(字段名 字段类型 unique);
    

auto_increment自增


定义:自增,只能加给key的int类型字段,作为辅助修饰,一个表中只能设置一个自增字段

添加自增约束

create  table 表名(字段名 字段类型 auto_increment);

default默认值


定义:当插入时没有插入值时,会自动插入默认值。默认值约束相对于非空约束而说。

添加默认值

  • alter table 表名 add 列名 列类型 not null default '默认值';
    

清空表

truncate 表名,清空表,并清空主键自增记录