MySQL之DQL

DQL是数据查询语言

SELECT语句

语法:

SELECT {*,列名,函数等}
FROM 表名;

SELECT *:表示匹配所有列
FROM :提供数据源
例如:查询student表的所有记录

SELECT * FROM student;

例如:查询学生姓名和地址:

SELECT StudentName,Address FROM student;

例如:查询学号为1001的学生姓名和地址:

SELECT StudentName,Address FROM student WHERE StudentNo=1001;

SELECT语句中的算术表达式

数值型数据列、变量、常量可以使用算术操作符创建表达式(+ - * /)
**例如:

SELECT 100+80;

在这里插入图片描述

SELECT 100-80;

在这里插入图片描述

SELECT 100*80;

在这里插入图片描述

SELECT 100/80;

在这里插入图片描述

SELECT "12"+80;

在这里插入图片描述

SELECT "ABC"+80;

在这里插入图片描述

SELECT "ABC"+"DE";

在这里插入图片描述

SELECT NULL+80;(只要有一个NULL则全部为NULL)

在这里插入图片描述

日期型数据列、变量、常量可以使用部分算术操作符创建表达式(+ -)

运算符的优先级

乘法和除法的优先级高于加法和减法。
统计运算符的顺序是从左到右。
表达式中使用括号可以强行改变优先级的运算顺序。

定义字段别名

未定义别名

mysql> SELECT StudentNo,StudentName  -> FROM student;
+-----------+--------------+
| StudentNo | StudentName  |
+-----------+--------------+
|      1000 | 郭靖         |
|      1001 | 李文才       |
|      1002 | 李斯文       |
|      1003 | 武松         |
|      1004 | 张三         |
|      1005 | 张秋丽       |
|      9527 | 赵尧林       |
|      1007 | 欧阳峻峰     |
|      1008 | 梅超风       |
|      1028 | 赵敏         |
|      8080 | 李寻欢       |
+-----------+--------------+
11 rows in set (0.00 sec)

定义别名1

mysql> SELECT StudentNo "学号",StudentName "学生姓名"-> FROM student-> ;
+--------+--------------+
| 学号   | 学生姓名     |
+--------+--------------+
|   1000 | 郭靖         |
|   1001 | 李文才       |
|   1002 | 李斯文       |
|   1003 | 武松         |
|   1004 | 张三         |
|   1005 | 张秋丽       |
|   9527 | 赵尧林       |
|   1007 | 欧阳峻峰     |
|   1008 | 梅超风       |
|   1028 | 赵敏         |
|   8080 | 李寻欢       |
+--------+--------------+
11 rows in set (0.00 sec)

定义别名2

mysql> SELECT StudentNo AS "学号",StudentName AS "学生姓名"-> FROM student;
+--------+--------------+
| 学号   | 学生姓名     |
+--------+--------------+
|   1000 | 郭靖         |
|   1001 | 李文才       |
|   1002 | 李斯文       |
|   1003 | 武松         |
|   1004 | 张三         |
|   1005 | 张秋丽       |
|   9527 | 赵尧林       |
|   1007 | 欧阳峻峰     |
|   1008 | 梅超风       |
|   1028 | 赵敏         |
|   8080 | 李寻欢       |
+--------+--------------+
11 rows in set (0.00 sec)

关键字

DISTINCT

去除查询出来的重复的记录
例如: 查询学生性别

未去重

mysql> SELECT Sex "性别"-> FROM student;
+--------+
| 性别   |
+--------+
|      1 |
|      1 |
|      1 |
|      1 |
|      1 |
|      2 |
|      1 |
|      1 |
|      1 |
|      1 |
|      1 |
+--------+
11 rows in set (0.00 sec)

去重

mysql> SELECT DISTINCT Sex "性别"-> FROM student;
+--------+
| 性别   |
+--------+
|      1 |
|      2 |
+--------+
2 rows in set (0.01 sec)

BETWEEN…AND…

条件介于某两个值之间
例如:查询学号位于1003和1110之间的学生。

SELECT * 
FROM student
WHERE StudentNo BETWEEN 1003 AND 1110;

IN

条件在某些值里面
例如:查询班级号为2或者3的学生信息。

SELECT * 
FROM student
WHERE GradeId IN (2,3);

LIKE

模糊查询

查询条件可包含文字字符或者占位符:
① % 表示匹配0或任意多个字符。
②_ 表示匹配1个字符。

例如:查询刘姓的学生

SELECT * FROM student WHERE StudentName LIKE "刘%";

逻辑运算符:
AND: 需要满足所有的条件。
例如:查询出生在1987年02月01日之后并且性别为1的学生信息。

SELECT * FROM student WHERE BornDate > '1987-02-01' AND Sex = 1;

OR: 满足任一条件即可。
例如:查询出生在1987年02月01日之后或者性别为1的学生信息。

SELECT * FROM student WHERE BornDate > '1987-02-01' OR Sex = 1;

NOT: 取反。
例如:查询班级号不在2、3的学生信息。

SELECT *
FROM student
WHERE GradeId NOT IN (2,3);

正则表达式: REGEXP
语法:

<语法> REGEXP '表达式'

例如:查询生日在1986年的学生信息。

SELECT *
FROM student
WHERE BornDate REGEXP '^1986';

GROUP BY

数据分组,其真正作用在于与各种聚合函数配合使用。它用来对查询出来的数据进行分组。
分组的含义: 把该列具有相同值的多条记录,当作一个记录去处理,最终只输出一条记录。且忽略NULL。
语法:

SELECT 列名,分组函数
FROM 表名
[WHERE 条件]
[GROUP BY 分组条件];

例如:查询每个学生的平均分

SELECT StudentNo "学号",AVG(StudentResult) "平均分" FROM result GROUP BY (StudentNo);

例如:查询每个学生的平均分、总分、最高分、最低分。

SELECT StudentNo "学号",AVG(StudentResult) "平均分",SUM(StudentResult) "总分",MAX(StudentResult) "最高分",MIN(StudentResult) "最低分"
FROM result
GROUP BY(StudentNo);

例如:查询个性别人数各占多少?

SELECT COUNT(*)
FROM student
GROUP BY(Sex);

HAVING语句

语法:

SELECT 列名,分组函数
FROM 表名
[WHERE 条件]
[GROUP BY 分组条件]
[HAVING 过滤条件];

多用于分组后的二次过滤。
例如:根据学号得到所有学生的平均分后,过滤掉94分以下的同学。

SELECT StudentNo "学号",AVG(StudentResult) "平均分"
FROM result
GROUP BY(StudentNo)
HAVING AVG(StudentResult) > 94;

ORDER BY

排序
DESC:降序
ASC:升序
默认为ASC。
语法:

SELECT 列名,分组函数
FROM 表名
[WHERE 条件]
[GROUP BY 分组条件]
[HAVING 过滤条件]
[ORDER BY 排序字段] [ASC||DESC||];

例如:根据学号得到所有学生平均分后,过滤掉80分以下的学生后,对成绩进行降序排列。

SELECT StudentNo "学号",AVG(StudentResult) "平均分"
FROM result
GROUP BY(StudentNo)
HAVING AVG(StudentResult) > 80
ORDER BY AVG(StudentResult) DESC;

LIMIT

区间查询
索引从0开始
LIMIT A,B A是起始行的索引位,B是查询的空间值。
语法:

SELECT 列名,分组函数
FROM 表名
[WHERE 条件]
[GROUP BY 分组条件]
[HAVING 过滤条件]
[ORDER BY 排序字段] [ASC||DESC||]
[LIMIT A,B];

例如:根据学号得到所有学生平均分后,过滤掉80分以下的学生后,对成绩进行降序排列并取前三名。

SELECT StudentNo "学号",AVG(StudentResult) "平均分"
FROM result
GROUP BY(StudentNo)
HAVING AVG(StudentResult)>80
ORDER BY AVG(StudentResult) DESCLIMIT 0,3;

GROUP_CONCAT

多行数据合并
例如:根据班级进行分组,要求查看各班各人姓名和各班人数个数。

SELECT GradeId "班级编号",COUNT(*) "人数",GROUP_CONCAT(StudentName)
FROM student
GROUP BY GradeId;

注意:
①使用GROUP_CONCAT()函数必须对源数据进行分组,否则所有数据就会别合并成一列。
②对结果集排序,查询语句执行的查询结果,数据是按照插入顺序排序。
③实际上需要按照某列的大小值进行排序的话,建议针对于数值类型或日期类型进行排序

多表关联查询

1、交叉连接

不适合用于任何匹配条件,生成笛卡尔积产出的行数。
语法:

SELECT 列名
FROM 表名1、2..;

2、内外连接

①等值连接

等值连接,在我们检索时,可以的将表与表之间的关系,明文的体现在SQL语句内,从而避免了如交叉连接产生的冗余数据。
语法:

SELECT 表一.列名,表二.列名
FROM 表一,表二
WHERE 条件;
例如:查询所有学生+所有班级信息
SELECT student.StudentName "学生姓名",grade.GradeName "班级" 
FROM student,grade 
WHERE student.GradeId=grade.GradeId;

②内连接

本质上来说和等值无区别,但是内连接会释放WHER关键字,表与表之间的连接语法更加清晰。
语法:

SELECT *
FROM 表1 INNER JOIN 表2 ON 表1.列=表2.列
[INNER JOIN 表3 ON 关系];

例如:查询学生姓名以及班级名

SELECT student.StudentName "姓名",grade.GradeName "班级"
FROM student INNER JOIN grade ON student.GradeId=grade.GradeId;

③外连接

选择了外联关键字指向的表的所有数据+关联数据
语法:

SELECT *
FROM 表1 {LEFT||RIGHT} JOIN 表2 ON 表1.列=表2.列;

例如:查询男学生名以及对应的班级名

SELECT student.StudentName "姓名",grade.GradeName "班级"
FROM student LEFT JOIN grade ON student.GradeId=grade.GradeId
WHERE student.Sex=1; 

小结

①INNER JOIN :代表选择的是两个表的交叉部分。
②LEFT JOIN :代表选择的是前面一个表的全部。
③RIGHT JOIN :代表选择的是后面一个表的全部。

3、自连接

自己和自己连接,参与连接表都是同一张表。
例如:

SELECT c1.categoryName "父级目录",c2.categoryName "子目录"
FROM category AS c1 INNER JOIN category AS c2 ON c1.categoryId = c2.pid;

4、子查询

①子查询是将一个查询语句嵌套在另一个查询语句中,内部嵌套其他的SELECT语句的查询。
②内层查询的结果,可以作为外层查询的条件。
③子查询中可以包含的关键字:IN NOT NULL
④子查询中可以包含的运算符:= != > < 等

例如:查询班级名称是大一,科目是高等数学-1的学生的平均分。
//0-根据大一查到对应的班级编号

SELECT GradeId
FROM grade
WHERE GradeName = "大一";

//1-根据对应的班级编号适配学生的学号

SELECT StudentNo
FROM student
WHERE GradeId = (
SELECT GradeId
FROM grade
WHERE GradeName = "大一"
);

//2-根据高等数学-1查到对应的课程号

SELECT SubjectNo
FROM subject
WHERE subjectName = "高等数学-1";

//前三步完成,我们手里有 一个课程号以及若干个学号

SELECT AVG(result.StudentResult)
FROM result
WHERE result.SubjectNo = (SELECT SubjectNo
FROM subject
WHERE subjectName = "高等数学-1")
AND result.StudentNo IN (SELECT StudentNo
FROM student
WHERE GradeId = (SELECT GradeId
FROM grade
WHERE GradeName = "大一"));

SQL函数

聚合函数

对一组值进行运算,并返回单个值,也叫组合函数。

常见聚合函数:
COUNT():统计行数
AVG():求平均
SUM():求和
MIN():求最小
MAX():求最大
除了COUNT()函数之外,聚合函数都会忽略NULL;

COUNT(*)、COUNT(1)、COUNT(列名)的区别

COUNT(1)和COUNT(*): 当表的数据量大些时,对表分析之后,使用COUNT(1)还要比使用COUNT()用时多了!
从执行计划来看,COUNT(1)和COUNT(
)的效果是一样的,但是在表做过分析之后,COUNT(1)会比COUNT()的用时少些(1w以内的数据量),不过差不了多少。如果COUNT(1)是聚索引id,那肯定是COUNT(1)快,但是差是很小的。
因为COUNT(
),自动会优化指定到那一个字段,所以没必要去COUNT(1),用COUNT(),SQL会帮你完成优化,因此COUNT(1)和COUNT()基本没区别。
COUNT(1)和COUNT(字段):
COUNT(1)会统计表中所有的记录数,包含字段为NULL的记录。
COUNT(字段)会统计该字段在表中出现的次数,忽略了字段为NULL的情况。

三者的区别:
COUNT(*)包含了所有列,相当于所有行,在统计结果时不忽略NULL。
COUNT(1)包含了忽略所有列,用1代表代码行,在统计结果时不忽略NULL。
COUNT(字段)只包含了列名的那一列,在统计结果时忽略NULL。

在执行效率上
如果目标列名是主键:COUNT(列名)>COUNT()||COUNT(1)
如果目标列名非主键:COUNT(列名)<COUNT(
)||COUNT(1)
如果表多列都无主键:COUNT(1)>COUNT(*)>COUNT(列名)
因此最优的查行语法为:SELECT COUNT(主键列)

数值型函数

函数名称作用
ABS()求绝对值
SQRT()求平方根
POW()或者POWER()返回参数的幂次方
MOD()求余数
CEIL()或者CEILING()向上取整
ROUND()四舍五入
RAND()生成一个0-1之间的随机数
FLOOR()向下取整
SIGN()返回函数的符号

例如:随机生成0-99999之间的一个数字

SELECT FLOOR(100000*RAND());

字符串函数

函数名称作用
LENGTH返回字符串长度
CHAR_LENGTH返回字符串的字节长度
CONCAT合并字符串长度,返回结果为连接参数产生的字符串,参数可以使用一个或多个
INSERT(str,pos,len,newstr)替换字符串函数
LOWER将字符串中的字母转换为小写
UPPER将字符串中的字母转换为大写
LEFT(str,len)从左侧进行截取,返回字符串左边若干个长度的字符
RIGHT(str,len)从右侧进行截取,返回字符串右边若干个长度的字符串
TRIM删除字符串左右两侧空格
REPLACE(s,s1,s2)字符串替换函数,返回替换后的新字符串
SUBSTRING(s,n,len)截取字符串,返回从指定位置指定长度的字符串
REVERSE字符串逆序函数返回与原字符串顺序相反的字符串
STRCMP(parem1,parem2)比较两个表达式的顺序,如果parem1小于parem2,则返回-1,相等返回0,大于返回1
LOCATE(sub,str)返回第一次出现目标字符串的索引位
INSTR(sub,str)返回最后一次出现目标字符串的索引位

日期和时间函数

函数名称作用
CURDATE()
CURRENT_DATE()
CURRENT_DATE
返回当前系统的日期
CURTIME()
CURRENT_TIME()
CURRENT_TIME
返回当前系统时间的时分秒
NOW()返回当前系统的日期和时间值
SYSDATE()返回当前系统的日期和时间值
DATE(parem)返回指定日期时间的日期部分
TIME(parem)返回指定日期时间的时间部分
MONTH(parem)返回指定日期的月份
MONTHNAME(parem)返回指定日期的月份英文名
DAYNAME(paremr)返回指定日期对应的星期几的英文名
YEAR(parem)返回年份,返回值范围为1970-2069
DAYOFWEEK(parem)返回指定日期对应的一周的索引位,也就是星期数,注意周日时开始日,为1
WEEK(parem)返回指定日期是一年中的第几周,返回值的范围是否为0-52或1-53
DAYOFYEAR(parem)返回指定日期是一年中的第几天,返回值范围是1-366
DAYOFMONTH(parem) 和 DAY(parem)返回指定日期是一个月中第几天,返回值范围为1-31
DATEDIFF(parem,parem)返回两个日期之间的天数

例如:计算自己出生到现在多久了?

SELECT DATEDIFF(NOW(),'2003-02-27');

例如:计算自己多大了?

SELECT CEIL(DATEDIFF(NOW(),'2003-02-27')/365);

流程控制函数

函数名称作用
IF(expr,v1,v2)判断,流程控制,当expr = true时返回v1,否则返回v2
IFNULL(v1,v2)判断是否为空,如果v1不为NULL,则IFNULL函数返回v1,否则返回v2
CASE搜索语句

例如:使用IF函数进行条件判断

SELECT IF(12,2,3);————2
IF(1<2,'YES','NO');————YES
IF(STRCMP('test','test1'),'NO','YES');————YES

CASE语法:

CASE <表达式>WHEN<值1> THEN<结果1>WHEN<值2> THEN<结果2>WHEN<值3> THEN<结果3>WHEN<值4> THEN<结果4>.....ELSE<结果5>

例如:

SELECT StudentName,CASE GradeId WHEN 1 THEN "大一" WHEN2 THEN "大二" ELSE "其他" END AS "班级信息" 
FROM student;

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

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

相关文章

学信息系统项目管理师第4版系列16_资源管理过程

1. 组建项目团队&#xff0c;建设项目团队和管理项目团队属于执行过程组 1.1. 【高22上选21】 1.1.1. 【高21上选25】 1.2. 3版 2. 【高19上案三】 2.1. 【高18上案三】 2.2. 【高23上案一】 3. 规划资源管理 3.1. 定义如何估算、获取、管理和利用团队以及实物资源的过…

mstsc无法保存RDP凭据, 100%生效

问题 即使如下两项都打勾&#xff0c;其还是无法保存凭据&#xff0c;特别是连接Ubuntu (freerdp server)&#xff1a; 解决方法 网上多种复杂方法&#xff0c;不生效&#xff0c;其思路是修改后台配置&#xff0c;以使mstsc跟平常一样自动记住凭据。最后&#xff0c;如下的…

斯坦福数据挖掘教程·第三版》读书笔记(英文版)Chapter 10 Mining Social-Network Graphs

来源&#xff1a;《斯坦福数据挖掘教程第三版》对应的公开英文书和PPT。 Chapter 10 Mining Social-Network Graphs The essential characteristics of a social network are: There is a collection of entities that participate in the network. Typically, these entiti…

Python学习笔记之分支结构与循环结构

Python学习笔记之分支结构与循环结构 一、分支结构 使用关键字if、elif、else 练习1&#xff1a;使用分支结构实现分段函数求值 """分段函数求值""" x float(input("x "))if x > 1:y 3 * x - 5 elif x < -1:y 5 * x 3…

2023/10/4 -- ARM

今日任务&#xff1a;QT实现TCP服务器客户端搭建的代码&#xff0c;现象 ser&#xff1a; #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);server new QTcpSe…

免费、丰富、便捷的资源论坛——Yiove论坛,包括但不限于阿里云盘、夸克云盘、迅雷云盘等等

引言 目前资源的数量达到了60000&#xff0c;六万多的资源意味着在这里几乎可以找到任何你想要的资源。 当然&#xff0c;资源并不是论坛的全部&#xff0c;其中还包括了技术交流、福利分享、最新资讯等等。 传送门&#xff1a;YiOVE论坛 - 一个有资源有交流&#xff0c;有一…

PCL 计算点云中值

目录 一、算法原理2、主要函数二、代码实现三、结果展示四、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 计算点云坐标的中值点,首先对点云坐标进行排序,然后计算中值。如果点云点的个数为奇数…

计组—— I/O系统

&#x1f4d5;&#xff1a;参考王道课件 目录 一、I/O系统的基本概念 1.什么是“I/O”&#xff1f; ​编辑2.主机如何和I/O设备进行交互&#xff1f; 3.I/O控制方式 &#xff08;1&#xff09;程序查询方式 &#xff08;2&#xff09;程序中断方式 &#xff08;3&#x…

号卡推广管理系统源码/手机流量卡推广网站源码/PHP源码+带后台版本+分销系统

源码简介&#xff1a; 号卡推广管理系统源码/手机流量卡推广网站源码&#xff0c;基于PHP源码&#xff0c;而且它是带后台版本&#xff0c;分销系统。运用全新UI流量卡官网系统源码有后台带文章。 这个流量卡销售网站源码&#xff0c;PHP流量卡分销系统&#xff0c;它可以支持…

C#餐饮收银系统

一、引言 餐饮收银系统是一种用于管理餐馆、咖啡厅、快餐店等餐饮业务的计算机化工具。它旨在简化点餐、结账、库存管理等任务&#xff0c;提高运营效率&#xff0c;增强客户体验&#xff0c;同时提供准确的财务记录。C# 餐饮收银系统是一种使用C#编程语言开发的餐饮业务管理软…

【Java】微服务——Ribbon负载均衡(跟进源码分析原理)

添加LoadBalanced注解&#xff0c;即可实现负载均衡功能&#xff0c;这是什么原理 1.负载均衡原理 SpringCloud底层其实是利用了一个名为Ribbon的组件&#xff0c;来实现负载均衡功能的。 2.源码跟踪 为什么我们只输入了service名称就可以访问了呢&#xff1f;之前还要获取…

MySQL - mysql服务基本操作以及基本SQL语句与函数

文章目录 操作mysql客户端与 mysql 服务之间的小九九了解 mysql 基本 SQL 语句语法书写规范SQL分类DDL库表查增 mysql数据类型数值类型字符类型日期类型 示例修改&#xff08;表操作&#xff09; DML添加数据删除数据修改数据 DQL查询多个字段条件查询聚合函数分组查询排序查询…

conda安装使用jupyterlab注意事项

文章目录 一、conda安装1.1 conda安装1.2 常见命令1.3 常见问题 二、jupyterlab2.1 jupyterlab安装和卸载2.2 常见错误2.2.1 版本冲突&#xff0c;jupyterlab无法启动2.2.2 插件版本冲突 2.3 常用插件2.3.1 debugger2.3.2 jupyterlab_code_formatter 2.4 jupyter技巧 一、conda…

iOS---生成证书文件的时候无法选择导出.p12文件

解决办法&#xff1a; 左栏有两个分类&#xff0c;一个钥匙串&#xff0c;一个是种类&#xff0c;要选择种类里面的【我的证书】或【证书】进行导出。选择【系统】找到【我的证书】这样导出不了"个人信息交换(.p12)" 正确做法是&#xff1a;选择【登录】找到【我的…

智能合约漏洞,BEVO 代币损失 4.5 万美元攻击事件分析

智能合约漏洞&#xff0c;BEVO 代币损失 4.5 万美元攻击事件分析 一、事件背景 北京时间 2023 年 1 月 31 日&#xff0c;在 twitter 上看到这样一条消息&#xff1a; BEVO 代币被攻击&#xff0c;总共损失 45000 美元&#xff0c;导致 BEVO 代币的价格下跌了 99%。 有趣的是…

2023蓝帽杯初赛电子取证部分

取证案情介绍&#xff1a; 2021年5月&#xff0c;公安机关侦破了一起投资理财诈骗类案件&#xff0c;受害人陈昊民向公安机关报案称其在微信上认识一名昵称为yang88的网友&#xff0c;在其诱导下通过一款名为维斯塔斯的APP&#xff0c;进行投资理财&#xff0c;被诈骗6万余万元…

CSS 语法

CSS 实例 CSS 规则由两个主要的部分构成&#xff1a;选择器&#xff0c;以及一条或多条声明: 选择器通常是您需要改变样式的 HTML 元素。 每条声明由一个属性和一个值组成。 属性&#xff08;property&#xff09;是您希望设置的样式属性&#xff08;style attribute&#x…

Raspberry Pi 5 新平台 新芯片组

Raspberry Pi 5 的 CPU 和 GPU 性能提高了两到三倍&#xff1b;内存和 I/O 带宽大约是两倍&#xff1b;并且是首款采用英国剑桥内部设计的芯片的 Raspberry Pi 计算机&#xff0c;4GB 型号的售价为 60 美元&#xff0c;8GB 版本的售价为 80 美元 主要特点包括&#xff1a; 2.4…

【C++】可变参数模板使用,在emplace中应用

&#x1f30f;博客主页&#xff1a; 主页 &#x1f516;系列专栏&#xff1a; C ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ &#x1f60d;期待与大家一起进步&#xff01; 文章目录 一、可变参数模板1.参数包的展开方式1.递归方式展开2.逗号表达式展开参数包 二、empl…

【问题证明】矩阵方程化为特征值方程求得的特征值为什么是全部特征值?不会丢解吗?

问题 这个问题困扰了我好久&#xff0c;一直感觉如果有其他的特征值没法证伪&#xff0c;不过一直存在思想的层面&#xff0c;没有实际解决&#xff0c;今天突然想到动笔来解决&#xff0c;遂得解&#xff0c;证明如下。 证明 总结 这个证明看似证明过后很直观&#xff0c;但…