当前位置: 首页 > news >正文

Mysql数据库学习--约束

概述

概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。

目的:保证数据库中数据的正确、有效性和完整性。

分类:

约束描述关键字
非空约束限制该字段的数据不能为 nullNOT NULL
唯一约束保证该字段的所有数据都是唯一、不重复的UNIQUE
主键约束主键是一行数据的唯一标识,要求非空且唯一PRIMARY KEY
默认约束保存数据时,如果未指定该字段的值,则采用默认值DEFAULT
检查约束 (8.0.16 版本之后)保证字段值满足某一个条件CHECK
外键约束用来让两张表的数据之间建立连接,保证数据的一致性和完整性FOREIGN KEY

注意:约束是作用于表中字段上的,可以在创建表 / 修改表的时候添加约束。 

外键约束

添加外键

CREATE TABLE 表名( 字段名 数据类型, ... [CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主表列名) );

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

删除外键

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

create table dept(id   int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部门名称'
) comment '部门表';
INSERT INTO dept (id, name) VALUES (1, '研发部'), (2, '市场部'), (3, '财务部'), (4, '销售部'), (5, '总经办');create table emp(id          int auto_increment comment 'ID' primary key,name        varchar(50) not null comment '姓名',age         int comment '年龄',job         varchar(20) comment '职位',salary      int comment '薪资',entrydate   date comment '入职时间',managerid   int comment '直属领导ID',dept_id     int comment '部门ID'
) comment '员工表';
INSERT INTO emp (id, name, age, job, salary, entrydate, managerid, dept_id) VALUES 
(1, '金庸', 66, '总裁', 200000, '2000-01-01', null, 5),
(2, '张无忌', 20, '项目经理', 12500, '2005-12-05', 1, 1),
(3, '杨逍', 33, '开发', 8400, '2000-11-03', 2, 1),
(4, '韦一笑', 48, '开发', 11000, '2002-02-05', 2, 1),
(5, '常遇春', 43, '开发', 10500, '2004-09-07', 3, 1),
(6, '小昭', 19, '程序员鼓励师', 6600, '2004-10-12', 2, 1);# 添加外键
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);
# 删除外键
alter table emp drop foreign key fk_emp_dept_id;

删除 / 更新行为

行为说明
NO ACTION当在父表中删除 / 更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除 / 更新。(与 RESTRICT 一致)(默认)
RESTRICT当在父表中删除 / 更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除 / 更新。(与 NO ACTION 一致)(默认)
CASCADE当在父表中删除 / 更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除 / 更新外键在子表中的记录。
SET NULL当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为 null(这就要求该外键允许取 null)。
SET DEFAULT父表有变更时,子表将外键列设置成一个默认的值 (Innodb 不支持)

 ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名(主表字段名) ON UPDATE 行为 ON DELETE 行为;

http://www.dtcms.com/a/279160.html

相关文章:

  • 聚宽sql数据库传递
  • 非阻塞写入核心:asyncio.StreamWriter 的流量控制与数据推送之道
  • python+requests 接口自动化测试实战
  • 支付宝小程序代运营:专业助力提升运营效能
  • AI Agent和Agentic AI
  • 驱动开发系列60- Vulkan 驱动实现-SPIRV到HW指令的实现过程(1)
  • 【Bluedroid】蓝牙协议栈enable流程深度解析
  • Redis ①⑥-缓存
  • org.casic.javafx.control.PaginationPicker用法
  • 【Docker基础】Dockerfile指令速览:健康检查与启动指令详解
  • Apache部署
  • ThinkPHP 8 在 Apache 下启用伪静态
  • 深入解析Hadoop YARN架构设计:从原理到实践
  • 音视频:语音转换文字功能实现
  • 阿尔卡特ACT 250 ATP 150 AND ATP 400 分子泵控制器TURBOMOLECULAR PUMP CONTROLLER ALCATEL
  • 微型导轨在3D打印设备中如何稳定运行?
  • Java:继承和多态(必会知识点整理)
  • 常用的RAG类型介绍
  • # MySQL索引失效场景和解决方案详解
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘sqlite3’问题
  • SpringBoot微服组件
  • 毫米波雷达在转弯时将静止目标识别为运动目标的原因
  • JavaSE-8-多态
  • python 双下划线开头函数
  • 【字节跳动】数据挖掘面试题0017:推荐算法:双塔模型,怎么把内容精准地推送给用户
  • ATE - Force模式和Meas模式
  • AI Agent vs SaaS:企业服务产品正迈向“智能中枢”阶段
  • Linux中使用云仓库上传镜像和私库制作Registry
  • 算法-练习题
  • 【牛客刷题】小红的数字删除