MySQL入门(三)

约束

Posted by YD Blog on October 3, 2022

MySQL入门(三)

约束的概念

  • 约束是作用于表中列上的规则,用于限制加入表中的数据
  • 约束的存在保证了数据库中数据的正确性、有效性和完整性

约束的分类

  • 非空约束:保证列中所有数据不能有null值,关键字NOT NULL
  • 唯一约束:保证列中所有数据各不相同,关键字UNIQUE
  • 主键约束:主键是唯一标识,要求非空且唯一,关键字PRIMARY KEY
  • 检查约束:保证列中的值满足某一条件,关键字CHECK
  • 默认约束:保存数据时,未指定值则采用默认值
  • 外键约束:外键用于让两个表的数据之间建立链接,保证数据的一致性和完整性

注意:MySQL不支持检查约束。

案例

约束的基本使用方法就是在定义表的时候在需要进行约束的字段数据类型后添加对应的约束关键字。

CREATE TABLE stu(
    id INT PRIMARY KEY AUTO_INCREMENT,-- id,主键且自增长
    sname VARCHAR(50) NOT NULL UNIQUE-- 学生姓名,非空且唯一 

);

具体用法如上,注意一个表只能有一个主键。

当然也可以在建表后修改约束,拿非空约束举例:

-- 添加非空约束
ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;
-- 删除非空约束
ALTER TABLE 表名 MODIFY 字段名 数据类型;

关于外键约束

语法:

-- 创建时添加外键
CREATE TABLE 表名(
    列名 数据类型,
    ...
    [CONSTRAINT] [外键名称] FOREING KEY (外键字段名称)
    REFERENCES 主表名称(主表列名称)
);
-- 建完表后添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREING KEY
(外键字段名称) REFERENCES 主表名称(主表列名称);
-- 删除约束
ALTER TABLE 表名 DROP FOREING KEY 外键名称;

由于外键类似于将主表映射到副表中,所以创建时要先创建主表然后在副表中创建外键,添加数据时也是先在主表中添加数据,然后才能在副表中添加对应新数据的数据,但是到删除时则要反过来,先删除附表中的数据,然后才能删除主表中的数据,有一说一,这和JVM虚拟机的内存回收机制很类似,将副表看作变量名和引用而主表看作内存的话,要先分配内存然后把变量名指向内存,自动回收时也是只有没有变量名指向对应内存时才会开始自动回收。