MYSQL学习笔记(十):约束介绍(如:非空、唯一、主键、外键、级联、默认、检查约束)

前言

  • 学习和使用数据库可以说是程序员必须具备能力,这里将更新关于MYSQL的使用讲解,大概应该会更新30篇+,涵盖入门、进阶、高级(一些原理分析);
  • 这一篇讲解“约束”,如:非空、唯一、主键、外键、级联、默认、检查约束等;
  • 虽然MYSQL命令很多,但是自己去多敲一点,到后面忘记了,查一下就可以回忆起来使用了;
  • 这一系列也是本人学习MYSQL做的笔记,也是为了方便后面忘记查询;
  • 参考资料:尚硅谷、黑马、csdn和知乎博客;
  • 欢迎收藏 + 关注,本人将会持续更新后端和AI算法的学习笔记

    文章目录

    • 约束
      • 1. 约束(Constraint)概念
        • 1.1 为什么需要约束
        • 1.2 什么是约束
        • 1.3 约束分类
          • 1.3.1 根据约束的字段分类
          • 1.3.2 根据约束的作用范围分类
          • 1.3.3 根据约束的作用分类
      • 2. 非空约束(NK)
        • 2.1 概念
        • **2.2 特点**
        • 2.3 添加非空约束
        • 2.4 删除非空约束
      • 3. 唯一约束(UK)
        • 3.1 概念
        • 3.2 特点
        • 3.3 添加唯一约束
        • 3.4 删除唯一约束
      • 4. 主键约束(PK)
        • 4.1 概念
        • 4.2 特点
        • 4.3 单字段主键
        • 4.4 多字段主键(复合主键)
        • 4.5 删除主键
        • 4.5 设置字段值自动增加(AUTO_INCREMENT)
          • 4.5.1 概念
          • 4.5.2 特点
          • 4.5.3 指定自增约束
          • 4.5.3 删除自增约束(和非空一样)
      • 5. 外键约束(FOREIGN KEY,FK)
        • 5.1 概念
        • 5.2 特点
        • 5.3 添加外键约束
        • 5.4 演示
          • 5.4.1 创建表
          • 5.4.2 操作表
        • 5.5 阿里开发规范
        • 5.6 级联操作
      • 6. 默认值约束和检查约束
        • 6.1 检查约束(Check)
        • 6.2 默认值约束(Default)

约束

1. 约束(Constraint)概念

1.1 为什么需要约束

数据完整性(Data Intergrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。

对于已经创建好的表,虽然字段的数据类型决定了所能存储的数据类型,但是表中所存储的数据是否合法并没有进行检查,比如:性别只能填男女,或者其他(0, 1这一类数字),这个时候会就需要对输入的数据进行检查了。

在具体使用MySQL 软件时,如果想针对表中的数据做一些完整性检查操作,可以通过表的约束来完成

为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制,主要从以下四个方面考虑:

  • 实体完整性(Entity Integrity)如:同一张表中,不能存在两条完全相同无法区分的记录
  • 域完整性(Domain Integrity)如:年龄范围0-120,性别范围 “男/女”
  • 引用完整性(Referential Integrity)如:员工所在部门,必须要在部门表中存在
  • 用户自定义完整性(User-defined Integrity)如:用户名唯一、密码不能为空等

1.2 什么是约束

约束是表级的强制规定。

可以在创建表时规定约束(通过CREATE TABLE语句),或者在表创建之后通过ALTER T ABLE语句规定约束。

1.3 约束分类

1.3.1 根据约束的字段分类
  • 单列约束
  • 多列约束
1.3.2 根据约束的作用范围分类
  • 列级约束
  • 表级约束

区别

① 位置不同 :列级约束是写在列的后面,标记约束时写在所有字段的最后面

② 支持的约束类型不同:列级约束可以支持所有的约束类型,表级约束不能支持非空和默认

③ 列级约束不可以起约束名,表记约束可以起约束名(主键除外,主键使用的PRIMARY KEY)

1.3.3 根据约束的作用分类
完整性约束关键字说明
NOT NULL(NK)约束字段的值不能为空
DEFAULT设置字段的默认值
UNIQUE KEY(UK)约束字段的值是唯一(同一列不能出现相同的值)
PRIMARAY KEY(PK)约束字段为表的主键,可以作为该表记录的唯一标识
AUTO_INCREMENT约束字段的值为自动增加
FOREIGN KEY(FK)约束字段为表的外键
CHECK()
  • 查看某个表已有的约束

    SELECT  * FROM information_schema.TABLE_CONSTRAINTS
    WHERE table_name='emp';
    

2. 非空约束(NK)

2.1 概念

当数据库表中的某个字段上的内容不希望设置为NULL时,则可以使用NK约束进行设置。

使用: 在创建数据库表时为某些字段加上“NOT NULL”约束条件,保证所有记录中该字段都有值。如果用户插入的记录中,该字段为空值,则数据库管理系统会报错

2.2 特点

  • 默认情况下,所有类型的值都可以是NULL
  • 一个表可以有很多字段指定非空约束
  • 空串" "不等于NULL,0也不等于NULL,NULL也不等于NULL

2.3 添加非空约束

  1. 创建表时
CREATE TABLE table_name(
	字段名 数据类型 NOT NULL,
    ...
);
  1. 创建之后添加
ALTER TABLE <表名> MODIFY 字段名 数据类型 约束;

2.4 删除非空约束

# modify 本质是修改字段属性
ALTER TABLE 表名 MODIFY 字段名 数据类型 NULL;
#或
ALTER TABLE 表名 MODIFY 字段名 数据类型;

3. 唯一约束(UK)

3.1 概念

当数据库表中的某个字段上的内容不允许重复时,则可以使用UK约束进行设置。

使用:UK约束在创建数据库表时为某些字段加上“UNIQUE”约束条件,保证所有记录中该字段上的值不重复。

如果用户插入的记录中,该字段上的值与其他记录里该字段上的值重复,则数据库管理系统会报错。

3.2 特点

  • 同一个表可以有多个唯一约束
  • 唯一约束允许值为NULL
  • 在创建唯一约束的时候,如果不给唯一约束命名,那么约束名就和字段名相同

3.3 添加唯一约束

  1. 创建表时添加
CREATE TABLE table_name(
	字段名 数据类型 UNIQUE KEY,
    ...
);
  1. 创建表后添加
  • 方法一
ALTER TABLE <表名> MODIFY 字段名 数据类型 UNIQUE;
  • 方法二
ALTER TABLE <表名> ADD [CONSTRAINT 约束名] UNIQUE [KEY](字段名);

3.4 删除唯一约束

唯一约束特点

  • 添加唯一约束的列上会自动创建唯一索引
  • 删除唯一约束只能通过删除唯一索引的方式删除
  • 删除时需要指定唯一索引名,唯一收益名和唯一约束名相同。
  • 如果创建唯一约束时未指定名称,如果是单列,就默认和列名相同;如果是组合列,那么默认和()中第一个列名相同。
ALTER TABLE <表名> DROP INDEX <索引名>;

#查看索引名
SELECT  * FROM information_schema.TABLE_CONSTRAINTS
WHERE table_name='emp';

​ 可以通过SHOW INDEX FROM 表名;查看表的所有

4. 主键约束(PK)

4.1 概念

当想用数据库表中的某个字段来唯一标识所有记录时,则可以使用PK约束进行设置。

使用:PK约束在创建数据库表时为某些字段加上“PRIMARY KEY”约束条件,则该字段可以唯一地标示所有记录。

作用:在数据库表中之所以设置主键,是为了便于数据库管理系统快速地查找到表中的记录。

注意: 在具体设置主键约束时,必须要满足主键字段的值是唯一、非空的

4.2 特点

  • 主键约束相当于 唯一约束+非空约束,意味着不允许重复和NULL值
  • 主键约束对应着表中的一列或者多列(复合主键)
  • 如果是多列组合的复合主键约束,那么这些列都不允许为NULL值,并且组合的值不允许重复
  • 当创建主键约束时,系统默认会在所在的列或组合上建立对应的主键索引(能够根据主键查询的,就根据主键查询,效率更高),如果删除主键约束,主键约束对应的索引就自动删除了
  • 需要注意一点的是,不要修改主键字段的值。因为主键是数据记录的唯一标识,如果修改了主键的值,就有可能会破坏数据的完整性。

4.3 单字段主键

  • 创建表时指定主键约束
CREATE TABLE table_name(
	字段名 数据类型  PRIMARY KEY,
    ...
);
  • ALTER TABLE添加主键约束,注意:如果在添加之前字段里存在空或者不唯一情况,则添加失败
ALTER TABLE <表名> ADD PRIMARY KEY(字段名);

4.4 多字段主键(复合主键)

当主键有多个字段组合而成时,需要通过SQL语句CONSTRAINT来实现,语法形式如下:

CREATE TABLE table_name(
	字段名 数据类型,
    ...
    [CONSTRAINT 约束名] PRIMARY KEY(字段1,字段2...)
);

在上述语句中,在字段定义完之后统一设置主键,PRIMARY KEY关键字括号中的字段可以有多个,需要通过逗号分割,用来实现设置多字段主键。

4.5 删除主键

ALTER TABLE <表名> DROP PRIMARY KEY;

4.5 设置字段值自动增加(AUTO_INCREMENT)

4.5.1 概念

AUTO_INCREMENT是 MySQL 唯一扩展的完整性约束,当为数据库表中插入新记录时,字段上的值会自动生成唯一的ID

由于设置AUTO_INCREMENT约束后的字段会生成唯一的ID,所以该字段也经常会设置成PK主键

4.5.2 特点
  • 一个表最多只能有一个自增长列
  • 当需要产生唯一标识符或者顺序值时,可设置自增长
  • 自增长列约束的列必须是键列(主键列,唯一键列)
  • 自增约束的列的数据类型必须是整数类型
  • 如果自增列为NULL,会在当前最大值的基础上自增;如果自增列手动指定了具体值,直接赋值具体值。
4.5.3 指定自增约束
  1. 方法一:创建表是指定
CREATE TABLE table_name(
	字段名 数据类型 PRIMARY KEY|UNIQUE AUTO_INCREMENT,
    ...
);
  1. 方法二:通过ALTER TABLE添加
ALTER TABLE <表名> MODIFY 字段名 数据类型 AUTO_INCREMENT;
4.5.3 删除自增约束(和非空一样)
ALTER TABLE <表名> MODIFY 字段名 数据类型;

5. 外键约束(FOREIGN KEY,FK)

前面介绍的完整性约束都是在单表中进行设置,而外键约束则保证多个表(通常为两个表)之间的参照完整性,即构建于两个表的两个字段之间的参照关系

5.1 概念

设置外键约束的两个表之间会具有父子关系,即子表中某个字段的取值范围由父表所决定。例如,表示一种部门和雇员关系,即每个部门有多个雇员。首先应该有两个表:部门表和雇员表,然后雇员表中有一个表示部门编号的字段deptno,其依赖于部门表的主键,这样字段deptno就是雇员表的外键,通过该字段部门表和雇员表建立了关系。

对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)

在具体设置FK约束时,设置FK约束的字段必须依赖于数据库中已经存在的父表的主键,同时外键可以为NULL

在这里插入图片描述

5.2 特点

  • 从表的外键列必须引用(参考)主表的主键或唯一约束的列:因为参考的值必须是唯一的
  • 在创建外键约束时,如果不给外键约束命名,默认名不是列名,而是自动产生一个外键名,如emp11_ibfk_1,也可以指定外键约束名
  • 创建表时必须先创建主表,再创建从表
  • 删除表是必须先删除从表(或先删除外键约束),再删除主表
  • 当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该字段的记录,然后才可以删除主表中的记录
  • 当创建外键约束时,系统默认会在所在的列上建立对应的普通索引;删除外键约束之后,必须手动删除对应的索引

看起来,很麻烦,😂,但是一般不用,阿里规范中禁止使用,很明显,从表依赖于主表,尤其是数据变化的时候,还涉及到级联操作,如果数据量庞大同时进行修改,这个无疑是一个非常耗时的操作。

5.3 添加外键约束

设置表中某字段的FK 约束非常简单,其语法形式如下:

CREATE TABLE table_name(
	字段名 数据类型,
    字段名 数据类型,
    ...
    CONSTRAINT 外键约束名 FOREIGN KEY (字段名1)
    	REFERENCES 主表名 (字段名2)
);

1、建表时添加

# 主表,创建主键
CREATE TABLE 主表名
(
	字段名 数据类型 PRIMARY KEY,
    字段名 数据类型,
    ...
);

# 从表,创建从键
CREATE TABLE 从表名
(
    字段名 数据类型 PRIMARY KEY,
    字段名 数据类型,
    ...
    CONSTRAINT 约束名 FOREIGN KEY(外键约束字段名)
    REFERENCES 主表(参考字段名)
);

2、建表后添加

一般情况下,表与表的关联都是提前设计好的,因此,会在创建表的时候就把外键约束定义好,但是也有例外,表后添加语法如下:

ALTER TABLE 从表名 ADD [CONSTRAINT 约束名] FOREIGN KEY(从表字段名) REFERENCES 主表名(被参考字段) [ON UPDATE XX][ON DELETE XX];

范例

ALTER TABLE emp ADD [CONSTRAINT fk_emp_deptno] FOREIGN KEY(deptno) REFERENCES dept(deptno);

5.4 演示

5.4.1 创建表
#新建数据库
CREATE DATABASE db_maye;
USE db_maye;

#创建表
CREATE TABLE dept
(
	deptno INT PRIMARY KEY COMMENT '部门编号',
	dname VARCHAR(20) NOT NULL  COMMENT '部门名称',
	loc   VARCHAR(20)  COMMENT '部门所在位置'
);

# 创建从表
CREATE TABLE emp
(
	empno INT PRIMARY KEY  COMMENT '员工编号',
	ename VARCHAR(10) NOT NULL  COMMENT '员工姓名',
	deptno INT  COMMENT '员工所在部门编号',	#外键必须使用表级约束
	CONSTRAINT fk_emp_deptno FOREIGN KEY(deptno) REFERENCES dept(deptno)
);
5.4.2 操作表
  • 添加记录
#给员工表添加一条记录
INSERT INTO emp(empno,ename,deptno) VALUES(1234,'wy',10);
# 注意:由于主表中没有 10 号部门,故会报错。

#先给dept添加记录,再执行上面的插入语句即可
INSERT INTO dept(deptno,dname,loc) VALUES(10,'hit','深圳');  # 这个时候从表可以添加部门为10号
  • 删除记录
#删除主表dept中的记录,但是会报错,** 必须先删除从表中deptno=10的信息 **
DELETE FROM dept WHERE deptno=10;

#先删除从表emp中参考指定值的记录,再执行上面的删除语句,这样即可删除
DELETE FROM emp WHERE deptno=10;
  • 修改记录
#修改主表dept中的部门编号(把部门编号为10的改为20),这个也会报错,因为修改了后,从表数据没有得到修改,所以,可以先删除从表中deptno=10的部门,在修改主表
UPDATE dept SET deptno=20 WHERE deptno=10;

#先删除从表emp中参考指定值的记录,再执行上面的语句,即可成功
DELETE FROM emp WHERE deptno=10;
  • 删除约束和索引
#先查看约束名
SELECT * FROM information_schema.TABLE_CONSTRAINTS
WHERE table_name='emp1';

#删除外键约束
ALTER TABLE emp1 DROP FOREIGN KEY fk_emp1_deptno;

#查看指定表的索引
SHOW INDEX FROM emp1;
#最后手动删除索引
ALTER TABLE emp1 DROP INDEX fk_emp1_deptno;

5.5 阿里开发规范

【强制】不得使用外键与级联,一切外键概念必须在应用层解决。

说明:部门表dept中的deptno是主键,那么员工表emp中的empno则为外键。如果更新部门表中的deptno,同时触发员工表中的deptno更新,即为级联更新。外键与级联更新适用于单机低并发,不适合分布式、高并发集群;级联更新是强阻塞,存在数据库更新风暴的风险;外键影响数据库的插入速度。

5.6 级联操作

从上面外键演示中可以看出,数据的增删改查的时候,主表和从表很多时候,需要有先后关系,比如:

  • 当我们需要删除部门表(主表)信息时,必须先删除员工表(从表)中关联的数据。

级联操作就是解决这个问题的

  • 级联操作指的就是,当你操作主表时,自动的操作从表,当然这个操作分为几种情况,下面会讲。

一般对于从表和主表最常用的是:两种级联操作

  • 级联删除:当删除主表数据是时自动删除从表中相关数据
  • 级联更新:当一般是主键更新时,自动更新从表的数据

五种级联方式

定义从表的外键时指定的ON UPDATE/ON DELETE子句, InnoDB支持5种方式,分列如下 :

  • CASCADE 级联方式,这个适用场景比较多
    • 在主表上update/delete记录时,同步update/delete掉从表的匹配记录
  • SET NULL 设置为NULL
    • 在主表上update/delete记录时,将从表上匹配记录的列为NULL
  • NO ACTION 不允许更新和删除
    • 如果从表中有匹配的记录,则不允许对主表的关联字段更新
  • RESTRICT 限制
    • 同NO ACTION
  • SET DEFAULT
    • 主表有变更时,子表将外键列设置成一个默认的值,但Innodb不能识别…

注意:可以支持多种方式

范例:

CREATE TABLE emp
(
	empno INT PRIMARY KEY  COMMENT '员工编号',
	ename VARCHAR(10) NOT NULL  COMMENT '员工姓名',
	deptno INT  COMMENT '员工所在部门编号',	#外键必须使用表级约束
	CONSTRAINT fk_emp_deptno FOREIGN KEY(deptno) REFERENCES dept(deptno)
    ON UPDATE CASCADE ON DELETE RESTRICT  # 作用:主表和从表同步更新,删除的时候从表有匹配的,则主表不允许删除
);

6. 默认值约束和检查约束

6.1 检查约束(Check)

作用:检查某个字段的值是否符合什么要求,一般指的是值的范围。

  • 创建表时添加检查约束
#方法一
CREATE TABLE stu
(
	 id INT PRIMARY KEY AUTO_INCREMENT,
	 name VARCHAR(10),
	 gender CHAR CHECK(gender IN('男','女'))   # 简单
);

#2
CREATE TABLE stu
(
	 id INT PRIMARY KEY AUTO_INCREMENT,
	 name VARCHAR(10),
	 gender CHAR CHECK(gender IN('男','女')),
	 age TINYINT,
	 sal DECIMAL(10,2),
	 CONSTRAINT ck_stu_sal CHECK(sal>200),  # CONSTRAINT 约束的意思
	 CONSTRAINT ck_stu_age CHECK(age BETWEEN 18 AND 120)
);
  • 创建表后添加检查约束
ALTER TABLE stu ADD CONSTRAINT ck_stu_sal CHECK(sal>2000);

删除检查约束

ALTER TABLE stu DROP CHECK ck_stu_sal;

6.2 默认值约束(Default)

当为数据库表中插入一条新记录时,如果没有为某个字段赋值,可以设置默认值

语法形式如下:

  • 创建表时添加
CREATE TABLE df
(
		id INT PRIMARY KEY,
		name VARCHAR(10) DEFAULT 'maye'
);
  • 创建表后添加
ALTER TABLE df MODIFY name VARCHAR(10) DEFAULT 'hello';
  • 删除默认约束
ALTER TABLE df MODIFY name VARCHAR(10);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

打印九九乘法表

打印九九乘法表 package struct; ​ public class ForDemo04 {public static void main(String[] args) { ​for (int i 1; i < 9; i) {//System.out.println(1"*"i""(1*i));for (int j 1; j < i; j) {System.out.print(i"*"j"&qu…

实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(2):功能介绍

0 参考资料 PCF8563数据手册&#xff08;第 11 版——2015 年 10 月 26 日&#xff09;.pdf 1 功能介绍 1.1 实时时钟&#xff08;RTC&#xff09;/日历 &#xff08;1&#xff09;PCF8563支持实时时钟&#xff08;RTC&#xff09;&#xff0c;提供时、分、秒信息。对应寄存器…

Hadoop完全分布式安装配置

Hadoop完全分布式安装配置 Hadoop完全分布式安装配置 使用的三台主机名称分别为bigdata1&#xff0c;bigdata2&#xff0c;bigdata3。所使用的安装包名称按自己的修改&#xff0c;安装包可去各大官网上下载* 一.JDK: 1.解压&#xff1a; tar -zxvf /opt/software/jdk-8u212…

TinyEngine v2.2版本发布:支持页面嵌套路由,提升多层级路由管理能力开发分支调整

2025年春节假期已过&#xff0c;大家都带着慢慢的活力回到了工作岗位。为了让大家在新的一年继续感受到 Tiny Engine 的成长与变化&#xff0c;我们很高兴地宣布&#xff1a;TinyEngine v2.2版本正式发布&#xff01;本次更新带来了重要的功能增强------页面支持嵌套路由&#…

图像处理基础(8):图像的灰度直方图、直方图均衡化、直方图规定化(匹配)

本文主要介绍了灰度直方图相关的处理&#xff0c;包括以下几个方面的内容&#xff1a; • 利用OpenCV计算图像的灰度直方图&#xff0c;并绘制直方图曲线 • 直方图均衡化的原理及实现 • 直方图规定化&#xff08;匹配&#xff09;的原理及实现 图像的灰度直方图 一…

C++-第十二章: AVL树

目录 第一节&#xff1a;AVL树的特征 第二节&#xff1a;实现思路 2-1.插入 2-1-1.右单旋 2-1-2.左单旋 2-1-3.左右双旋 2-1-4.右左双旋 2-1-5.总结 2-2.删除 第三节&#xff1a;代码实现 3-1.Node类 3-2.AVLTree类 3-2-1.Insert函数 3-2-2.Height函数 3-2-3.Balance函数 3-…

学习路程八 langchin核心组件 Models补充 I/O和 Redis Cache

前序 之前了解了Models&#xff0c;Prompt&#xff0c;但有些资料又把这块与输出合称为模型输入输出&#xff08;Model I/O&#xff09;‌&#xff1a;这是与各种大语言模型进行交互的基本组件。它允许开发者管理提示&#xff08;prompt&#xff09;&#xff0c;通过通用接口调…

【fnOS飞牛云NAS本地部署DeepSeek-R1结合内网穿透远程访问告别服务器繁忙】

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

ISIS(中间系统到中间系统)——基础

ISIS是一项通用的动态路由协议&#xff0c;其隶属于链路状态路由协议&#xff0c;最初运行与OSI七层的网络层&#xff0c;采用组播地址224.0.0.14和224.0.0.15两个组波段&#xff0c;由于其较高的拓展性与高速收敛&#xff0c;被大多数运营商网络所使用 起源 ISIS最初是由国际…

DeepSeek本地部署:开启智能搜索的本地之旅

前言 嘿&#xff0c;朋友们&#xff01;最近国产大模型DeepSeek特别火&#xff0c;以至于频繁出现反应迟缓甚至宕机的情况&#xff0c;和两年前ChatGPT刚推出时的遭遇颇为相似。这让我想起了那句老话&#xff1a;“自己动手&#xff0c;丰衣足食”。万幸的是&#xff0c;DeepSe…

初会学习记录

【25初级会计《实务》】第一章&#xff1a;权责发生制举例_哔哩哔哩_bilibili 务实&#xff1a; 第一章 (1)会计概念&#xff0c;职能和目标&#xff1a; 2025年2月25日&#xff1a; (2)会计假设&#xff1a; 2025年2月26日&#xff1a; (3)会计核算基础&#xff1a; 202…

STM32——HAL库开发笔记22(定时器3—呼吸灯实验)(参考来源:b站铁头山羊)

本文利用前几节所学知识来实现一个呼吸灯实验&#xff1a;两颗led灯交替呼吸。 一、STM32CubeMX配置 step1&#xff1a;配置调试接口 step2&#xff1a;配置定时器 定时器1位于APB2总线上&#xff0c;如上图所示。 step3&#xff1a;配置时基单元 按照下图配置 时钟来源配置…

深度剖析数据中台架构图,铸造数字文明的基石

🔥🔥 AllData大数据产品是可定义数据中台,以数据平台为底座,以数据中台为桥梁,以机器学习平台为中层框架,以大模型应用为上游产品,提供全链路数字化解决方案。 ✨奥零数据科技官网:http://www.aolingdata.com ✨AllData开源项目:https://github.com/alldatacenter/a…

物联网通信应用案例之《智慧农业》

案例概述 在智慧农业方面&#xff0c;一般的应用场景为可以自动检测温度湿度等一系列环境情况并且可以自动做出相应的处理措施如简单的浇水和温度控制等&#xff0c;且数据情况可远程查看&#xff0c;以及用户可以实现远程控制。 基本实现原理 传感器通过串口将数据传递到Wi…

【蓝桥杯】每天一题,理解逻辑(1/90)【Leetcode 移动零】

文章目录 题目解析讲解算法原理【双指针算法思路】(数组下标充当指针)如何划分和执行过程大致 代码详情 题目解析 题目链接&#xff1a;https://leetcode.cn/problems/move-zeroes/description/ 题目意思解析 把所有的零移动到数组的末尾保持非零元素的相对顺序 理解了这两层…

DeepSeek R1满血+火山引擎详细教程

DeepSeek R1满血火山引擎详细教程 一、安装Cherry Studio。 Cherry Studio AI 是一款强大的多模型 AI 助手,支持 iOS、macOS 和 Windows 平台。可以快速切换多个先进的 LLM 模型,提升工作学习效率。下载地址 https://cherry-ai.com/ 认准官网&#xff0c;无强制注册。 这…

【框架】参考 Spring Security 安全框架设计出,轻量化高可扩展的身份认证与授权架构

关键字&#xff1a;AOP、JWT、自定义注解、责任链模式 一、Spring Security Spring Security 想必大家并不陌生&#xff0c;是 Spring 家族里的一个安全框架&#xff0c;特别完善&#xff0c;但学习成本比较大&#xff0c;不少开发者都觉得&#xff0c;这个框架“很重” 他的…

Idea2024中搭建JavaFX开发环境并创建运行项目

Idea2024中搭建JavaFX开发环境并创建运行项目 本文以Java语言为例演示如何创建JavaFX开发项目和部署开发环境&#xff0c;读者可以根据个人实际灵活选择相关参数。 一、项目创建与环境搭建步骤 新建JavaFX项目&#xff0c;选择适合项目实际的语言、系统和JDK。 项目设置-设置…

Skyeye 云智能制造办公系统 VUE 版本 v3.15.10 发布

Skyeye 云智能制造&#xff0c;采用 Springboot winUI 的低代码平台、移动端采用 UNI-APP。包含 30 多个应用模块、50 多种电子流程&#xff0c;CRM、PM、ERP、MES、ADM、EHR、笔记、知识库、项目、门店、商城、财务、多班次考勤、薪资、招聘、云售后、论坛、公告、问卷、报表…

Solr中得Core和Collection的作用和关系

Solr中得Core和Collection的作用和关系 一&#xff0c; 总结 在Apache Solr中&#xff0c;Core和Collection 是两个核心概念&#xff0c;他们分别用于单机模式和分布式模式&#xff08;SolrCloud&#xff09;中&#xff0c;用于管理和组织数据。 二&#xff0c;Core 定义&am…