MySQL:约束

目录

    • 一、概述
    • 二、创建测试
    • 三、外键约束
      • 3.1 数据准备
      • 3.2 添加外键
      • 3.3 删除外键
      • 3.4 增加外键约束


在这里插入图片描述

一、概述

约束主要用于作用在表中字段上的规则,用于限制存储在表中的数据。
保证数据库中数据的正确性、有效性和完整性。

约束描述关键字
主键约束非空并且唯一PRIMARY KEY
非空约束字段不能为NULLNOT NULL
唯一性约束数据唯一UNIQUE
默认约束指定默认值DEFAULT
检查约束(8.0.16之后的版本)保证字段值满足某一条件CHECK
外键约束用于两张表之间的连接保证数据的一致性与完整性FOREIGN KEY

注意:约束是作用于表中的字段上的,可以在创建表、修改表的时候增肌约束

二、创建测试

CREATE TABLE tb_ys_test(id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID主键',name VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',age INT CHECK(age > 0 && age <= 120) COMMENT '年龄',status CHAR(1) DEFAULT 1 COMMENT '状态',gender CHAR(1) COMMENT '性别'
) COMMENT '约束测试';

三、外键约束

外键是用来创建两张表之间的连接,从而保证数据的完整性和一致性。

在这里插入图片描述
注意:目前上述的两张表,在数据库层面,并未建立外键连接,所以无法保证数据的一致性与完整性。

3.1 数据准备

CREATE TABLE tb_dept(id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID主键',name VARCHAR(20) NOT NULL COMMENT '部门名称' 
) COMMENT '部门表';INSERT INTO tb_dept(id,`name`) VALUES (1, '研发部'), (2, '市场部'), (3, '财务部'), (4, '销售部'), (5, '总经办');CREATE TABLE tb_emp(id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID主键',name VARCHAR(20) NOT NULL COMMENT '姓名',age INT COMMENT '年龄',job VARCHAR(20) COMMENT '职位',salary INT COMMENT '薪资',entrydata DATE COMMENT '入职时间',managerid INT COMMENT '直属领导ID',dept_id INT COMMENT '部门ID'
) COMMENT '员工表';INSERT INTO tb_emp(id,`name`,age,job,salary,entrydata,managerid,dept_id) VALUES
(1, '金庸', 66, '总裁', 20000, '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);

3.2 添加外键

ALTER TABLE tb_emp ADD CONSTRAINT fk_emp_dept_id FOREIGN KEY (dept_id) REFERENCES tb_dept(id);

3.3 删除外键

ALTER TABLE tb_emp DROP FOREIGN KEY fk_emp_dept_id;

3.4 增加外键约束

行为说明
NO ACTION删除、更新父表中的记录时,检查是否有关联的外键,如果有则不允许删除(与RESTRICT一致)
RESTRICT删除、更新父表中的记录时,检查是否有关联的外键,如果有则不允许删除(与NO ACTION一致)
CASCADE级联删除:删除、更新父表中的记录时,检查是否有关联的外键,如果有则一起删除
SET NULL删除、更新父表中的记录时,检查是否有关联的外键,如果有将外键置为NULL
SET DEFAULT父表变动时,子表设置成默认值(Innodb不支持)
ALTER TABLE tb_emp ADD CONSTRAINT fk_emp_dept_id FOREIGN KEY (dept_id) REFERENCES tb_dept(id) ON UPDATE CASCADE ON INSERT CASCADE;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/415052.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第三十四天| 62.不同路径 63. 不同路径 II

62.不同路径 题目&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少…

ESD防静电监控系统助力电子制造行业转型升级

在电子制造行业中&#xff0c;静电危害不容小觑。ESD 防静电监控系统的出现&#xff0c;为行业转型升级带来强大助力。电子元件对静电极为敏感&#xff0c;微小的静电放电都可能损坏元件&#xff0c;影响产品质量。ESD 防静电监控系统能够实时监测生产环境中的静电状况&#xf…

rknntoolkitlite2环境搭建

目录 前言 0、要下载的软件包 一、环境搭建步骤 1.1 安装Miniconda 1.2创建RKNN虚拟环境 1.3 安装rknntoolkitlite2软件包 1.4 安装opencv 前言 RKNN Toolkit Lite2 工具支持运行在 RK3568: Debian10/Debian11&#xff08;aarch64&#xff09;、Ubuntu20/22&#xff08;…

Java分布式架构知识体系及知识体系图

Java分布式架构整体知识体系是一个庞大而复杂的领域&#xff0c;它涵盖了多个方面&#xff0c;旨在帮助开发者构建高性能、高可用、可扩展的分布式系统。以下是对Java分布式架构整体知识体系的概述&#xff1a; 一、分布式理论基础 CAP理论&#xff1a; 一致性&#xff08;Con…

线性代数 第五讲:线性方程组_齐次线性方程组_非齐次线性方程组_公共解同解方程组_详解

线性方程组 文章目录 线性方程组1.齐次线性方程组的求解1.1 核心要义1.2 基础解系与线性无关的解向量的个数1.3 计算使用举例 2. 非齐次线性方程的求解2.1 非齐次线性方程解的判定2.2 非齐次线性方程解的结构2.3 计算使用举例 3.公共解与同解3.1 两个方程组的公共解3.2 同解方程…

三(五)子棋实现

设计一个小游戏其实是对自己掌握一门编程语言的一个升华&#xff0c;几百行代码分项目进行这种很让人着迷的感觉哦&#xff01; 与五子棋游戏其实本质区别只不过是判输赢的条件不同&#xff0c;这里我打算写写三子棋小游戏。 代码的最后我将所有源代码整理了&#xff0c;大家急…

物联网之MQTT

一&#xff0c;MQTT 及其在物联网中的应用 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息传输协议&#xff0c;设计用于低带宽、延迟高、不稳定的网络环境&#xff0c;特别适合物联网&#xff08;IoT&#xff09;应用。它采用了发布/订…

pet薄膜高速度视觉软件丝印应用

卷对卷生产的PET薄膜&#xff0c;以其优异的物理、化学性能及尺寸稳定性&#xff0c;在塑料薄膜行业中占据重要地位。它透明度高、光泽度好&#xff0c;强韧性出色&#xff0c;抗张强度和抗冲击强度远高于一般薄膜&#xff0c;且具有良好的耐热、耐寒、耐油和耐酸性。这些特性使…

(二)、软硬件全开源智能手表,可全面高精度采集生命体征数据,进行健康检测。(HealthyPi Move)

HealthyPi Move是一款开放式硬件设备&#xff0c;可让您高精度地跟踪所有生命体征。它不仅仅是另一款带有心率监测器的智能手表&#xff0c;它还是手腕上的完整生命体征监测和记录设备&#xff0c;可以测量心电图(ECG)、光电容积脉搏波 (PPG)、SpO₂、血压(基于手指)、EDA/GSR、…

scikit-learn:一个强大的机器学习Python库

我是东哥&#xff0c;一个热衷于用Python解决实际问题的技术爱好者。今天&#xff0c;我要和大家分享一个强大的机器学习库——scikit-learn。你是否曾经对机器学习充满好奇&#xff0c;却觉得它高深莫测&#xff1f;scikit-learn库将帮你轻松入门&#xff0c;让你在机器学习的…

《TSMaster开发从入门到精通》——创作者背后的故事...

背后的故事 由汽车行业畅销书作者杨金升老师牵头&#xff0c;同星智能研发团队和应用支持团队全力参与的《TSMaster开发从入门到精通》书籍已由清华大学出版社印付。此书一经上架&#xff0c;就获得汽车行业人士的一致认可和好评&#xff08;京东自营100%好评率&#xff0c;并…

基于DPU与SmartNIC的K8s Service解决方案

1. 方案背景 1.1. Kubernetes Service介绍 Kubernetes Service是Kubernetes中的一个核心概念&#xff0c;它定义了一种抽象&#xff0c;用于表示一组提供相同功能的Pods&#xff08;容器组&#xff09;的逻辑集合&#xff0c;并提供了一种方式让这些Pods能够被系统内的其他组…

python-uinput虚拟输入

文章目录 python-uinput虚拟输入背景库简介&#xff1a;什么是python-uinput&#xff1f;安装指南&#xff1a;如何获取这个强大的工具&#xff1f;快速上手&#xff1a;五个核心函数的介绍与使用1. 创建虚拟设备2. 模拟键盘输入3. 模拟鼠标移动4. 模拟鼠标点击5. 模拟触摸屏操…

嵌入式全栈开发学习笔记---Linux系统编程(进程间通信)

目录 进程间通信概述 进程通信目的 进程间通信的发展 进程间通信分类 管道通信 无名管道 有名管道mkfifo() 信号 发送信号kill & raise 忽略信号signal() 发送信号alarm() 消息队列 消息队列使用的步骤 创建消息队列msgget() 读写消息队列msgrcv()/msgsnd()…

【C语言】十六进制、二进制、字节、位、指针、数组

【C语言】十六进制、二进制、字节、位 文章目录 [TOC](文章目录) 前言一、十六进制、二进制、字节、位二、变量、指针、指针变量三、数组与指针四、指针自加运算五、二维数组与指针六、指向指针的指针七、指针变量作为函数形参八、函数指针九、函数指针数组十、参考文献总结 前…

高经费打造的史诗级视觉盛宴,惊叹于每一帧的奢华

8月29日&#xff0c;备受期待的《指环王&#xff1a;力量之戒》第二季终于上线了。这一季一上架就放出了三集&#xff0c;立刻引发了影迷们的热烈讨论。 自从2022年首季首播以来&#xff0c;《指环王&#xff1a;力量之戒》就一直备受瞩目。尽管首季受到了不少争议&#xff0c;…

【C++ Primer Plus习题】9.4

问题: 解答: main.cpp #include <iostream> #include "sales.h" using namespace std; using namespace SALES;int main() {Sales s1, s2;double de[QUARTERS] { 12.1,32.1,42.1,51.1 };setSales(s1, de, QUARTERS);showSales(s1);cout << endl;setSal…

springsecurity快速入门

Spring Security 是一个功能强大且高度可定制的安全框架&#xff0c;主要用于保护基于 Spring 的应用程序。它提供了一整套用于身份验证、授权、加密、会话管理等功能的工具和 API&#xff0c;从而帮助开发者快速、有效地保护应用程序。 Configuration EnableWebSecurity pu…

Hive 安装

目录 Hive 安装 Hive 安装地址 Hive 安装部署 安装 Hive 启动并使用 Hive Hive 安装 Hive 安装地址 1&#xff09;Hive 官网地址 Apache Hivehttp://hive.apache.org/ 2&#xff09;文档查看地址 GettingStarted - Apache Hive - Apache Software Foundationhttps://cwik…

“转移阻抗”?求你们不要再玩新梗了!

高速先生成员--黄刚 在SI这个行业待久了&#xff0c;Chris发现其实也蛮卷的&#xff0c;就好像前几周写的电容滤板半径这篇文章&#xff0c;最近一些和Chris很熟的网友也评论说&#xff1a;现在好好做设计&#xff0c;好好做仿真都不行啦&#xff1f;一定要发明一些听起来很高…