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

MySQL初阶:数据库约束和表的设计

数据库约束

数据库约束是针对数据库中的表中的数据进行施加规则和条件,用于确保数据的准确性和可靠性。

数据库约束类型

1)not null 非空类型 :指定非空类型的列不能存储null,如果插入的数据是null便会报错。

2)default 默认约束:当没有指定插入值时,设定一个默认值进行插入。

当没有使用default设置默认值时,使用desc table 观察表的结构时,default这一栏就是null;这时在创建表时使用default设置默认值,就可以观察到default中设置的默认值。

3)unique唯一约束:指定约束的每列必须有唯一值。

指定列出现相同值会报错。

4)primary key 主键约束:每一行记录的身份标识,类似not null 和unique的组合,可以由一个或多个列组成,但是一个表里只能有一个主键。

主键必须是唯一值,且不能包含null。

这是直接创建主键:

创建自增主键:

自增主键一般是用于int ,bigint类型,如果使用主键修饰varchar就会报错。

主键值可以不连续,当默认自增主键时不设置值插入,由1开始自增,如果插入一条设置好值的记录,下一条记录就会从最大的值开始继续自增。

5)foreign key 外键约束:外键约束是一种关系型约束,用于两个表之间进行关联。

通过这样的两个表中,class中的classid通过外键去约束student中的classid这样的方式,此时,class表就叫做父表,student就叫做子表,父表是约束别人的表,具体而言就是student表的数据要出自class表中。

使用外键创建一个子表:

和主键不同,外键是像设置变量一样单独一项,foreign key后的括号内填写的是当前要创建子表时要用外键被约束的变量,references是出自的意思,后面接父表的约束别人的变量。

当插入一个不存在于父表的数据(只有被外键约束的变量要出自父表),就会报错;同样的要是修改一个不存在父表的值也会报错。

创建一个父表:

这里要注意要约束子表的变量要使用主键或unique修饰。

对父表而言,进行删除和修改的数据已经被子表引用也是不可取的,会报错,如果父表被外键约束的变量没有被子表引用,修改和删除是可操作的。

要想直接删除父表,会报错,因为要想删除父表要先删除父表里的记录,但是有一条记录被子表引用,此时就会报错。所以就要先删除子表再删除父表。

表的设计

根据实际的需求,明确要创建几个表,这几个表之间的存在什么样的关系:

先梳理好几个表中的“实体”(这里的实体例如教务系统中的学生,班级,作业.....)。

再确定实体间的关系。

实体间的关系

不同的关系设计表也是不同的

1)一对一:例如一个学生只能拥有一个账号,一个账号也只能被一个学生拥有。

2)一对多:例如一个学生只能在一个班级,但是一个班级可以包含多个学生。

3)多对多:一个学生可以选择多门课程,一门课程可以包含多个学生。

4)没关系

相关文章:

MySQL初阶:数据库约束和表的设计

数据库约束 数据库约束是针对数据库中的表中的数据进行施加规则和条件,用于确保数据的准确性和可靠性。 数据库约束类型 1)not null 非空类型 :指定非空类型的列不能存储null,如果插入的数据是null便会报错。 2)de…...

2025年API安全防御全解析:应对DDoS与CC攻击的智能策略

2025年,API作为数字生态的核心枢纽,已成为攻击者的主要目标。DDoS攻击规模突破T级峰值,CC攻击则借助AI技术模拟真实用户行为,传统防御手段面临失效风险。如何在保障高并发业务稳定性的同时抵御复杂攻击?本文结合前沿技…...

【Bootstrap V4系列】学习入门教程之 组件-表单(Forms)高级用法

Bootstrap V4系列 学习入门教程之 组件-表单(Forms)高级用法 Layout 布局一、Form groups 表单组二、Form grid 表单网格2.1 Form row 表单行2.2 Horizontal form 水平形式表单2.3 Column sizing 列尺寸2.4 Auto-sizing 自动调整大小 三、Inline forms 内…...

Redis 主从复制集群搭建教程

目录 为什么要搭建 Redis 主从复制集群?搭建 Redis 主从复制集群前提条件步骤一:创建 Docker 网络步骤二:启动 Redis 主节点步骤三:启动 Redis 从节点步骤四:验证复制状态步骤五:使用 Python 连接 Redis 集…...

使用AES-CBC + HMAC-SHA256实现前后端请求安全验证

AES-CBC HMAC-SHA256 加密验证方案,下面是该方案二等 优点 与 缺点 表格,适用于文档、评审或技术选型说明。 ✅ 优点表格:AES-CBC HMAC-SHA256 加密验证方案 类别优点说明🔐 安全性使用 AES-CBC 对称加密使用 AES-128-CBC 是可…...

耳机插进电脑只有一边有声音怎么办 解决方法分享

当您沉浸在音乐或电影中时,如果突然发现耳机只有一边有声音,这无疑会破坏您的体验。本文将提供一系列检查和修复方法,帮助您找出并解决问题,让您的耳机恢复正常的立体声效果。 一、检查耳机连接是否正常 首先需要确认耳机与播放设…...

【物联网】基于树莓派的物联网开发【1】——初识树莓派

使用背景 物联网开发从0到1研究,以树莓派为基础 场景介绍 系统学习Linux、Python、WEB全栈、各种传感器和硬件 接下来程序猫将带领大家进军物联网世界,从0开始入门研究树莓派。 认识树莓派 正面图示: 1:树莓派简介 树莓派…...

AI生成虚假漏洞报告污染漏洞赏金平台

漏洞赏金计划遭遇AI伪造报告冲击 曾经因激励独立研究人员报告真实漏洞而备受赞誉的漏洞赏金计划,如今正面临AI生成虚假漏洞报告的重大挑战。这些伪造的漏洞报告在业内被称为"AI垃圾",不仅浪费维护人员的时间,更令人担忧的是&#…...

一种安全不泄漏、高效、免费的自动化脚本平台

在数字化转型加速的今天,自动化脚本工具已成为提升效率的重要助手。然而,用户在选择这类工具时,往往面临两大核心关切:安全性与成本。冰狐智能辅助(IceFox Intelligent Assistant)作为一款新兴的自动化脚本…...

MongoDB知识框架

简介:MongoDB 是一个基于分布式文件存储的数据库,属于 NoSQL 数据库产品,以下是其知识框架总结: 一、数据模型 文档:MongoDB 中的数据以 BSON(二进制形式的 JSON)格式存储在集合中,…...

2025数维杯数学建模C题完整分析参考论文(共36页)(含模型、可运行代码、数据)

2025数维杯数学建模竞赛C题完整参考论文 目录 摘要 一、问题重述 二、问题分析 三、模型假设 四、符合与定义说明 五、 模型建立与求解 5.1问题1 5.1.1问题1思路分析 5.1.2问题1模型建立 5.1.3问题1求解结果 5.2问题2 5.2.1问题2思路分析 5.2.2问题2…...

深度学习 ———— 迁移学习

迁移学习原理 什么是迁移学习? 迁移学习利用在大规模数据集(如ImageNet)上预训练的模型,改装小数据集(如CIFAR-10)。优势: 减少训练时间:预训练模型已学习通用特征(如边…...

第十七章,反病毒---防病毒网管

基于杀毒软件的一种防御技术,是一种被动 的防御技术。 防病毒网关和主机上的杀毒软件在功能上互补和协作的关系。 病毒 --- 一般是感染或者附着在应用程序或文件中的;一般都是通过邮件或文件共享的方式进行传 输,从而对主机进行破坏 。 计…...

信赖域策略优化TRPO算法详解:python从零实现

🧠 向所有学习者致敬! “学习不是装满一桶水,而是点燃一把火。” —— 叶芝 我的博客主页: https://lizheng.blog.csdn.net 🌐 欢迎点击加入AI人工智能社区! 🚀 让我们一起努力,共创…...

powershell_bypass.cna 插件(适配 Cobalt Strike 4.0 的免费版本下载地址)

目录 1. powershell_bypass.cna 插件(适配 Cobalt Strike 4.0 的免费版本下载地址) 2. 生成 EXE 文件时出现 "运行异常,请查看 Script Console" 的处理方法 处理步骤 3. powershell_bypass.cna 插件的功能及实际操作步骤 功能…...

从Dockerfile 构建docker镜像——保姆级教程

从Dockfile开始 dockerfile简介开始构建1、编辑dockerfile2、构建镜像3、拉取镜像4、推送到镜像仓库 镜像的优化1、优化的基本原则2、多阶段构建 dockerfile简介 开始构建 1、编辑dockerfile # 使用官方的 Python 3.8 镜像作为基础镜像 FROM python:3.8-slim# 设置工作目录 …...

Mac配置php开发环境(多PHP版本,安装Redis)

配置PHP开发环境 配置多版本PHP 因为开发需要,有时需要根据项目及时切换多个版本,除了使用Docker以外,常用的就是直接在mac配置PHP版本 使用 Homebrew Mac 可以通过 Homebrew 来安装或切换 PHP 版本: brew update brew insta…...

Quorum协议原理与应用详解

一、Quorum 协议核心原理 基本定义 Quorum 是一种基于 读写投票机制 的分布式一致性协议,通过权衡一致性(C)与可用性(A)实现数据冗余和最终一致性。其核心规则为: W(写成功副本数) …...

五一旅游潮涌:数字化如何驱动智慧旅游升级

文化和旅游部5月6日公布2025年“五一”假期文化和旅游市场情况,经文化和旅游部数据中心测算,假期5天,全国国内出游3.14亿人次,同比增长6.4%;国内游客出游总花费1802.69亿元,同比增长8.0%。在这组流动的数字…...

WPF 3D图形编程核心技术解析

一、三维坐标系系统 WPF采用右手坐标系系统,空间定位遵循: X 轴 → 右 Y 轴 → 上 Z 轴 → 观察方向 X轴 \rightarrow 右\quad Y轴 \rightarrow 上\quad Z轴 \rightarrow 观察方向 X轴→右Y轴→上Z轴→观察方向 三维坐标值表示为 ( x , y , z ) (x, y,…...

BLURRR剪辑软件免费版:创意剪辑,轻松上手,打造个性视频

BLURRR剪辑软件免费版是一款功能强大、简约易用且充满创意的视频剪辑软件。它集多种功能于一体,无论是新手还是资深用户,都能通过简单的操作剪辑出高质量、富有创意的视频。BLURRR不仅提供了丰富的剪辑工具,还划分了不同的内容模块&#xff0…...

TIME - MoE 模型代码 3.2——Time-MoE-main/time_moe/datasets/time_moe_dataset.py

源码:GitHub - Time-MoE/Time-MoE: [ICLR 2025 Spotlight] Official implementation of "Time-MoE: Billion-Scale Time Series Foundation Models with Mixture of Experts" 这段代码定义了一个用于时间序列数据处理的 TimeMoEDataset 类,支…...

解决SQL Server SQL语句性能问题(9)——正确使用索引

前述章节中,我们介绍和讲解了SQL调优所需要的基本知识和分析方法,那么,通过前述这些知识和方法定位到问题后,接下来,我们该怎么做呢?那就是本章的内容,给出解决SQL语句性能问题的、科学而合理的方案和方法。 本章主要对解决SQL语句性能问题的几种常用方法进行说明和讲解…...

【论文阅读】FreePCA

FreePCA: Integrating Consistency Information across Long-short Frames in Training-free Long Video Generation via Principal Component Analysis 原文摘要 问题背景 核心挑战: 长视频生成通常依赖在短视频上训练的模型,但由于视频帧数增加会导致数…...

leetcode 383. Ransom Note

题目描述 代码 class Solution { public:bool canConstruct(string ransomNote, string magazine) {vector<int> table(26,0);for(char ch : magazine){table[ch-a];}for(char ch : ransomNote){table[ch-a]--;if(table[ch-a] < 0)return false;}return true;} };...

SAF利用由Varjo和AFormX开发的VR/XR模拟器推动作战训练

通过将AFormX的先进军用飞行模拟器与Varjo的行业领先的VR/XR硬件相结合&#xff0c;斯洛文尼亚武装部队正以经济高效、沉浸式的训练方式培训战斗机飞行员&#xff0c;以提高其战术准备和作战效率。 挑战&#xff1a;获得战术军事航空训练的机会有限 军事航空训练长期以来一直…...

基于公共卫生大数据收集与智能整合AI平台构建测试:从概念到实践

随着医疗健康数据的爆发式增长,如何有效整合、分析和利用这些数据已成为公共卫生领域的重要挑战。传统方法往往难以应对数据的复杂性、多样性和海量性,而人工智能技术的迅猛发展为解决这些挑战提供了新的可能性。基于数据整合与公共卫生大数据的AI平台旨在构建一个全面的生态…...

【Pandas】pandas DataFrame clip

Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.clip([lower, upper, axis, inplace])用于截…...

深度学习基础--目标检测常见算法简介(R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN、SSD、YOLO)

博主简介&#xff1a;努力学习的22级本科生一枚 &#x1f31f;​&#xff1b;探索AI算法&#xff0c;C&#xff0c;go语言的世界&#xff1b;在迷茫中寻找光芒​&#x1f338;​ 博客主页&#xff1a;羊小猪~~-CSDN博客 内容简介&#xff1a;常见目标检测算法简介​&#x1f…...

嵌套路由~

### 作业 - App.vue vue <script setup></script> <template> <router-link to"/home">首页</router-link> <router-link to"/profile">个人资料</router-link> <router-link to"/posts"&g…...

影楼精修-牙齿美型修复算法解析

本文介绍影楼修图中的牙齿美型修复功能的算法实现。 我们大部分人的牙齿看起来都可能会有一些问题&#xff0c;比如牙齿不平整&#xff0c;大门牙&#xff0c;牙齿泛黄&#xff0c;牙齿发黑&#xff0c;牙齿残缺等等&#xff0c;拍照之后影响美观度&#xff0c;正是这个爱美的…...

k8s之ingress

在前面我们已经知道,Service对集群之外暴露服务的主要方式有两种:NodePort 和 LoadBalance,但是这两种方式,都有一定的缺点 NodePort方式的缺点是会占用很多集群机器的端口,那么当集群服务变多的时候,这个缺点就更加明显,L4转发,无法根据http header和path进行路由转发…...

PDF文档解析新突破:图表识别、公式还原、手写字体处理,让AI真正读懂复杂文档!

要想LLM大模型性能更佳&#xff0c;我们需要喂给模型看得懂的高质量数据。那有没有一种方法&#xff0c;能让我们把各种文档“读懂”&#xff0c;再喂给大模型使用呢&#xff1f; 如果你用传统OCR工具直接从PDF中提取文本&#xff0c;结果往往是乱序、缺失、格式错乱。因为实际…...

Ubuntu 第11章 网络管理_常用的网络配置命令

为了管理网络&#xff0c;Linux提供了许多非常有用的网络管理命令。利用这些命令&#xff0c;一方面可以有效地管理网络&#xff0c;另一方面出现网络故障时&#xff0c;可以快速进行诊断。本节将对Ubuntu提供的网络管理命令进行介绍。 11.2.1 ifconfig命令 关于ifconfig命令&…...

C++ 观察者模式详解

观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了对象间的一对多依赖关系&#xff0c;当一个对象&#xff08;主题&#xff09;状态改变时&#xff0c;所有依赖它的对象&#xff08;观察者&#xff09;都会自动得到通知并更新。 核…...

不止是UI库:React如何重塑前端开发范式?

React&#xff1a;引领现代前端开发的声明式UI库 在当今快速发展的前端世界&#xff0c;React以其声明式、组件化和高效的特性&#xff0c;稳坐头把交椅&#xff0c;成为构建交互式用户界面的首选JavaScript库。本文将带你快速了解React的核心魅力、主要优势以及生态发展&…...

MapReduce报错 HADOOP_HOME and hadoop.home.dir are unset.

运行课程讲解内容出现这个报错&#xff1a; 1、在电脑里解压之前发过的Hadoop安装包 2、配置用户变量 3、配置系统变量 4、配置系统Path变量 5、下载链接的两个文件&#xff1a; 链接: https://pan.baidu.com/s/1aCcpGGR1EE4hEZW624rFmQ?pwd56tv 提取码: 56tv –来自百度…...

深入探索Laravel框架中的Blade模板引擎

Laravel是一个广泛使用的PHP框架&#xff0c;以其简洁、优雅和强大的功能著称。Blade是Laravel内置的模板引擎&#xff0c;提供了一套简洁而强大的模板语法&#xff0c;帮助开发者轻松构建视图层。本文将深入探讨Blade模板引擎的特性、使用方法和最佳实践。 1. Blade模板引擎简…...

分析NVIDIA的股价和业绩暴涨的原因

NVIDIA自2016年以来股价与业绩的持续高增长&#xff0c;是多重因素共同作用的结果。作为芯片行业的领军企业&#xff0c;NVIDIA抓住了技术、战略、市场与行业趋势的机遇。以下从技术创新、战略布局、市场需求、财务表现及外部环境等维度&#xff0c;深入分析其成功原因&#xf…...

P2572 [SCOI2010] 序列操作 Solution

Description 给定 01 01 01 序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​)&#xff0c;并定义 f ( l , r ) [ ( ∑ i l r a i ) r − l 1 ] f(l,r)[(\sum\limits_{il}^r a_i)r-l1] f(l,r)[(il∑r​ai​)r−l1]. 执行 m m m 个操作&am…...

初等数论--欧拉函数积性的证明

文章目录 1. 简介2. 证明一&#xff1a;唯一分解定理容斥原理3. 证明二&#xff1a;中国剩余定理4. 引理证明5. 参考 1. 简介 欧拉函数 ϕ ( n ) \phi(n) ϕ(n)表示在小于等于 n n n的正整数中与 n n n互质的个数。 如 ϕ ( 6 ) 2 ( 1 5 ) ϕ ( 12 ) 4 ( 1 5 7 11 ) \phi(…...

MCP(Model Context Protocol)是专为LLM(大语言模型)应用设计的标准化协议

核心定义 MCP&#xff08;Model Context Protocol&#xff09;是专为LLM&#xff08;大语言模型&#xff09;应用设计的标准化协议&#xff0c;通过安全可控的方式向AI应用暴露数据和功能。主要提供以下能力&#xff1a; 标准化的上下文管理安全的功能调用接口跨平台的数据交…...

Midscene.js Chrome 插件实战:AI 驱动的 UI 自动化测试「喂饭教程」

Midscene.js Chrome 插件实战:AI 驱动的 UI 自动化测试「喂饭教程」 前言一、Midscene.js 简介二、环境准备与插件安装1. 安装 Chrome 插件2. 配置模型与 API Key三、插件界面与功能总览四、实战演练:用自然语言驱动网页自动化1. 典型场景一(Action):账号登录步骤一:打开…...

Python在大数据机器学习模型的多模态融合:深入探索与实践指南

一、多模态融合的全面概述 1.1 多模态融合的核心概念 多模态融合(Multimodal Fusion)是指将来自不同传感器或数据源(如图像、文本、音频、视频、传感器数据等)的信息进行有效整合,以提升机器学习模型的性能和鲁棒性。在大数据环境下,多模态融合面临着独特的挑战和机遇: 数…...

C++ 访问者模式详解

访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为设计模式&#xff0c;它允许你将算法与对象结构分离&#xff0c;使得可以在不修改现有对象结构的情况下定义新的操作。 核心概念 设计原则 访问者模式遵循以下设计原则&#xff1a; 开闭原则&#xff1a;可以添…...

实验-有限状态机2(数字逻辑)

目录 一、实验内容 1.1 介绍 1.2 内容 二、实验步骤 2.1 电路原理图 2.2 步骤 2.3 状态图 4.4 状态转换表和输出表 2.5 具体应用场景 三、调试 四、实验使用环境 五、实验小结与思考 5.1 遇到的问题及解决方法 5.2 实验收获 一、实验内容 1.1 介绍 在解决更复…...

IC解析之TPS92682-Q1(汽车LED灯控制IC)

目录 1 IC特性介绍2 主要参数3 接口定义4 工作原理分析TPS92682-Q1架构工作模式典型应用通讯协议 控制帧应答帧协议5 总结 1 IC特性介绍 TPS92682 - Q1 是德州仪器&#xff08;TI&#xff09;推出的一款双通道恒压横流控制器&#xff0c;同时还具有各种电器故障保护&#xff0c…...

数据结构-堆

目录 heapq 导入 初始化 插入元素 返回最小值 PriorityQueue 导入 初始化 入队 出队 堆是一颗树&#xff0c;其每个节点都有一个值&#xff0c;且&#xff08;小根堆&#xff1a;每个父节点都小于等于其子节点 &#xff08;在进树时不断进行比较 STL中的 priority…...

提升编程效率的利器:Zed高性能多人协作代码编辑器

在当今这个快节奏的开发环境中&#xff0c;一个高效、灵活的代码编辑器无疑对开发者们起着至关重要的支持作用。Zed&#xff0c;作为来自知名编辑器Atom和语法解析器Tree-sitter的创造者的心血之作&#xff0c;正是这样一款高性能支持多人合作的编辑神器。本文将带领大家深入探…...

【25软考网工】第六章 网络安全(1)网络安全基础

博客主页&#xff1a; christine-rr-CSDN博客 专栏主页&#xff1a; 软考中级网络工程师笔记 大家好&#xff0c;我是christine-rr !目前《软考中级网络工程师》专栏已经更新二十多篇文章了&#xff0c;每篇笔记都包含详细的知识点&#xff0c;希望能帮助到你&#xff01; 今日…...