MySQL----约束

时间:2022-03-16 20:57:42

##约束

    *  概念:对表中的数据进行限定,保证数据的正确性,有效性和完整性。

    *  分类:

      1、主键约束:primary key

      2、非空约束:not null

      3、唯一约束:unique

      4、外键约束:foreign key

* 非空约束:not null,值不能为null

  1、创建表时,添加约束。

  2、创建完之后添加非空约束。

  3、删除非空约束。

create table lxy.stu(
    id int,
    name varchar(20) not null
);
/*删除name的非空约束*/
alter table lxy.stu modify name varchar(20);
/*创建完表之后添加非空约束*/
alter table lxy.stu modify name varchar(20) not null ;

*唯一约束:unique,值不能重复

/*创建表时,添加唯一约束*/
create table stu(
    id int,
    phone_number varchar(20) unique
);
/*注意nysql中,唯一约束限定的列的值可以有多个null*/
/*删除唯一约束*/
alter table stu drop index phone_number;
/*在创建表之后添加唯一约束*/
alter table stu modify phone_number varchar(20) unique;

 *主键约束:primary key

  1、注意:

    1、含义:非空且唯一

    2、一张表只能有一个字段为主键

    3、主键就是表中记录的唯一标识

  2、在创建表时,添加主键约束

create table stu(
    id int primary key, /*--给id添加主键约束*/
    name varchar(32)
);
/*删除主键*/
alter table stu drop primary key;
/*创建完表之后,添加主键*/
alter table stu modify id int primary key ;

  3、自动增长

    1、 概念:如果某一列实数值类型的,使用auto_increment 可以来完成值的自动增长

    2、在创建表时,添加主键约束,并且完成主键自动增长

/*创建表时,设置主键的自动增长*/
create table stu(
    id int primary key auto_increment,
    phone_number varchar(20) unique
);
/*创建表之后添加*/
alter table stu modify id int auto_increment;
  

    3、删除自动增长

/*删除自动增长*/
alter table stu modify id int;

*外键约束:foreign key,让表与表产生关系,从而保证数据的正确性。

  1、在创建表时,可以添加外键

    *  语法:create table 表名(

        ...

        外键列,

        constraint 外键名称 foreign key 外键列名称 references 主表名称(主表列名称)

        );

create table employee(
    id int primary key auto_increment,
    name varchar(32),
    age int,
    dep_id int,
    constraint emp_dept_fk foreign key (dep_id) references department (id)
);

 

  2、删除外键

 

/*删除外键*/
alter table employee drop foreign key emp_dept_fk;

 

 

 

  3、创建表之后添加外键

/*添加外键*/
alter table employee add constraint emp_dept_fk foreign key (dep_id) references department (id);

  4、级联操作

    1、添加级联操作

      语法:

/*添加外键,设置级联更新*/
alter table employee add constraint emp_dept_fk foreign key(dep_id) references department(id) on update cascade on delete cascade;

    2、分类:

      1、级联更新:on update cascade

      2、级联删除:on delete cascade