mysql约束

约束:

  1.什么是约束,为什么要使用约束

   1.约束对应的英语单词:constraint

   2. 约束实际上就是表中数据的限制条件

     3.  表在设计的时候加入约束的目的是为了保证表中记录的完整和有效

  2.约束包括那些  

    非空约束    not  null

    唯一性约束    unique

    主键约束    primary key  简称PK

    外键约束   foreign key  简称FK

 

unique  设为唯一性约束的列中不能出现相同数据

 

 

PK    主键约束的术语:

      1.主键约束

      2.主键字段

      3.主键值

    主键约束,主键字段,主键值的关系:

      表中的某个字段添加主键约束之后,该字段被称为主键字段,

      主键字段中,出现的每一个数据都被称为主键值

 作用:给某个字段添加主键约束之后,该字段不能重复,也不能为空

    效果和not null unique约束相同,本质不同,主键字段除了用上述功能之外,

    还会默认添加索引“index”

  一张表应该有主键字段,若没有,表示这张表是无效的,“主键值”是当前行数据的唯一标识,“主键值”是当前行数据的身份证号

  即使表中的两行记录相关数据相同,但由于主键值不同,则认为这是两行完全不同的数据

   

  给一个字段添加主键约束,被称为单一主键,  

      列级约束

      create table t_user(

           id int (10) primary key,

           name varchar(20)

        )

      表级约束

      create table t_user(

           id int,

           name varchar(20),

            primary key(id)

        

  给多个字段联合添加一个主键约束,被称为复合主键

      表级约束

      drop table if exists t_user

      create table t_user (

                id int(10),

                name varchar(20),

                constraint t_user_id_name_pk primary key(id,name)     //起名

            )  

    无论是单一主键还是复合主键,一张表主键约束只能有一个

  

  主键根据性质分类:

  -自然主键

      主键值若是一个自然数,这个自然数和当前表的业务没有任何关系

  -业务主键

      主键值和当前表中业务紧密相关,当业务数据发生改变时,主键值会受到影响,

      所以业务主键使用较少,通常使用自然主键

 

 FK

    外键的术语

       -外键约束

       -外键字段

       -外键值

 

    单一外键     复合外键

    

    一张表中可以有多个外键字段

    外键值可以为NULL

    外键作用,与两张表中起连接作用,一张表中的字段被另一张表中的某一字段所引用,此时引入外键,被引用的字段必须具有unique约束。

     有了外键引用后,引用外键的表是子表,被引用的是父表

      只有表级约束

 

    drop table if exists t_student;

    drop table if exists t_class;

    create table t_class(

        con int(3) primary key,

        cname varchar(128)  not null unique,

        );

     create table t_student(

         sno int (3) primary key,

         sname varchar(32)  not null,

         classno int(3) ,

         foreign key(classno) references t_class (cno)   

          ); 

 

一对多;再多的一方加外键

 

级联更新与删除:

父表中的数据更新时,级联更新子表中的数据,谨慎使用

级联删除:on delete cascade

级联更新:  on update cascade

在添加外键约束时写入级联删除或更新

 

 

删除约束:

  alter table t_class drop foreign key 外键名  on delete cascade9

添加约束:

  alter table t_class add foreign key(id)  references t_class(id)

posted @ 2019-05-27 15:00  FAJ  阅读(139)  评论(0编辑  收藏  举报