MySQL约束详解

Posted LL.LEBRON

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL约束详解相关的知识,希望对你有一定的参考价值。

mysql约束操作

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

  • 分类:

    1. 主键primary key
    2. 非空约束not null
    3. 唯一约束unique
    4. 外键约束foreign key

1.非空约束

not null,值不能为空。

  1. 创建表时添加非空约束

    CREATE TABLE stu(
    	id INT,
    	NAME VARCHAR(20) NOT NULL
    );
    
  2. 创建表完后,添加非空约束

    ALTER TABLE stu 
    MODIFY NAME VARCHAR(20) NOT NULL;
    
  3. 删除非空约束

    ALTER TABLE stu 
    MODIFY NAME VARCHAR(20);
    

2.唯一约束

unique,值不能重复。

  1. 创建表时添加唯一约束

    CREATE stu(
    	id INT;
    	phone_number VARCHAR(20) UNIQUE
    );
    

    注意mysql中,唯一约束限定的列的值可以有多个null

  2. 删除唯一约束

    ALTER TABLE stu
    DROP INDEX phone_number;
    
  3. 创建表完后,添加唯一约束

    ALTER TABLE stu 
    MODIFY phone_number VARCHAR(20) UNIQUE;
    

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 ;
    

这里补充一个知识点:自动增长

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

例子

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

    CREATE TABLE stu(
    	id INT PRIMARY KEY AUTO_INCREMENT,
    	NAME VARCHAR(20)
    );
    #自动增长会根据当前列的最后一行的值往后增加。
    
  2. 删除自动增长

    ALTER TABLE stu
    MODIFY id INT;
    #这样只会删除自动增长,主键删不掉。
    
  3. 创建表完后,在添加自动增长

    ALTER TABLE stu
    MODIFY id INT AUTO_INCREMENT;
    

4.外键约束

foreign ley,让表与表产生关系,从而保证数据的正确性。

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

    CREATE TABLE 表名(
    	...
    	外键列
    	CONSTRAINT 外键名称 FOREIGN KEY (外键列名称) REFERENCES 主表名称(主表列名称)
    );
    
  2. 删除外键

    ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
    
  3. 创建表之后,添加外键

    ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
    

级联删除操作

  1. 添加级联操作

    ALTER TABLE 表名 ADD CONSTRAINT 外键名称 
    FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称)
    ON UPDATE CASCADE ON DELETE CASCADE  ;
    
  2. 分类

    • 级联删除

      ON UPDATE CASCADE
      
    • 级联删除

      ON DELETE CASCADE 
      

以上是关于MySQL约束详解的主要内容,如果未能解决你的问题,请参考以下文章

十四MySQL 约束详解

你需要知道的MySQL数据库四大约束详解

你需要知道的MySQL数据库四大约束详解

MySQL约束条件和多表查询方式详解

MySQL外键(详解)

在约束布局中查看片段的绑定不起作用