数据库的联合查询

news2024/11/26 20:23:04

数据库的联合查询

  • 简介
    • 为什么要使⽤联合查询
    • 多表联合查询时MYSQL内部是如何进⾏计算的
    • 构造练习案例数据
    • 案例:⼀个完整的联合查询的过程
  • 内连接
    • 语法
    • ⽰例
  • 外连接
    • 语法
  • ⽰例
  • ⾃连接
    • 应⽤场景
    • 示例
    • 表连接练习
  • ⼦查询
    • 语法
    • 单⾏⼦查询
    • 多⾏⼦查询
    • 多列⼦查询
    • 在from⼦句中使⽤⼦查询
  • 合并查询
    • 创建新表并初始化数据
    • Union
    • Union all
  • 插⼊查询结果
    • 语法
    • 示例

简介

为什么要使⽤联合查询

在数据设计时由于范式的要求,数据被拆分到多个表中,那么要查询⼀个条数据的完整信息,就
要从多个表中获取数据,如下图所⽰:要获取学⽣的基本信息和班级信息就要从学⽣表和班级表中获
取,这时就需要使⽤联合查询,这⾥的联合指的是多个表的组合。
在这里插入图片描述

多表联合查询时MYSQL内部是如何进⾏计算的

• 参与查询的所有表取笛卡尔积,结果集在临时表中
在这里插入图片描述
• 观察哪些记录是有效数据,根据两个表的关联关系过滤掉⽆效数据
在这里插入图片描述
如果联合查询表的个数越多,表中的数据量越⼤,临时表就会越⼤,所以根据实际情况确定联合查询
表的个数

构造练习案例数据

-- ----------------------------
-- Table structure for class
-- ----------------------------

CREATE TABLE `class`  (
  `class_id` bigint NOT NULL AUTO_INCREMENT,
  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  PRIMARY KEY (`class_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of class
-- ----------------------------
INSERT INTO `class` VALUES (1, '计算机系2019级1班');
INSERT INTO `class` VALUES (2, '中文系2019级3班');
INSERT INTO `class` VALUES (3, '自动化2019级5班');
-- ----------------------------
-- Table structure for course
-- ----------------------------

CREATE TABLE `course`  (
  `course_id` bigint NOT NULL AUTO_INCREMENT,
  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  PRIMARY KEY (`course_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of course
-- ----------------------------
INSERT INTO `course` VALUES (1, 'Java');
INSERT INTO `course` VALUES (2, '中国传统文化');
INSERT INTO `course` VALUES (3, '计算机原理');
INSERT INTO `course` VALUES (4, '语文');
INSERT INTO `course` VALUES (5, '高阶数学');
INSERT INTO `course` VALUES (6, '英文');

-- ----------------------------
-- Table structure for student
-- ----------------------------

CREATE TABLE `student`  (
  `student_id` bigint NOT NULL AUTO_INCREMENT,
  `sn` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `mail` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `class_id` bigint NULL DEFAULT NULL,
  PRIMARY KEY (`student_id`) USING BTREE,
  UNIQUE INDEX `sn`(`sn` ASC) USING BTREE,
  INDEX `class_id`(`class_id` ASC) USING BTREE,
  CONSTRAINT `student_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class` (`class_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, '09982', '黑旋风李逵', 'xuanfeng@qq.com', 1);
INSERT INTO `student` VALUES (2, '00835', '菩提老祖', NULL, 1);
INSERT INTO `student` VALUES (3, '00391', '白素贞', NULL, 1);
INSERT INTO `student` VALUES (4, '00031', '许仙', 'xuxian@qq.com', 1);
INSERT INTO `student` VALUES (5, '00054', '不想毕业', NULL, 1);
INSERT INTO `student` VALUES (6, '51234', '好好说话', 'say@qq.com', 2);
INSERT INTO `student` VALUES (7, '83223', 'tellme', NULL, 2);
INSERT INTO `student` VALUES (8, '09527', '老外学中文', 'foreigner@qq.com', 2);

-- ----------------------------
-- Table structure for score
-- ----------------------------

CREATE TABLE `score`  (
  `score_id` bigint NOT NULL AUTO_INCREMENT,
  `student_id` bigint NULL DEFAULT NULL,
  `course_id` bigint NULL DEFAULT NULL,
  `score` decimal(5, 2) NULL DEFAULT NULL,
  PRIMARY KEY (`score_id`) USING BTREE,
  INDEX `student_id`(`student_id` ASC) USING BTREE,
  INDEX `course_id`(`course_id` ASC) USING BTREE,
  CONSTRAINT `score_ibfk_1` FOREIGN KEY (`student_id`) REFERENCES `student` (`student_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `score_ibfk_2` FOREIGN KEY (`course_id`) REFERENCES `course` (`course_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES (1, 1, 1, 70.50);
INSERT INTO `score` VALUES (2, 1, 3, 98.50);
INSERT INTO `score` VALUES (3, 1, 5, 33.00);
INSERT INTO `score` VALUES (4, 1, 6, 98.00);
INSERT INTO `score` VALUES (5, 2, 1, 60.00);
INSERT INTO `score` VALUES (6, 2, 5, 59.50);
INSERT INTO `score` VALUES (7, 3, 1, 33.00);
INSERT INTO `score` VALUES (8, 3, 3, 68.00);
INSERT INTO `score` VALUES (9, 3, 5, 99.00);
INSERT INTO `score` VALUES (10, 4, 1, 67.00);
INSERT INTO `score` VALUES (11, 4, 3, 23.00);
INSERT INTO `score` VALUES (12, 4, 5, 56.00);
INSERT INTO `score` VALUES (13, 4, 6, 72.00);
INSERT INTO `score` VALUES (14, 5, 1, 81.00);
INSERT INTO `score` VALUES (15, 5, 5, 37.00);
INSERT INTO `score` VALUES (16, 6, 2, 56.00);
INSERT INTO `score` VALUES (17, 6, 4, 43.00);
INSERT INTO `score` VALUES (18, 6, 6, 79.00);
INSERT INTO `score` VALUES (19, 7, 2, 80.00);
INSERT INTO `score` VALUES (20, 7, 6, 92.00);

案例:⼀个完整的联合查询的过程

• 查询学⽣姓名为许仙的详细信息,包括学⽣个⼈信息和班级信息

  1. 确定参与查询的表,学⽣表和班级表
    在这里插入图片描述
  2. 确定连接条件,student表中的class_id与class表中id列的值相等
    class id在两张表中都存在,MYSQL分不清当前语句中的class id应该取自哪张表
    可以通过表名.列名的方式来解决这个问题
# 在where子句中加入连接条件
select * from student, class where student.class_id = class.class_id;

在这里插入图片描述

  1. 加⼊查询条件
    在这里插入图片描述
# 依题意添加where条件
select * from student,class where student.class_id = class.class_id and student.name = '许仙';

在这里插入图片描述

  1. 精减查询结果字段
select 
	student.student_id,
	student.name,
	student.mail,
	class.name 
from 
	student,class 
where 
	student.class_id = class.class_id 
and 
	student.name = '许仙'; 

在这里插入图片描述

  1. 可以为表名指定别名
select 
	s.student_id,
	s.name,
	s.mail,
	c.name 
from 
	student s,class c 
where 
	s.class_id = c.class_id 
and 
	s.name = '许仙'; 

在这里插入图片描述

内连接

语法

select 字段 from1 别名1,2 别名2 where 连接条件 and 其他条件;

select 字段 from1 别名1 [inner] join2 别名2 on 连接条件 where 其他条件;

⽰例

• 查询"菩提老祖"的成绩

# 查询"菩提老祖"的成绩
select st.name,sc.score from student st, score sc where st.student_id = sc.student_id and st.name = '菩提老祖';

select st.name,sc.score from student st join score sc on st.student_id = sc.student_id where st.name = '菩提老祖';

在这里插入图片描述

• 查询所有人的总成绩,及每个人的个⼈信息

# 查询所有人的总成绩,及每个人的个人信息
select 
	st.student_id,st.name,st.mail,c.name,SUM(sc.score) 
from 
	student st,score sc,class c
where 
	st.student_id = sc.student_id 
and 
	c.class_id = st.class_id
group by 
	st.student_id;

在这里插入图片描述

Group by 使⽤了student.student_id进⾏分组,查询表列表中的student.name、student.mail和class.name没有出现在Group by分组中,也没有包含在聚合函数中,这是因为SQL规定在Group by分组查询时,如果查询列表中的列没有出现在GROUP BY⼦句中,但这些列的值在每个分组内部是相同的,那么它们可以出现在查询结果中。
• 查询所有同学每⻔课的成绩,及同学的个⼈信息

# 查询所有同学每门课的成绩,及同学的个人信息
select 
	st.student_id,st.name,st.mail,cl.name,cr.name,sc.score
from
	student st,class cl,score sc,course cr
where 
	st.student_id = sc.student_id
and 
	cl.class_id = st.class_id
and 
  cr.course_id = sc.course_id
order by
	st.student_id;

在这里插入图片描述
结果集中没有"老外学中文"同学的成绩,因为score表中没有这位同学的记录
在这里插入图片描述

外连接

• 外连接分为左外连接、右外连接和全外连接三种类型,MySQL不⽀持全外连接。
• 左外连接:返回左表的所有记录和右表中匹配的记录。如果右表中没有匹配的记录,则结果集中对
应字段会显⽰为NULL。
• 右外连接:与左外连接相反,返回右表的所有记录和左表中匹配的记录。如果左表中没有匹配的记
录,则结果集中对应字段会显⽰为NULL。
• 全外连接:结合了左外连接和右外连接的特点,返回左右表中的所有记录。如果某⼀边表中没有匹
配的记录,则结果集中对应字段会显⽰为NULL。

语法

-- 左外连接,表1完全显⽰
select 字段名 from 表名1 left join 表名2 on 连接条件;
-- 右外连接,表2完全显⽰
select 字段 from 表名1 right join 表名2 on 连接条件;

⽰例

• 查询没有参加考试的同学信息

# 查询没有参加考试的同学信息
# 左连接以JOIN左边的表为基准,左表显示全部记录,右表中没有匹配的记录用NULL填充
select * from student left join score on student.student_id = score.student_id;

在这里插入图片描述

# 过滤参加了考试的同学
select 
	st.* 
from 
	student st 
left join 
	score sc 
on 
	st.student_id = sc.student_id 
where 
	sc.score is NULL; 

在这里插入图片描述
• 查询没有学⽣的班级

# 查询没有学生的班级
# 右连接以JOIN右边的表为基准,右表显示全部记录,左表中没有匹配的记录用NULL填充
select 
	* 
from
	student s
right join  
	class c
on
	s.class_id = c.class_id;

在这里插入图片描述

# 过滤有学生的班级
select
	c.*
from 
	student s
right join 
	class c
on 
	s.class_id = c.class_id
where 
	student_id is NULL;

在这里插入图片描述

⾃连接

应⽤场景

⾃连接是⾃⼰与⾃⼰取笛卡尔积,可以把⾏转化成列,在查询的时候可以使⽤where条件对结果进⾏
过滤,或者说实现⾏与⾏之间的⽐较。在做表连接时为表起不同的别名。

# 不为表指定别名
select * from score,score;

在这里插入图片描述

# 指定别名
select * from score s1, score s2;

示例

• 显示所有“计算机原理”成绩比“java”成绩高的成绩信息

# 显示所有“计算机原理”成绩比“java”成绩高的成绩信息
# 首先分两步进行,先查出计算机原理和java的课程Id,分别为1和3
select * from course where name = '计算机原理' or name = 'java';

在这里插入图片描述

# 再查询成绩表中,计算机原理成绩比java成绩高的信息
select 
	* 
from 
	score s1,score s2
where
	s1.student_id = s2.student_id
and
	s1.course_id = 3 and s2.course_id = 1
and 
	s1.score > s2.score;

在这里插入图片描述

# 结合在一起进行查询
select 
	s.name,s1.*
from
	score s1,
	score s2,
	course c1,
	course c2,
	student s
where 
	s1.student_id = s2.student_id
and
	s.student_id = s1.student_id
and
	s2.course_id = c2.course_id
and 
	c1.name = '计算机原理' and c2.name = 'java'
and 
	c1.course_id = s1.course_id
and 
	s1.score > s2.score;

在这里插入图片描述

表连接练习

• 显示所有“计算机原理”成绩比“java”成绩高的学⽣信息和班级以及成绩信息

select 
	s.name 姓名,c.name 班级,s1.score 计算机原理成绩, s2.score java成绩
from
	score s1,
	score s2,
	course c1,
	course c2,
	student s,
	class c
where 
	s1.student_id = s2.student_id
and 
	s1.course_id = c1.course_id
and
	s2.course_id = c2.course_id
and 
	c1.name = '计算机原理' and c2.name = 'java'
and 
	s1.score > s2.score
and
	s.student_id = s1.student_id
and 
	c.class_id = s.class_id;

在这里插入图片描述

⼦查询

⼦查询是把⼀个SELECT语句的结果当做别⼀个SELECT语句的条件,也叫嵌套查询

语法

select * from table1 where col_name1 {= | IN} (
	select col_name1 from table2 where col_name2 {= | IN} [(
		select ...)
	] ...
)

单⾏⼦查询

嵌套的查询中只返回⼀⾏数据
• 示例:查询与"不想毕业"同学的同班同学

# 查询与"不想毕业"同学的同班同学 
select * from student where class_id = (select class_id from student where name = '不想毕业') and name != '不想毕业';

在这里插入图片描述

多⾏⼦查询

嵌套的查询中返回多⾏数据,使⽤[NOT] IN关键字
• 示例:查询语文或英文课程的成绩信息

# 查询语文或英文课程的成绩信息 
select * from  score where course_id in (select course_id from course where name = '英文' or name = '语文');

在这里插入图片描述

# 使用NOT IN 可以查询除了语文和英文课程的成绩信息
select * from  score where course_id not in (select course_id from course where name = '英文' or name = '语文');

在这里插入图片描述

多列⼦查询

单⾏⼦查询和多⾏⼦查询都只返回⼀列数据,多列⼦查询中可以返回多个列的数据,外层查询与嵌套
的内层查询的列要匹配
• 示例:查询重复录⼊的分数

# 插入重复的分数:score, student_id, course_id列重复
insert into score(score_id,student_id,course_id,score) values (21,1,1,70.5),(22,1,1,98.5),(23,2,1,60);
# 子查询中返回多个列
select 
	score_id,student_id,course_id,score 
from 
	score 
where 
	(student_id,course_id,score) 
in 
	(select 
		student_id,course_id,score 
	from 
		score 
	group by 
		student_id,course_id,score 
	having 
		count(*) > 1);

在这里插入图片描述

在from⼦句中使⽤⼦查询

当⼀个查询产⽣结果时,MySQL⾃动创建⼀个临时表,然后把结果集放在这个临时表中,最终返回
给⽤户,在from⼦句中也可以使⽤临时表进⾏⼦查询或表连接操作
• 示例:查询所有比“中文系2019级3班”平均分高的成绩信息

# 查询所有比“中文系2019级3班”平均分高的成绩信息
# 首先分步进行,第一步先查出中文系2019级3班的平均分
select 
	AVG(sc.score) 
from 
	class c, score sc, student s 
where 
	c.class_id = s.class_id 
and 
	sc.student_id = s.student_id 
and 
	c.name = '中文系2019级3班' 

在这里插入图片描述

select 
	sc.* 
from 
	score sc,(
		select 
			AVG(sc.score) score
		from 
			class c, score sc, student s 
		where 
			c.class_id = s.class_id 
		and 
			sc.student_id = s.student_id 
		and 
			c.name = '中文系2019级3班' ) tmp
where sc.score > tmp.score;

在这里插入图片描述
tmp 是临时表的别名

合并查询

在实际应⽤中,为了合并多个select操作返回的结果,可以使⽤集合操作符 union,union all

创建新表并初始化数据

create table student1 like student;

insert into student1(sn,name,mail,class_id) values('09982','李鬼','xuanfeng@qq.com',1),('00001','测试用户',null,1),('00391','白素贞',null,1),('00031','许仙','xuxian@qq.com',1);

在这里插入图片描述

在这里插入图片描述

Union

该操作符⽤于取得两个结果集的并集。当使⽤该操作符时,会⾃动去掉结果集中的重复⾏。

select * from student union select * from student1;

在这里插入图片描述

Union all

该操作符⽤于取得两个结果集的并集。当使⽤该操作符时,不会去掉结果集中的重复⾏

select * from student union all select * from student1;

在这里插入图片描述

插⼊查询结果

语法

INSERT INTO table_name [(column [, column ...])] SELECT ...

示例

• 将student表中‘菩提老祖’和‘不想毕业’的学⽣信息复制到student1表中

insert into student1(sn,name,mail,class_id) (select s.sn,s.name,s.mail,s.class_id from student s where name = '菩提老祖' or name = '不想毕业');

select * from student1;

在这里插入图片描述
在这里插入图片描述


关于数据库的联合查询先了解到这里,希望这篇文章对大家有帮助,谢谢大家的阅读!!!

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

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

相关文章

vue 预览pdf 【@sunsetglow/vue-pdf-viewer】开箱即用,无需开发

sunsetglow/vue-pdf-viewer 开箱即用的pdf插件sunsetglow/vue-pdf-viewer, vue3 版本 无需多余开发,操作简单,支持大文件 pdf 滚动加载,缩放,左侧导航,下载,页码,打印,文本复制&…

【zookeeper03】消息队列与微服务之zookeeper集群部署

ZooKeeper 集群部署 1.ZooKeeper 集群介绍 ZooKeeper集群用于解决单点和单机性能及数据高可用等问题。 集群结构 Zookeeper集群基于Master/Slave的模型 处于主要地位负责处理写操作)的主机称为Leader节点,处于次要地位主要负责处理读操作的主机称为 follower 节点…

Linux麦克风录音实战

在 Linux 上使用麦克风进行录音可以通过多种方式实现,包括使用命令行工具、图形界面应用程序以及编程接口。下面我将介绍几种常见的方法,从简单的命令行工具到使用 PortAudio 库进行编程。 一. 使用arecord命令行工具 arecord 是 ALSA(Adva…

游戏引擎学习第23天

实时代码编辑功能的回顾 当前实现的实时代码编辑功能已经取得了显著的成功,表现出强大的性能和即时反馈能力。该功能允许开发者在修改代码后几乎立即看到变化在运行中的程序中体现出来,极大提升了开发效率。尽管目前的演示内容较为简单,呈现…

Oracle 数据库 IDENTITY 列

IDENTITY列是Oracle数据库12c推出的新特性。之所以叫IDENTITY列,是由于其支持ANSI SQL 关键字 IDENTITY,其内部实现还是使用SEQUENCE。 不过推出这个新语法也是应该的,毕竟MyQL已经有 AUTO_INCREMENT列,而SQL Server也已经有IDENT…

计算机网络socket编程(2)_UDP网络编程实现网络字典

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络socket编程(2)_UDP网络编程实现网络字典 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨…

2022年计算机网络408考研真题解析

第一题: 解析:网络体系结构-数据链路层 在ISO网络参考模型中,运输层,网络层和数据链路层都实现了流量的控制功能,其中运输层实现的是端到端的流量控制,网络层实现的是整个网络的流量控制,数据链…

AI Prompt Engineering

AI Prompt Engineering 简介 Prompt Engineering, 提示工程,是人工智能领域的一项技术,它旨在通过设计高效的提示词(prompts)来优化生成式 AI(如 GPT、DALLE 等)的输出。提示词是用户与生成式 AI 交互的核…

Windows系统电脑安装TightVNC服务端结合内网穿透实现异地远程桌面

文章目录 前言1. 安装TightVNC服务端2. 局域网VNC远程测试3. Win安装Cpolar工具4. 配置VNC远程地址5. VNC远程桌面连接6. 固定VNC远程地址7. 固定VNC地址测试 前言 在追求高效、便捷的数字化办公与生活的今天,远程桌面服务成为了连接不同地点、不同设备之间的重要桥…

直播实时美颜平台开发详解:基于视频美颜SDK的技术路径

视频美颜SDK作为实现实时美颜的关键技术,为开发者提供了高效、灵活的解决方案。本篇文章,小编将以“基于视频美颜SDK的技术路径”为主题,深入解析直播实时美颜平台的开发要点。 一、视频美颜SDK的作用与优势 视频美颜SDK是一种集成化的开发工…

量子感知机

神经网络类似于人类大脑,是模拟生物神经网络进行信息处理的一种数学模型。它能解决分类、回归等问题,是机器学习的重要组成部分。量子神经网络是将量子理论与神经网络相结合而产生的一种新型计算模式。1995年美国路易斯安那州立大学KAK教授首次提出了量子…

实现在两台宿主机下的docker container 中实现多机器通讯

基于我的实验背景 上位机:ubuntu 20.04 (docker humble 22.04) 下位机:ubuntu 22.04(docker noetic 20.04) 目标:实现在上位机中的docker container 容器的22.04环境去成功远程访问 非同网段的下位机的20.04的contai…

远程控制软件:探究云计算和人工智能的融合

在数字化时代,远程控制工具已成为我们工作与生活的重要部分。用户能够通过网络远程操作和管理另一台计算机,极大地提升了工作效率和便捷性。随着人工智能(AI)和云计算技术的飞速发展,远程控制工具也迎来了新的发展机遇…

ISUP协议视频平台EasyCVR萤石设备视频接入平台银行营业网点安全防范系统解决方案

在金融行业,银行营业厅的安全保卫工作至关重要,它不仅关系到客户资金的安全,也关系到整个银行的信誉和运营效率。随着科技的发展,传统的安全防护措施已经无法满足现代银行对于高效、智能化安全管理的需求。 EasyCVR视频汇聚平台以…

C#基础上机练习题

21.计算500-800区间内素数的个数cn,并按所求素数的值从大到小的顺序排列,再计算其间隔加、减之和,即第1个素数-第2个素数第3个素数-第4个素数第5个素数……的值sum。请编写函数实现程序的要求,把结果cn和sum输出。 22.在三位整数…

ubuntu24挂载硬盘记录

1、显示硬盘及所属分区情况。在终端窗口中输入如下命令: sudo fdisk -l 找到自己硬盘的分区 我的地址/dev/sda 2、显示硬盘及所属分区情况。在终端窗口中输入如下命令,格式化自己硬盘: sudo mkfs -t ext4 /dev/sda 3、在终端窗口中输入如下…

函数类型注释和Union联合类型注释

函数类型注释格式(调用时提示输入参数的类型): )def 函数名(形参名:类型,形参名:类型)->函数返回值类型: 函数体 Union联合类型注释(可注释多种类型混合的变量)格式: #先导入模块 from typing import…

【Python】分割秘籍!掌握split()方法,让你的字符串处理轻松无敌!

在Python开发中,字符串处理是最常见也是最基础的任务之一。而在众多字符串操作方法中,split()函数无疑是最为重要和常用的一个。无论你是Python新手,还是经验丰富的开发者,深入理解并熟练运用split()方法,都将大大提升…

DICOM图像深入解析:为何部分DR/CR图像默认显示为反色?

概述 在数字医学影像处理中,CR(Computed Radiography,计算机放射摄影)和DR(Digital Radiography,数字放射摄影)技术广泛应用于医疗影像获取与分析。然而,临床实践中常常遇到这样一个问题:部分CR/DR图像在默认打开时呈现为反色(即负片效果),需手动反色后才能正常阅片…

正则表达式灾难:重新认识“KISS原则”的意义

RSS Feed 文章标题整理 微积分在生活中的应用与思维启发 捕鹿到瞬时速度的趣味探索 微积分是一扇通往更广阔世界的门,从生活中学习思维的工具。 数据库才是最强架构 你还在被“复杂架构”误导吗? 把业务逻辑写入数据库,重新定义简单与效率。…