MySQL 数据库(基础)- 约束

MySQL 数据库(基础)- 约束

  • 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
  • 目的:保证数据库中数据的正确,有效性和完成性。
  • 分类:

在这里插入图片描述

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

案例演示:
在这里插入图片描述
对应的建表语句:

CREATE TABLE tb_user(id int AUTO_INCREMENT PRIMARY KEY COMMENT 'ID唯一标识',name varchar(10) NOT NULL UNIQUE COMMENT '姓名' ,age int check (age > 0 && age <= 120) COMMENT '年龄' ,status char(1) default '1' COMMENT '状态',gender char(1) COMMENT '性别'
);

外键约束

  • 外键:用来让两张表的数据之间简历连接,从而保证数据的一致性和完成性。
    在这里插入图片描述

左侧的 emp 表是员工表,里面存储员工的基本信息,包含员工的ID、姓名、年龄、职位、薪资、入职日期、上级主管ID、部门ID,在员工的信息中存储的是部门的ID dept_id,而这个部门的ID是关联的部门表 dep t的 主键id,那 emp 表的 dept_id 就是外键,关联的是另一张表的主键

注意:目前上述两张表,只是在逻辑上存在这样一层关系;在数据库层面,并未建立外键关联,所以是无法保证数据的一致性和完整性的。

语法

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

案例:
为 emp 表的 dept_id 字段添加外键约束,关联 dept 表的 主键id。

alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);

在这里插入图片描述

  1. 删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称; 

案例:
删除emp表的外键fk_emp_dept_id。

alter table emp drop foreign key fk_emp_dept_id;

删除/更新行为

  • 添加了外键之后,再删除父表数据时产生的约束行为,我们就称为删除/更新行为。具体的删除/更新行
    在这里插入图片描述
    具体语法:
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名 (主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;

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

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

相关文章

yoloV8导出engine模型

yoloV8导出engine模型 引言&#xff1a; 目的是TensorRT加速YOLO实例分割模型。 本博客记录达成此目的所需的步骤&#xff0c;及步骤中可能遇到的问题。 as follow&#xff1a; 1. 首先导出onnx模型的脚本命令&#xff1a; yolo export modelbest.pt formatonnx opset12 simpl…

[misc]-流量包-find the pass

提示&#xff1a;黑客抓到一段流量&#xff0c;找找管理员的密码是多少 直接追踪流发现pass flag ffb7567a1d4f4abdffdb54e022f8facd

【RNN练习】天气预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、环境及数据准备 1. 我的环境 语言环境&#xff1a;Python3.11.9编译器&#xff1a;Jupyter notebook深度学习框架&#xff1a;TensorFlow 2.15.0 2. 导…

2024的开放式耳机排行榜,看这六个耳机选购的小Tips

在选择适合散步聊天和听歌的耳机时&#xff0c;开放式耳机是一个很好的选择。相对于传统的入耳式耳机&#xff0c;开放式耳机不会过度隔离你与周围环境&#xff0c;这意味着你可以更自然地与朋友交流&#xff0c;并且更加安全地行走在路上。市面上有许多开放式耳机可供选择&…

01. Hibernate 教程简介

1. 前言 大家好&#xff01;本节课将和大家一起学习鼎鼎有名的 Hibernate 框架。 本节课程将向大家介绍&#xff1a; Hibernate 的功能 、特点&#xff1b;Hibernate 产生的背景&#xff1b;并初步探讨编写 Jdbc 框架的基础构建思路。 2. Hibernate 是什么&#xff1f; 简而…

尚硅谷js

原型模式 原型对象就是相当于java的static,所有实例对象可以直接用静态的属性或者方法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script type"text/javascript&q…

3D工艺大师快速生成装配动画,驱动汽车工业装配流程革新

在现代制造业的一般生产流程中&#xff0c;车间装配环节是产品由蓝图迈向市场前至关重要的一道工序。随着产品结构的日益复杂化和个性化需求的不断增长&#xff0c;车间装配工作面临着前所未有的挑战。高精密度的装配要求、错综复杂的组件关系以及频繁变更的生产计划&#xff0…

Java单边表的局部翻转

反转链表 II 这是上一个翻转全部链表的进阶版&#xff0c;大家可以先去看我的上一篇博客 Java算法之单链表的全部翻转-CSDN博客 题目描述 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节…

在VSCode上创建Vue项目详细教程

1.前期环境准备 搭建Vue项目使用的是Vue-cli 脚手架。前期环境需要准备Node.js环境&#xff0c;就像Java开发要依赖JDK环境一样。 1.1 Node.js环境配置 1&#xff09;具体安装步骤操作即可&#xff1a; npm 安装教程_如何安装npm-CSDN博客文章浏览阅读836次。本文主要在Win…

使用 lmdeploy 部署 internlm/internlm2_5-7b-chat

使用 lmdeploy 部署 internlm/internlm2_5-7b-chat 0. 引言1. lmdeploy 性能2. lmdeploy 支持的模型3. 快速开始 0. 引言 LMDeploy 由 MMDeploy 和 MMRazor 团队联合开发&#xff0c;是涵盖了 LLM 任务的全套轻量化、部署和服务解决方案。 这个强大的工具箱提供以下核心功能&a…

webRtc架构与目录结构

整体架构 目录结构 webrtc Modules目录

Redis实践经验

优雅的Key结构 Key实践约定&#xff1a; 遵循基本格式&#xff1a;[业务名称]:[数据名]:id例&#xff1a;login:user:10长度步超过44字节&#xff08;版本不同&#xff0c;上限不同&#xff09;不包含特殊字符 优点&#xff1a; 可读性强避免key冲突方便管理节省内存&#x…

使用 Unstructured.io 和 Elasticsearch 向量数据库搜索复杂文档

作者&#xff1a;来自 Elastic Amy Ghate, Rishikesh Radhakrishnan, Hemant Malik 使用非结构化和 Elasticsearch 向量数据库为 RAG 应用程序提取和搜索复杂的专有文档 在使信息可搜索之前解析文档是构建实际 RAG 应用程序的重要步骤。Unstructured.io 和 Elasticsearch 在此…

mybatis动态传入参数 pgsql 日期 Interval ,day,minute

mybatis动态传入参数 pgsql 日期 Interval 在navicat中&#xff0c;标准写法 SELECT * FROM test WHERE time > (NOW() - INTERVAL 5 day)在mybatis中&#xff0c;错误写法 SELECT * FROM test WHERE time > (NOW() - INTERVAL#{numbers,jdbcTypeINTEGER} day)报错内…

CSS【详解】层叠 z-index (含 z-index 的层叠规则,不同样式的层叠效果)

仅对已定位的元素&#xff08; position:relative&#xff0c;position:absolute&#xff0c;position:fixed &#xff09;有效&#xff0c;默认值为0&#xff0c;可以为负值。 z-index 的层叠规则 z-index 值从小到大层叠 兄弟元素 z-index 值相同时&#xff0c;后面的元素在…

python | setup.py里有什么?

setup.py里有什么&#xff1f; 文章目录 setup.py里有什么&#xff1f;C/C扩展总结gcc/g的编译参数&#xff1a;Windows Visual StudioCmakesetup.py C/C扩展模块 为什么需要分发打包&#xff1f;Distutils一个简单的例子通用的 Python 术语 使用 Setuptools 构建和分发软件包源…

Android Gantt View 安卓实现项目甘特图

需要做一个项目管理工具&#xff0c;其中使用到了甘特图。发现全网甘特图解决方案比较少&#xff0c;于是自动动手丰衣足食。 前面我用 Python和 Node.js 前端都做过&#xff0c;这次仅仅是移植到 Android上面。 其实甘特图非常简单&#xff0c;开发也不难&#xff0c;如果我…

Python番外篇:万法归一,一切皆对象

目录 Python中的对象 一切皆对象 数字是对象 字符串是对象 内置类型也是对象 函数和类也是对象 总结 Python中的对象 对象是Python对数据的抽象&#xff0c;在Python程序中&#xff0c;所有的数据&#xff0c;都可以由对象或对象之间的关系表示。 从某种意义上说&#…

基于AT89C51单片机GSM模块的家庭防火防盗报警系统设计(含文档、源码与proteus仿真,以及系统详细介绍)

本篇文章论述的是基于AT89C51单片机GSM模块的家庭防火防盗报警系统设计的详情介绍&#xff0c;如果对您有帮助的话&#xff0c;还请关注一下哦&#xff0c;如果有资源方面的需要可以联系我。 目录 摘 要 原理图 仿真图 元器件清单 代码 系统论文 参考文献 资源下载…

几何建模-Parasolid中GO功能使用

1.背景介绍 1.1 Parasolid和它的接口间关系 1.2 什么是GO GO全称是Graphical Output.你的程序需要在屏幕或者打印设备上显示模型数据时。在需要使用PK中的某个渲染函数时创建图形显示数据时&#xff0c;Parasolid会调用GO相关的函数。GO函数会输出绘图指令给你的应用程序提供…