MySQL 之 数据库操作 及 表操作

🎉欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨

🎉感谢各位读者在百忙之中抽出时间来垂阅我的文章,我会尽我所能向的大家分享我的知识和经验📖

🎉希望我们在一篇篇的文章中能够共同进步!!!

🌈个人主页:AUGENSTERN_dc

🔥个人专栏:C语言 | Java | 数据结构 | 算法 | MySQL

⭐个人格言:

一重山有一重山的错落,我有我的平仄

一笔锋有一笔锋的着墨,我有我的舍得

 


目录

1. MySQL是如何组织数据的:

2. 显示当前的所有数据库:

2.1 语法:

2.2 示例:

2.3 说明:

3. 创建数据库:

3.1 语法:

3.2 说明:

3.3 示例:

4. 使用数据库:

4.1 语法:

4.2 示例:

5. 删除数据库:

5.1 语法:

5.2 示例:

5.3 说明:

6. 常用数据类型:

6.1 数值类型:

6.2 字符串类型:

6.3 日期类型:

7. 查看表结构:

7.1 语法:

7.2 示例:

7.3 说明:

8 创建表:

8.1 语法:

8.2 示例:

9. 查看所有表:

9.1 语法:

9.2 示例:

10. 删除表:

10.1 语法:

10.2 示例:

11. 行的新增(create):

11.1 语法:

11.2 单行数据 + 全列插入:

11.3 多行数据 + 全列插入;

11.4 多行数据 + 指定列插入:

12 行查询(Retrieve):

12.1 语法:

12.2 全列查询:

12.3 指定列查询:

12.4 查询字段为表达式:

12.5 别名:

12.6 去重查找(DISTINCT):

12.7 排序(ORDER BY):

12.8 对使用表达式和别名进行排序:

12.9 对多个字段进行排序:

12.10 条件查询(where) :

12.10.1 比较运算符:

12.10.2 基本查询:

12.10.3 IN查询:

12.10.4 LIKE模糊查询:

12.11 NULL 查询:

12.12 分页查询(LIMIT):

13 修改(UPDATE): 

13.1 语法:

14 删除行(DELETE)

14.1 语法:

14.2 示例:



1. MySQL是如何组织数据的:

在MySQL中, 我们的数据库通常是存放在数据库服务器中的, 而数据库中又有数据表,数据表中悠悠数据行,最后数据行中有数据列, 整理后我们可以得到如下结构:

2. 显示当前的所有数据库:

2.1 语法:

SHOW DATABASES;

2.2 示例:

我们在MySQL中输入show databases; 就会显示目前我们MySQL中存在几个数据库:

2.3 说明:

在MySQL中,sql语法是对大小写不敏感的,故使用大写和小写对代码的影响不大

上图中的四个数据库是系统库,并未包含我个人所创建的库,以上的四个系统库在使用的时候,一定要注意,避免删除了其中的数据,使得MySQL无法正常使用;

面对上述误操作,我们也无需担心,只需讲MySQL删除后重新下载即可;

3. 创建数据库:

3.1 语法:

CREATE DATABASE [IF NOT EXISTS] 表名 [create_specification [, create_specification] ...]

create_specification:

        [DEFAULT] CHARACTER SET charset_name

        [DEFAULT] COLLATE collation_name

3.2 说明:

< 1 > 大写的表示关键字

< 2 > [ ] 中的内容是可省略的

< 3 > CHARACTER SET: 指定数据库采用的字符集

< 4 > COLLATE: 指定数据库字符集的校验规则

3.3 示例:

< 1 >  创建一个名为 test1 的数据库:

CREATE DATABASE test1;

此处显示创建成功,我们用show databases来验证一下是否创建成功;

很明显,在database中,有了 test1 这一个数据库;

当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则 是:utf8_ general_ ci


MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符。MySQL真正的utf8是 使用utf8mb4,建议大家都使用utf8mb4

< 2 >  如果系统没有 test2 的数据库,则创建一个名叫 test2 的数据库,如果有则不创建;

CREATE DATABASE IF NOT EXISTS test2;

系统同样提示创建成功,我们用show databases来检验一下是否正确;

< 3 > 如果系统没有 test 的数据库,则创建一个使用utf8mb4字符集的 test 数据库,如果有则不创建

CREATE DATABASE IF NOT EXISTS test CHARACTER SET utf8mb4;


在这里 character set 也可以简写成 charset

用charset 和character set 的效果是一样的, 但是第二条语句由于已经存在了test这一个数据库,所以创建失败;

4. 使用数据库:

我们想要对某一个数据库进行操作,我们就需要选中该数据库,或者说是使用该数据库

4.1 语法:

USE 数据库名;

4.2 示例:

5. 删除数据库:

5.1 语法:

DROP DATABASE [IF EXISTS] 表名;

5.2 示例:

在数据库中,只要一段语句没有分号,就可以换行输入

在该示例中,由于没有test3 这个数据库,故无法进行删除操作,显示1warning;

5.3 说明:

数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除

6. 常用数据类型:

不同的语言之间,有这不同的体系,就像 Java 比 C语言多了一个byte类型一样, sql 这个语言和C语言,Java也截然不同;

6.1 数值类型:

数值类型分为整形浮点型

数据类型大小说明对应的Java类型
BIT[ (M) ]M指定位 数,默认为1二进制数,M范围从1到64, 存储数值范围从0到2^M-1常用Boolean对应BIT,此时默认是1位,即只能存0和1
TINYINT1字节Byte
SMALLINT2字节Short
INT4字节Integer
BIGINT8字节Long
FLOAT(M, D)4字节单精度,M指定长度,D指定 小数位数。会发生精度丢失Float
DOUBLE(M, D)8字节Double
DECIMAL(M, D)1字节双精度,M指定长度,D表示 小数点位数。精确数值BigDecimal
NUMERIC(M, D)1字节和DECIMAL一样BigDecimal

扩展:

在sql中,类型是写在变量名的后面的

数值类型可以指定为无符号(unsigned),表示不取负数。

1字节(bytes)= 8bit。

对于整型类型的范围:

        1. 有符号范围:-2^(类型字节数*8-1)到2^(类型字节数*8-1)-1,如int是4字节,就 是-2^31到2^31-1

        2. 无符号范围:0到2^(类型字节数*8)-1,如int就是2^32-1

尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其 如此,还不如设计时,将int类型提升为bigint类型。

6.2 字符串类型:

数据类型大小说明对应Java类型
VARCHAR (SIZE)0-65,535字节可变长度字符串String
TEXT0-65,535字节长文本数据String
MEDIUMTEXT0-16 777 215字节中等长度文本数据String
BLOB0-65,535字节二进制形式的长文本数据byte[]

6.3 日期类型:

数据类型大小说明对应Java类型
DATETIME8字节范围从1000到9999年,不会进行时区的检索及转换。java.util.Date、 java.sql.Timestamp
TIMESTAMP4字节范围从1970到2038年,自动检索当前时区并进行转换。java.util.Date、 java.sql.Timestamp

7. 查看表结构:

7.1 语法:

DESC 表名;

desc 是describe 的缩写;

7.2 示例:

为了更好的展示, 我们在test数据库中 创建一个student表, 这个语法在之后会有所介绍;

在创建表的时候,我们需先使用test数据库

我们用desc来查看表的结构:

这个就是我们表的结构;

7.3 说明:

Field 表示的是该字段的名字;

Type 表示的是该字段的类型;

Null 表示的是是否允许为空;

Default 表示的是该表中默认的值;

Extra 表示的是扩充;

8 创建表:

8.1 语法:

CREATE TABLE 表名 ( field1 datatype, field2 datatype, field3 datatype );

我们可以用comment增加字段的说明.

8.2 示例:

以刚才创建的student表为例;

我们创建了一个表, 名为student, 在表中一共有五列 分别为 int类型的id, varchar(20)类型的name,

decimal(3,1) 类型的chinese,decimal(3,1) 类型的math,decimal(3,1) 类型的english;

这里的varchar(20) 中的20指的是,只能存放20 个字符,而不是字节;

若我们在创建表的时候,不给表任何字段,则会报错:

提示我们必须至少给表提供一个字段;

9. 查看所有表:

9.1 语法:

SHOW TABLES;

9.2 示例:

10. 删除表:

10.1 语法:

DROP [TEMPORARY] TABLE [IF EXISTS] 表名 [, 表名] ...

10.2 示例:

我们将student表进行删除操作;

再查看所有的表;

显示test数据库中没有表存在了;

11. 行的新增(create):

11.1 语法:

INSERT [INTO] 表名 [(column [, column] ...)] VALUES (value_list) [, (value_list)] ... value_list: value, [, value] ...

我们再次在test数据库中创建一个student表;

11.2 单行数据 + 全列插入:

我们在这个表中新增一行:

当然,我们不一定非要按照id, name, chinese, math, english这个创建表的顺序来输入,我们可以自己进行更换;

11.3 多行数据 + 全列插入;

我们在增加行的时候,我们可以一次性添加多行,这样的效率比多次添加效率会更高;

这两种输入方式都是可以的,但是第二种换行输入不能去修改上一行的代码,不建议这样操作;

11.4 多行数据 + 指定列插入:

在进行插入的时候,我们不仅可以选择多行插入,我们还可以选择只插入某几列;

这一次我们就没有对id这一列进行新增操作,那么id的值就会被赋值成默认值;

在上述的代码中,我们发现into是可以省略的, 同时name在输入的时候,可以用 ' ,  也可以用 " 

12 行查询(Retrieve):

12.1 语法:

SELECT [DISTINCT] {* | {column [, column] ...} FROM 表名 [WHERE ...] [ORDER BY column [ASC | DESC], ...] LIMIT ...

12.2 全列查询:

对表中的所有的列进行查询操作

这里的 * 是sql中的通配符, 也就是所有的意思, 和Java中的 * 很相似;

12.3 指定列查询:

指定列的查询也不需要按照表的定义的顺序去写;

只需要在from和select之间输入想查询的列即可;

12.4 查询字段为表达式:

在我们查询的时候,我们可以将字段写成表达式, 如上图所示;

通过上图我们发现,对NULL进行表达式操作, 他的结果还是NULL;

但我们再次查询表的内容的时候

我们发现,其chinese列和id列的值并没有被修改,说明,在查询的时候,字段表达式不影响数据库中的数据的值;

12.5 别名:

在查询的时候,假如我们想要查询chinese + math + english我们可以这样写:

但是 chinese + math + english 这一行太长了, 我们想给他换个名字, 这时候我们可以使用我们的别名:

在这两行代码中,我们发现,只要在chinese + math + english后 + as + 新的名字,就可以在显示的时候,显示新的名字,这里的as我们是可以省略的;

12.6 去重查找(DISTINCT):

在某些时候,我们查找的过程中,不希望出现重复的数据,我们可以使用去重查找:

这是原本的表的数据;

对id进行去重操作:

但如果我们对id 和 name 都进行去重的话:

我们会发现,并没有那一行缺少了, 因为我们同时对id 和 name 进行了去重的操作, 只有当id 和 name都相同的时候,才会被去重;

同时,我们的去重不能这么写

我们只需在第一个字段的最前面 + distinct 即可, 会对后面所有的字段进行去重;

12.7 排序(ORDER BY):

我们可以对math这一列进行排序

同时,我们也可以进行降序排序

只需order by + 字段 + desc即可, 此处的desc 和上面的查询表结构的desc不同

查询表结构的desc 是 describe的缩写

降序排序的desc 是 descend 的缩写

由于order by 的默认排序是升序, 所以我们没必要order by + 字段 + asc,这个asc是可以省略的;

若我们对有NULL的列进行排序, 则默认NULL的值最小;

12.8 对使用表达式和别名进行排序:

如果我们这么去写的话,查询的结果会是正确的结果,同理,我们将排序的字段写成别名的话也正确;

12.9 对多个字段进行排序:

在我们查询表的时候,我们可能会根据多列的结果来进行排序, 比如:

我们会发现, 首先我们比较的是英语的成绩, 若英语成绩相同,则比较数学成绩的大小;

这就是对多个字段进行排序;

12.10 条件查询(where) :

12.10.1 比较运算符:

运算符说明
>, >=, <, <=大于,大于等于,小于,小于等于
=等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>等于,NULL 安全,例如 NULL NULL 的结果是 TRUE(1)
!=, <>不等于
BETWEEN a0 AND a1范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, ...)如果是 option 中的任意一个,返回 TRUE(1)
IS NULL是 NULL
IS NOT NULL不是 NULL
LIKE模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字 符
AND多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT条件为 TRUE(1),结果为 FALSE(0),反之

注:

        1. WHERE条件可以使用表达式,但不能使用别名。

        2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

12.10.2 基本查询:

查询英语成绩> 80分的同学;

这里需要注意, 我们的where应该要写在 order by 的前面;

 查询总分 > 200 的同学:

这里如果我们将where后面的 english + math + chinese 写成别名的话:

系统会进行报错,因为sql中的语句也是有优先级的where语句的优先级 > 别名的优先级,所以where语句无法识别别名;

查询英语成绩 > 语文成绩 并且 数学成绩及格的同学:

查询数学成绩在60 - 99.9 之间的同学;

这里也可以用and 来代替:

12.10.3 IN查询:

查询数学成绩为77, 73, 98的同学:

此处同样可以用OR来代替:

12.10.4 LIKE模糊查询:

这里先简单介绍两个操作符:

% 匹配任意多个(包括 0 个)字符

_ 匹配严格的一个任意字符

首先我们先对student表新增几行,方便后续展示:

这是表此时的内容:

我们对表进行模糊查找操作:

会发现匹配了三个name 都是以 孙 开头的

这次匹配则是以孙结尾的name

这次则是查找name中有孙的行

若我们将%换成_

此时的一个_ 则对应一个字符;

若想找到行者孙 则需写成:

12.11 NULL 查询:

查找id为null 或者id 不为null 的行:

12.12 分页查询(LIMIT):

查找数学前三名的同学:

在最后 + limit 3 表示只查找前三个

查找数学成绩4 - 6 名:

其中的offset表示偏移量, offset 3 的意思就是从第四个开始查找,不查找前三个;

上述代码也可以写成

但此时的第一个3表示的是偏移量, 第二个三才是限制查询个数

13 修改(UPDATE): 

13.1 语法:

UPDATE 表名 SET column = expr [, column = expr ...] [WHERE ...] [ORDER BY ...] [LIMIT ...]

修改张三和李四的语文成绩, 分别 -10:

原表内容如下:

update student set math = math - 10 where name = '李四' or name = '张三';

修改后成绩 

很明显,张三和李四的数学成绩都被 - 10;

修改语文最后三名的成绩为0分;

update student set chinese = 0 order by chinese limit 3;

 

修改后

14 删除行(DELETE)

14.1 语法:

DELETE FROM  table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

14.2 示例:

删除孙悟空同学的成绩:

 delete from student where name = '孙悟空';

我们会发现,表中已经没有了孙悟空这一行的数据;


以上就是本篇文章的全部内容,感谢大家观看!!!!!!

如果觉得文章不错的话,麻烦大家三连支持一下ಠ_ಠ

制作不易,三连支持

谢谢!!!

以上代码都是内容都是本人的思路,若有错误或不足,望多多包涵!!!

最后送给大家一句话,同时也是对我自己的勉励:

繁花锦簇,硕果累累,都需要过程!!!!!!

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

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

相关文章

Qt QWebSocket讲解

QWebSocket 是 Qt 框架中用于处理 WebSocket 通信的类。WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。这使得客户端和服务器之间可以进行实时交互&#xff0c;而无需频繁地建立和关闭连接。 QWebSocket 的基本使用 创建 QWebSocket 对象&#xff1a; 你可以创建一个…

【跟着CHATGPT学习硬件外设 | 01】SPI

文章目录 &#x1f680; 概念揭秘关键精华&#x1f31f; 秒懂案例生活类比实战演练 &#x1f50d; 原理与工作流程探秘步骤1&#xff1a;初始化SPI接口步骤2&#xff1a;主设备启动通信步骤3&#xff1a;主设备发送数据步骤4&#xff1a;从设备接收数据步骤5&#xff1a;从设备…

一文彻底搞懂 TSL 流程

文章目录 1. 什么是 TSL2. TSL 流程3. CA 签发流程 1. 什么是 TSL HTTPS&#xff08;Hyper Text Transfer Protocol Secure&#xff09;是基于 HTTP 协议之上的安全通信协议&#xff0c;它使用 TLS 或 SSL 加密协议来保护网络通信的安全性和隐私性。 TLS&#xff08;Transpor…

模拟游戏《幸福工厂》好玩吗?《幸福工厂》怎么在mac电脑上打开?

关于《幸福工厂》这款游戏是否好玩&#xff0c;普遍的玩家反馈和评价表明&#xff0c;《幸福工厂》&#xff08;Satisfactory&#xff09;因其深度的工厂建造模拟、自由度极高的探索以及精美的图形表现而受到许多玩家的喜爱。它允许玩家在一个开放的世界中规划并建立复杂的生产…

DeepL Pro3.1 下载地址及安装教程

DeepL Pro是DeepL公司推出的专业翻译服务。DeepL是一家专注于机器翻译和自然语言处理技术的公司&#xff0c;其翻译引擎被认为在质量和准确性方面表现优秀.DeepL Pro提供了一系列高级功能和服务&#xff0c;以满足专业用户的翻译需求。其中包括&#xff1a; 高质量翻译&#xf…

Vue3+Vite Nginx部署 跨域

打包项目 webstorm打开项目之后&#xff0c;在Terminal执行打包命令 pnpm run build:prod 复制到Nginx 打包完成之后,生成的包在根目录dist&#xff0c;把dist目录拷贝到Nginx放网站目录下&#xff1a;\nginx-1.25.2\html\divided &#xff0c;dist改名了divided 修改配置…

基于Java+SpringBoot+vue仓库管理系统设计与实现

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

归并排序---分治法

1、算法的概念 归并排序&#xff1a;是创建在归并操作上的一种有效的排序算法。算法是采用分治法的一个非常典型的应用&#xff0c;且各层分治递归可以同时进行。归并排序的思路简单&#xff0c;速度仅次于快速排序&#xff0c;为稳定排序算法&#xff0c;一般用于对总体无序&…

鸿蒙OS开发实战:【网络管理HTTP数据请求】

一、场景介绍 应用通过HTTP发起一个数据请求&#xff0c;支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。 二、 接口说明 HTTP数据请求功能主要由http模块提供。 使用该功能需要申请ohos.permission.INTERNET权限。 涉及的接口如下表&#xff0c;…

Nest安装及使用~

前提条件 请确保您的操作系统上安装了 Node.js&#xff08;版本 > 16&#xff09; &#x1f4da;要查看指南&#xff0c;请访问 https://docs.nestjs.com/ &#x1f4da;要查看中文 指南&#xff0c; 请访问 https://docs.nestjs.cn/ $ node -v v16.18.1 $ npm -v 7.x.x安…

基于YOLOV8+Pyqt5光伏太阳能电池板目标检测系统

1、YOLOV8算法 YOLOv8 是当前效果较好的目标检测 算法&#xff0c;它的核心网络来源于 DarkNet-53&#xff0c;该网络初次在 YOLOv3[11] 中被引入&#xff0c;并深受 ResNet[12] 的影响。DarkNet-53 使用了残差机制&#xff0c;并连续添加了卷积模块来加强其功能性。 这 53 层…

微服务之分布式事务概念

微服务之分布式事务概念 CAP定理和Base理论 CAP定理 CAP定理在1998年被加州大学的计算机科学家 Eric Brewer 提出&#xff0c;分布式系统有三个指标&#xff1a; 一致性&#xff08;Consistency&#xff09;可用性&#xff08;Availability&#xff09;分区容错性&#xff…

线上系统时间慢八个小时的排查之路

最近有一个新项目上线&#xff0c;在上线时&#xff0c;突然发现时间与正常时间对不上&#xff0c;少了八个小时&#xff1b;但我丝毫不慌&#xff0c;这不就是个时区的问题吗&#xff0c;简单&#xff0c;但是这一次它给我深深的上了一课&#xff0c;一起来看整个排查过程吧。…

交替子数组计数 - 力扣题解

⭐简单说两句⭐ ✨ 正在努力的小新~ &#x1f496; 超级爱分享&#xff0c;分享各种有趣干货&#xff01; &#x1f469;‍&#x1f4bb; 提供&#xff1a;模拟面试 | 简历诊断 | 独家简历模板 &#x1f308; 感谢关注&#xff0c;关注了你就是我的超级粉丝啦&#xff01; &…

HarmonyOS实战开发-如何实现一个简单的健康生活应用(下)

获取成就 本节将介绍成就页面。 功能概述 成就页面展示用户可以获取的所有勋章&#xff0c;当用户满足一定的条件时&#xff0c;将点亮本页面对应的勋章&#xff0c;没有得到的成就勋章处于熄灭状态。共有六种勋章&#xff0c;当用户连续完成任务打卡3天、7天、30天、50天、…

MySQL中如何进行多表查询

目录 一、子查询 1.什么是子查询 2.注意事项 二、联结查询 1.什么是联结 2.内部联结&#xff08;等值联结&#xff09; ①WHERE语句 ②ON语句 3.自联结 4.自然联结 5.外部联结 三、组合查询 1.什么是组合查询 2.UNION规则 *本节涉及概念来源于图灵程序设计丛书&a…

【前端面试3+1】07vue2和vue3的区别、vue3响应原理及为什么使用proxy、vue的生命周期中在什么时期给接口发请求、【找出数组最大公约数】

一、vue2和vue3的区别 1.性能优化&#xff1a; Vue 3在性能方面有很大的提升&#xff0c;主要是通过虚拟DOM的优化和响应式系统的改进实现的。 虚拟 DOM 重构&#xff1a;Vue 3 中对虚拟 DOM 进行了重构&#xff0c;使得更新算法更加高效&#xff0c;减少了更新时的开销&#x…

14 - grace数据处理 - 泄露误差改正 - 空域滤波法(Mascon法)

@[TOC](grace数据处理 - 泄露误差改正 - 空域滤波法(Mascon法)) 空域法的基本思想是假设地面某区域的质量变化是由一系列位置已知、质量未知的质量块(小范围区域)引起的,那么将GRACE反演的结果归算到n个质量块上的过程就是泄露信号恢复的过程。个人理解是这样的:假定已知研…

gtsam::Pose3的compose()函数作用

#include <gtsam/geometry/Pose3.h> #include <iostream> int main(int argc, char** argv) {// B 的旋转量为绕 x 轴旋转 180 度gtsam::Pose3 B gtsam::Pose3(gtsam::Rot3(0, 1, 0, 0), gtsam::Point3(1, 2, 0));// A 的旋转量为绕 z 轴旋转 180 度gtsam::Pose3 A…

Linux零基础入门之华为欧拉系统安装

一、名词解释 Linux&#xff1f; Linux是一个开源的免费的操作系统&#xff0c;功能与windows一样。具有处理器管理&#xff0c;存储管理&#xff0c;设备管理&#xff0c;文件管理&#xff0c;作业管理等功能。 可以俗称为Linux操作系统&#xff0c;组织或个人&#xff0c;…