MySQL学习(3)----约束

1.约束

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

      分类:主键约束:primary  key

                 非空约束:not null

                 唯一约束:unique

                 外键约束:foreign  key

1.1非空约束    not  null  值不为null

        1.创建表时添加约束:

                                       create  table stu(

                                                        id   int,

                                                 name   varchar(20)  not  null      #name为非空

                                             );

          2.给已经存在的表添加约束:

                                      alter  table  stu  modify  name  varchar(20)  not  null;

          3.删除约束:        alter  table  stu  modify  name  varchar(20) ;

1.2唯一约束    unique  值不重复

          1. 创建表时添加约束:  

                                   create   table   stu(

                                                  id  int,

                                             phone_number  varchar(20)   unique    #电话号码唯一

                                      ) ;    

                        (唯一约束限定的列可以有多个null)          

           2.给已经存在的表添加约束:

                                    alter  table  stu  modify  phone_number  varchar(20)   unique;

                                    (表中如果有重复的数据,要删除重复数据后再添加约束)

          3.删除约束: alter  table  stu  modify  phone_number  varchar(20) ;    #不能删除约束

                                 alter  table  stu  drop   index phone_number;

1.3主键约束    primary  key

     注意:

                 1.含义:非空且唯一

                 2. 主键是表中记录的唯一标识

                 3.一张表只能有一个字段为主键

         1. 创建表时添加约束:  

                                 create  table  stu(

                                                  id   int    primary  key,  #主键约束

                                                 name  varchar(20)

                                    );

        2.删除约束:

                                alter  table   stu  drop   primary  key;

       3.给已经存在的表添加主键:

                                alter  table   stu  modify id  int  primary  key;

      自动增长:

                       1.概念:某一列是数值类型的,使用  auto_increment  可以完成值得自动增长。(根据上一条记录的值+1)

                        2.创建表时添加主键约束,其自动增长:

                                     create  table  stu ( 

                                                     id int primary key  auto_increment,

                                                    name varchar(20)

                                         );

                        3.删除自动增长:alter  table  stu  modify  id  int;

                        4.添加自动增长:alter  table  stu  modify  id  int   auto_increment;

1.4  外键约束:foreign  key

          外键:A表中的某列是B表中的主键,则称这列为A的外键

1.创建表时添加外键:

             create table 表名 (
                        列名  类型名
                        外键列   外键类型,
           constraint   外键名称   foreign key(外键列名称)   references   主表名称(主表列名称  )
             );

/*  主表  部门表,id    dep_name    dep_location*/

create table department (
          id int primary key auto_increment,
          dep_name  varchar(20),
          dep_location varchar(20)
);

/*  员工表 ,id   name  age  dep_id */

create table employee (
          id int primary key auto_increment,
          name  varchar(20),
          age  int,
          dep_id int,  #外键,所在部门的ID
      constraint   emp_dept_fk    foreign key(dep_id)    references     department(id)
);

          2.删除外键:

                  alter   table   表名   drop  foreign key  外键名称;

                 alter   table   employee   drop  foreign key  emp_dept_fk;

          3.给已经存在的表添加外键:

                alter   table   表名   add   constraint  外键名称   foreign key(外键字段名)    references  主表名称(主表列名称);

                 alter   table   employee   add   constraint   emp_dept_fk   foreign key(dep_id)    references   department(id);

         4.级联操作

                     4.1分类:

                                 级联更新:on  update  cascade

                                 级联删除:on  delete   cascade

                     4.2添加级联操作: alter   table   表名   add   constraint  外键名称  

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

                                             on  update cascade    on  delete  cascade ;

                   

发布了19 篇原创文章 · 获赞 0 · 访问量 587

猜你喜欢

转载自blog.csdn.net/qq_44617005/article/details/102842530
今日推荐