MySQL约束的分类、创建、删除和修改

约束的分类

1、NOT NULL 非空约束,用于约束字段值不能为空
2、DEFAULT 默认约束,用于约束字段有默认值
3、PRIMARY KEY 主键约束,用于约束字段的唯一、非空属性
4、UNIQUE 唯一约束,用于约束字段具有唯一的值
5、CHECK 检查约束,用于检查数据表中字段是否有效
6、FOREIGN KEY 外键约束,通常与主键一起使用,确保数据的一致性

创建表使添加约束

-- students表
CREATE TABLE student (
    id INT AUTO_INCREMENT PRIMARY KEY,  -- 主键自增
    name VARCHAR(50) NOT NULL,         -- 非空字段
    gender ENUM('Male', 'Female') NOT NULL, -- 枚举类型
    age TINYINT UNSIGNED CHECK (age >= 18), -- 检查约束
    email VARCHAR(255) UNIQUE,         -- 唯一性约束
    department_id INT NOT NULL,        -- 外键约束
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- 默认值约束
    CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES department(id)
);
-- department表
CREATE TABLE department (
    id INT AUTO_INCREMENT PRIMARY KEY,  -- 主键自增
    name VARCHAR(50) NOT NULL          -- 非空字段
);

解释:

  1. id 声明为主键,并使用 AUTO_INCREMENT 关键字进行自增。
  2. name 声明为 VARCHAR(50) 类型的非空字段,即 NOT NULL
  3. gender 声明为 ENUM('Male', 'Female') 类型的非空字段,即只能取这两个枚举值。
  4. age 声明为 TINYINT UNSIGNED 类型,使用 CHECK 约束确保其值大于等于 18。
  5. email 声明为 VARCHAR(255) 类型的唯一性约束字段,即 UNIQUE
  6. department_id 声明为 INT 类型的外键约束字段,即 NOT NULL,并在最后定义了一个名为 fk_department 的外键约束,它关联到 department 表中的 id 字段。
  7. created_at 声明为 TIMESTAMP 类型,并设置默认值为当前时间戳,即 DEFAULT CURRENT_TIMESTAMP
  8. CONSTRAINT 关键字用于在创建表时定义约束条件,它可以用于定义多种类型的约束,包括主键、唯一、检查、外键等。

修改表并删除约束

这将删除名为 email 的索引,因为默认情况下唯一性约束是通过创建一个唯一索引来实现的。

ALTER ATBLE student
	DROP INDEX email

如果我们显式地为一个列创建唯一性约束,并且给这个约束命名,例如:

ALTER TABLE student 
	ADD CONSTRAINT uk_email UNIQUE (email);

这将为 student 表中的 email 列创建一个名为 uk_email 的唯一性约束。要删除这个唯一性约束,就需要使用 DROP CONSTRAINT 语法来删除它,而不能直接使用 DROP INDEX。因为这种情况下,唯一性约束和唯一性索引不再是同一个概念。

ALTER TABLE student DROP CONSTRAINT uk_email;

修改表添加约束条件

-- 添加唯一约束
ALTER TABLE student
	ADD UNIQUE(email);
-- 添加外键约束条件
ALTER TABLE student
	ADD CONSTRAINT fk_department
	FOREIGN KEY (department_id) 
	REFERENCE department(id);
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VenYy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值