MySQL2(Mysql对数据的增删改 数据的备份和还原 单表查询 常用的聚合函数(⭐⭐))

目录

一、Mysql对数据的增删改

1. 增加数据(INSERT语句)

2. 修改数据(UPDATE语句) 

​编辑

WHERE子句(⭐):

​编辑

3. 删除数据(DELETE语句)

删除数据(TRUNCATE语句)

面试题

4. 计算列(MySql8 新特性) 

二、数据的备份和还原

三、单表查询 

1. DQL语言

2. 查询语句语法规则

指定字段列:

​编辑

表别名和字段别名:

DISTINCT:

WHERE条件子句:

LIKE 关键字:

IN 关键字:

NULL 值查询:

ORDER BY排序

LIMIT关键字:

MySql8新关键词OFFSET:

3. 常用的聚合函数(⭐⭐)

3.1 GROUP BY

3.2 HAVING

4. 扩展

四、总结 


一、Mysql对数据的增删改

DML(数据操作语言)    Data Manipulation Language    用于对数据库中数据的增删改操作

数据增加:关键字INSERT,主要功能是 给数据库表增加记录。

数据修改:关键字是UPDATE,主要功能是 修改数据库表中已有的记录。可 以根据条件去做修改。

数据删除:关键字DELETE,主要功能室删除 数据库表中已有的记录。可以依 照条件去做修改。

1. 增加数据(INSERT语句)

语法:

INSERT   INTO   `表名`   [(`字段1`,`字段2`,...`字段n`)]VALUES/VALUE   ('值1','值2',...'值n')[,('值1','值2',...'值n')...];其中:
•“[]” 包含的内容可以省略;
•  字段或值之间用英文逗号隔开;
•  可同时插入多条数据,values 后用英文逗号隔开;
• values和value的方式均可。
-- 全字段插入数据
-- 日期要用字符串的形式书写成日期格式
insert into student(sid,sname,birthday,ssex,classid)
values(9,'张三','2000-1-1 14:30:59','男',1);
-- 不写字段名就是全字段插入
insert into 
student 
values(null,'李四','1999-2-2','女',1
);insert into student 
values(default,'李四','1999-2-2','女',1);
-- 部分字段插入
-- 其他的字段不能有not null约束,如果有默认值也可以
insert into student(sname) values('王五');

一次性插入多条数据:

方式一:

-- 一次性插入多条数据
-- 方式一:(推荐使用)
insert into student(sname,ssex) 
values ('唐三藏','男'),('孙悟空','男'),('猪悟能','男'),
('沙悟净','男');

方式二:

        INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。 目标表中任何已存在的行都不会受影响。

语法:

INSERT INTO table2(column_name,...)SELECT column_name,...FROMtable1;其中:
• table2 必须存在,将table1中数据赋值到table2中
-- 方式二:(不推荐)
-- 目标表必须要事先存在
create table stu1(stuid int primary key auto_increment,xingming varchar(10),xingbie varchar(2),classid int
);
-- insert into 目标表 select insert into stu1(xingming,xingbie,classid) 
select sname,ssex,classid from student;

方式三:

-- 方式三(不推荐)
-- 目标表不能存在
-- create table 目标表 select 
create table newstu 
select sid,sname,birthday from student;

2. 修改数据(UPDATE语句) 

语法:

UPDATE   表名   SET `字段名1`= '值1' [ , `字段名2` = '值2', …. ] 
[ WHERE 条件];其中:
•“[]” 包含的内容可以省略;
•  `字段名`为要更改数据的字段,'值'表示字段改后的值,注意字段和值的对应;
•  可同时修改多个字段,多个字段后用英文逗号隔开;
•“WHERE”是where子句,可以给修改增加条件;
• 条件:为筛选条件,如不指定则修改该表的所有列数据。
-- 修改
update 表名 set 字段名=值,字段名=值...,字段名=值 【where 子句】-- 数据库的值全部改变
-- 受影响的行数 -- 避免过多的读写(IO)数据库update stu1 set xingbie ='男';


WHERE子句(⭐):

        有条件的从数据库表中获取记录,通常同在修改,删除,和查询语句的时候,协助该类语句从条件中获取 记录。针对修改和删除语句,如果没有条件,则全部修改和全部删除。

运算符含义举例结果
=等于5=6false
<> 或 !=不等于5!=6true
>大于5>6false
<小于5<6true
>=大于等于5>=6false
<=小于等于5<=6true
BETWEEN在某个范围之间BETWEEN 5 AND 10-
AND并且5>1 AND 1>2false
OR5>1 OR 1>2True
Not
-- where 条件是整张表每一条数据进行判断 ****
update stu1 set xingbie ='女' where xingming='王五';

where 针对表中每一行数据

-- where 条件是整张表每一条数据进行判断 ****
update stu1 set xingbie ='女' where xingming='王五';-- 范围形
-- 方式一
-- 闭合区间
update stu1 set classid =100 
where  stuid >=10 and stuid <=15;
-- 方式二: -- between 跟较小的数据 and 较大的数据
update stu1 set classid =300 
where  stuid between 10 and 15;

3. 删除数据(DELETE语句)

语法:

DELETE FROM 表名   [ WHERE 条件];其中:
•“[]” 包含的内容可以省略;
•  “WHERE”可以通过where子句增加删除的条件。
-- 删除
-- delete from 表名 【where 子句】
delete from stu1 insert into stu1(xingming) values('张三')

删除数据(TRUNCATE语句)

语法:

TRUNCATE [TABLE] 表名其中:
• TRUNCATE是一个特殊的删除语句,又叫做清空语句;
•  “[]”包含的内容可以省略;
•  功能:清空某一张表内的全部数据,重置自增计数器;
• 特点:由于没有条件约束,所以速度快,而且效率高。
-- 清空表
-- truncate 表名
truncate stu1

面试题

drop truncate delete 区别

  • drop 包表结构,索引,数据全部删掉
  • truncate 只保留表结构, 索引和数据删掉
  • delete 只删数据

4. 计算列(MySql8 新特性) 

什么叫计算列呢?简单来说就是某一列的值是通过别的列计算得来的。

例如,a列值为1、b列值为2,c列不需要手动插入,定义a+b的结果为c的值,那么c就是计算列,是通过别的列计算得来的。


在MySQL8.0中,CREATE TABLE 和 ALTER TABLE 中都支持增加计算列。下面以CREATE TABLE为例进行讲解。


举例:定义数据表tb1,然后定义字段id、字段a、字段b和字段c,其中字段c为计算列,用于计算a+b的值。

-- 计算列
CREATE TABLE jsltab(id INT PRIMARY KEY AUTO_INCREMENT,a INT ,b INT ,c INT GENERATED ALWAYS AS (a + b) VIRTUAL
);
select * from jsltab
insert into jsltab(a,b) values(2,3),(200,300)

二、数据的备份和还原

方法一:使用工具

备份:

选中需要备份的 右键 选择转储SQL文件

恢复:

右键 点击运行SQL文件 选择备份的文件即可

方法二:使用dos命令

数据库备份和恢复的作用和价值主要体现在以下几个方面:

  • 高可用性:使数据库的失效次数减到 最少,从而使数据库保持 最大的可用性。
  • 安全性:计算机病毒型、特洛伊木马型、“黑客”入侵型、 逻辑炸弹型等会造成信息丢失,丢失的数据需要及时恢复。
  • 完整性:当数据库失效后,确保尽量少的数据丢失或根本不丢失,从而使数据具有最大的完整性。

三、单表查询 

1. DQL语言

        DQL(Data Query Language 数据查询语言)。用途是查询数据库数据,如SELECT语句。是SQL语句中最核心、最重要的语句,也是使用频率最高的语句。其中,可以根据表的结构和关系分为单表查询和多表联查。

  • 单表查询:针对数据库中的一张数据表进行查询,可以通过各 种查询条件和方式去做相关的优化。
  • 多表联查:针对数据库中两张或者两张以上的表同时进行查询, 依赖的手段有复杂查询和嵌套查询。

2. 查询语句语法规则

SELECT   [DISTINCT]{*|表1.*|[ 表1.字段1 [as  字段别名1][, 表1.字段2[as  字段别名2]][, …]]}FROM  表1 [as  表别名 ][ left|right|inner join  表2   on  表之间
的关系 ][ WHERE][ GROUP BY ] 
[ HAVING][ ORDER BY][ LIMIT  {[ 位置偏移量,]行数}]; 其中:
“[ ]”包含的内容可以省略;
“{ }”包含的内容必须存在;必须按照该顺序使用

关键字:

  • DISTINCT:设定DISTINCT可以去掉重复记录。
  • AS:表名或者字段名过长时,可以用AS关键字起别名,方便操作。
  • GROUP BY:按组分类显示查询出的数据。
  • HAVING:GROUP BY分组时依赖的分组条件。
  • ORDER BY:将查询出来的结果集按照一定顺序排序完成。
  • LIMIT:限制显示查询结果的条数。
#DQL
-- 所有的查询都会得到一张虚拟表
-- 数据查询
-- 最简单的查询
select 'abc';
select 123;
select 1+1;

指定字段列:

语法:

SELECT   * | 字段名1, 字段名2...     FROM   表名其中:“*”表示所查询的数据库表的全部字段。
-- 从表中查询数据
-- select from 表名
-- 全字段查询
select Sid,Sname,birthday,Ssex,classid from student;
select * from student;

-- 部分字段查询
select  Sname,Ssex from student;


表别名和字段别名:

语法:

SELECT   表别名.字段名1  AS 字段别名1, 表别名.字段名2 AS 字段别名2   
FROM   表名  AS 表别名其中:
• “.” 当前表存在的字段;
• “AS”可忽略不写,“AS”的功能如下:• 给字段取一个新别名;• 给表取一个新别名;• 把经计算或总结的结果用另外一个新名称来代替。
-- 给字段起别名
select Sname as '学生姓名' ,Ssex from student;select Sname as '学生姓名' ,Ssex '学生性别', birthday 学生生日 from student;

-- 添加一个学校的字段
select Sname 学生姓名, 'xynu' 学校 from student;


DISTINCT:

语法:

SELECT   DISTINCT 字段名1, 字段名2...     FROM   表名其中:去掉SELECT查询返回的记录结果中重复的记录(所有返回列的值都相同),
只返回一条。
-- 查询学生表中性别的数据
-- distinct 去除重复的数据
-- 去重机制 完全一致
select  distinct Ssex from student;


WHERE条件子句:

语法:

SELECT  *  FROM  表名 [ WHERE 条件];其中:
• WHERE条件子句不是必须的;
• WHERE子句,可以给查询增加条件;
• 条件:为筛选条件,如不指定则修改该表的所有数据。
-- 带条件的查询 where子句
select * from student 
where Ssex ='男' and classid =1; 

练习:

-- 查询Sid 2-6 的学生
select * from student 
where Sid >=2 and Sid <=6; select * from student 
where Sid between 2 and 6; 

-- 查询出年龄大于1990-1-1的学生
select * from student 
where birthday < '1990-1-1'; 


LIKE 关键字:

语法:

SELECT  *  FROM  表名 WHERE 字段  LIKE 条件;其中:
• 在WHERE子句中,使用LIKE关键字进行模糊查询;
• 与“%”一起使用,表示匹配0或任意多个字符;
• 与“_”一起使用,表示匹配单个字符。
-- like 模糊查询insert into student (sname) values
('张老师'),('小张'),('张美女'),('姓张的老师');-- %  任意多的任意字符
-- _  一个任意字符
select * from student where Sname like '%张%';
select * from student where Sname like '张%';select * from student where Sname like '%张_';
select * from student where Sname like '%张__';


IN 关键字:

语法:

SELECT  *  FROM  表名 WHERE 字段  IN (值1,值2...)其中:
• 查询的字段的值,至少与IN 后的括号中的一个值相同;
• 多个值之间用英文逗号隔开。
-- in 在特定的范围内
-- 1,3,4,5,8
select * from student where Sid =1 or Sid =3 or Sid =4 or Sid =5 or Sid =8;
select * from student where Sid in (1,3,4,5,8);


NULL 值查询:

语法:

SELECT  *  FROM  表名 WHERE 字段  IS NULL |  IS NOT NULL其中:
• NULL代表“无值”;
• 区别于零值0和空符串;
•  只能出现在定义允许为NULL的字段;
•  须使用 IS NULL 或 IS NOT NULL 比较操作符去比较。
-- 对 null 的操作
select * from student where birthday is null;
select * from student where birthday is not null;


ORDER BY排序

语法:

SELECT  *  FROM  表名 ORDER BY 字段名 [DESC|ASC]其中:
• ORDER BY 表示对SELECT语句查询得到的结果,按字段名进行排序;
• DESC表示排序的顺序为降序,ASC表示排序的顺序为升序;
•“[ ]”包含的内容可以省略。
-- 排序
-- asc (或不写)就是升序  
-- desc 降序
-- 先写先排select * from student order by classid desc, birthday asc;


LIMIT关键字:

语法:

SELECT  *  FROM  表名   LIMIT   [n , m  ]其中:
• LIMIT关键字是MySQL特有关键字;
• LIMIT限制SELECT返回结果的行数;
• n 表示第一条记录的偏移量,m 表示显示记录的数量;
•“[ ]”包含的内容可以省略。
-- 分页 limit 位置,步长 如果不写位置 默认为0select * from student limit 0,3;select * from student limit 3,3;select * from student limit 6,3;select * from student limit (页码-1)*步长,步长;select * from student limit (2-1)*3,3;

LIMIT实现分页显示的方式:

MySql8新关键词OFFSET:

语法:

SELECT  *  FROM  表名    limit  m  offset  n其中:
• LIMIT关键字是MySQL特有关键字;
• LIMIT限制SELECT返回结果的行数;
• n 表示第一条记录的偏移量,m 表示显示记录的数量;
•“[ ]”包含的内容可以省略。
-- offset 设置偏移量,位置
select * from student limit 3 offset 6

3. 常用的聚合函数(⭐⭐)

函数名返回值
AVG(col)返回指定列的平均值
COUNT(col)返回指定列中非NULL值的个数
MIN(col)返回指定列的最小值
MAX(col)返回指定列的最大值
SUM(col)返回指定列的所有值之和
count
-- ***** 聚合函数
-- count  个数 --全类型
-- count  不统计null
-- 学生表中一共有多少个人
select count(*) from student;
select count('abc') from student; -- 常量
select count(Sid) from student; select count(birthday) from student;-- null 不会被count计算到

-- 得到男同学的人数
select count(*) from student where Ssex='男';

sum

-- sum  总和
select sum(score) from sc;

练习:

-- max  最大值
-- min  最小值
-- avg  平均值-- 统计出sc表
-- 一共的考试次数 ,总成绩,平均分, 最高分,最低分
-- sum  总和
select count(*) 考试次数,sum(score) 总成绩,avg(score) 平均分,max(score) 最高分,min(score) 最低分 from sc;

3.1 GROUP BY

  1. 对所有的数据进行分组统计;
  2. 分组的依据字段可以有多个,并依次分组。
-- 查询出男同学和女同学各有多少个人
select count(*) from student where Ssex ='男';select count(*) from student where Ssex ='女';-- 上面两句等同于这句
select  Ssex,count(*) from student group by Ssex;

select  Ssex,max(Sid) from student group by Ssex;

练习:

-- 查出每个学生的平均分
select Sid,avg(score),count(*) from sc group by Sid;

3.2 HAVING

与GROUP BY结合使用,进行分组后的数据筛选。

-- 找到平均分不及格的学生
select Sid,avg(score)from sc group by Sid having avg(score)<60;

 where 和 having 的区别

  1. where 必须出现在group by 前面      having 必须出现在group by 后面
  2. where筛选的聚合前的数据 每一行数据       having 筛选的是聚合后的数据

4. 扩展

        在不同的 DBMS 中使用的关键字可能不同。在 MySQL、PostgresQL、MariaDB 和 sQLite 中使用 LIMIT 关键字,而且需要放到 SELECT 语句的最后面。 

如果是 SQL Server 和 Access,需要使用 TOP 关键字,比如:
SELECT TOP 5 name,hp_max FROM heros ORDER BY hp_max DESC如果是 DB2,使用 FETCH FIRST 5 ROWS ONLY 这样的关键字:
SELECT name, hp_max FROM herOS ORDER BY hp_maX DESC FETCH FIRST 5 ROWS ONLY重要:
如果是 Oracle,你需要基于 ROWNUM 来统计行数:
SELECT rownum,last_name,salary FROM employees WHERE rownum < 5 ORDER BY salary DESC;

四、总结 

  • DML语句内容?
    • INSERT语句,UPDATE语句和DELETE语句;
  • 新增语句如何实现多记录同时新增?
    • INSERT INTO `表名` (`字段1`,`字段n`) VALUES (值1,值n),(值1,值n),(值1,值n); 
  • WHERE子句的功能?
    • 依赖逻辑条件对数据库的记录修改,删除或者查询;
  • TRUNCATE语句和DELETE语句的异同?
    • 相同点:都能删除数据,都不能修改表结构;
    • 不同点:1、前者会重置自增计数器,后者不会;
      •         2、前者无条件约束,速度快效率高。
  • DQL语句内容
    • SELECT语句。

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

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

相关文章

轮播图的制作大全

例如该样式: 1.Vue的方法(可实现自动轮播和左右按钮和下方原点按钮轮播) <div id="app"><div class="a" ref="b" @mouseenter="MouseFun(c)" @mouseleave="MouseFun(d)">//1.图片显示盒子<div class=&qu…

2024最新算法:北极海鹦优化(Arctic puffin optimization,APO)算法求解23个函数,MATLAB代码

一、算法介绍 北极海鹦优化&#xff08;Arctic puffin optimization&#xff0c;APO&#xff09;算法是2024年提出一种智能优化算法。该算法模拟海鹦在空中飞行和水下觅食两个阶段的行为&#xff0c;旨在实现勘探与开发之间更好的平衡。该算法包括几个关键操作&#xff0c;包括…

CS-流量通讯特征修改-端口store证书流量通讯规则

免责声明:本文仅做技术交流与学习... 目录 1.修改默认端口&#xff1a; 2.去除store证书特征&#xff1a; 查看证书指纹&#xff1a; 生成证书指纹&#xff1a; 应用证书指纹&#xff1a; 3.去除流量通讯特征&#xff1a; 规则资源 http流量特征修改: https流量特征修改:…

DNF手游攻略:平民玩家角色打造保姆级攻略!云手机游戏辅助!

在《地下城与勇士》&#xff08;DNF&#xff09;手游中&#xff0c;角色的成长与装备的提升是每位玩家追求的目标。然而&#xff0c;对于不愿意投入大量金钱的平民玩家来说&#xff0c;如何在有限的资源下最大化提升角色战力是一项需要深思熟虑的挑战。本文将详细介绍平民玩家在…

鸿蒙开发网络管理:【@ohos.net.webSocket (WebSocket连接)】

WebSocket连接 说明&#xff1a; 本模块首批接口从API version 6开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 使用WebSocket建立服务器与客户端的双向连接&#xff0c;需要先通过[createWebSocket]方法创建[WebSocket]对象&#xff0c;然后通…

接口测试代码和工具

通过python的requests给接口发送请求进行测试 #coding:utf-8 import requests class TestApi(): url_login "https://legend-sit.omodaglobal.com/api/auth/oauth2/token" url_topic_b "https://legend-sit.omodaglobal.com/api/community/topic_b/page?…

Vue71-嵌套(多级)路由

一、需求 二、开发步骤 2-1、编写路由组件 2-2、编写路由规则 2-3、编写路由标签<router-link>、<router-view> 三、小结

计算预卷积特征

当冻结卷积层和训练模型时&#xff0c;全连接层或dense层(vgg.classifier)的输入始终是相同的。为了更好地理解&#xff0c;让我们将卷积块(在示例中为vgg.features块)视为具有了已学习好的权重且在训练期间不会更改的函数。因此&#xff0c;计算卷积特征并保存下来将有助于我们…

阿里云云服务器、ACR镜像服务、容器化实战:搭建企业应用

一、容器化基础知识 华为云免费试用服务器&#xff1a;https://activity.huaweicloud.com/free_test/index.html 阿里云docker容器教程&#xff1a;https://edu.aliyun.com/course/3111900/lesson/341807097 查询ip地址&#xff1a;www.ip138.com 二、容器化搭建企业应用实战 2…

【已解决】Python报错:NameError: name ‘Image‘ is not defined

&#x1f60e; 作者介绍&#xff1a;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff0c;视频号&#xff1a;AI-行者Sun &#x1f388; 本文专栏&#xff1a;本文收录于《AI实战中的各种bug…

性能评测系列(PT-010):Spring Boot + MySQL,高并发insert

一、测试概述 测试场景 场景编号&#xff1a; PT-010场景描述&#xff1a; Java应用&#xff0c;MySQL单表写测试目的&#xff1a;指定规格、配置、环境下&#xff0c;Java应用数据库简单写场景负载能力评估。&#xff08;不含调优&#xff0c;所测结果未必是最优结果&#x…

软RAID

硬盘 连续空间 无法 扩容 lvm 非连续空间 可以动态扩容 raid 备份&#xff0c; 提高读写性能&#xff0c;不能扩容 raid 是磁盘的集合&#xff0c;按照排列组合的方法不 一&#xff0c;给 raid 去了不同的名字 raid0 raid1 raid5 raid10 什么是 RAID "RAID"…

构建实用的Flutter文件列表:从简到繁的完美演进

前言&#xff1a;为什么我们需要文件列表&#xff1f; 在现代科技发展迅速的时代&#xff0c;我们的电脑、手机、平板等设备里积累了大量的文件&#xff0c;这些文件可能是我们的照片、文档、音频、视频等等。然而&#xff0c;当文件数量增多时&#xff0c;我们如何快速地找到…

驾校预约管理系统

摘 要 随着驾驶技术的普及和交通安全意识的增强&#xff0c;越来越多的人选择参加驾校培训&#xff0c;以获取驾驶执照。然而&#xff0c;驾校管理面临着日益增长的学员数量和繁琐的预约管理工作。为了提高驾校的管理效率和服务质量&#xff0c;驾校预约管理系统成为了必不可少…

微信app支付没上架开通方法

对于许多商家来说&#xff0c;特别是那些经营游戏、商城等拥有自己APP的商家&#xff0c;接入微信支付无疑是一个重要的步骤&#xff0c;它能让用户更方便地进行支付操作&#xff0c;提升购物体验。然而&#xff0c;随着微信支付政策的调整&#xff0c;现在开通APP支付并不像以…

手机照片压缩到20k以内免费,这几款心动软件快收好!

在数字化时代&#xff0c;手机拍照已成为我们记录生活的重要方式之一。然而&#xff0c;高清的照片也意味着占用着越来越多的手机存储空间。如果你正在为手机内存告急而烦恼&#xff0c;那么这几款手机照片压缩神器或许能成为你的救星&#xff01;它们不仅可以将照片轻松压缩至…

【Linux】多线程的相关知识点

一、线程安全 1.1 可重入 VS 线程安全 1.1.1 概念 线程安全&#xff1a;多个线程并发执行同一段代码时&#xff0c;不会出现不同的结果。常见对全局变量或者静态变量进行操作&#xff0c;并且没有锁的保护的情况下&#xff0c;会出现问题。重入&#xff1a;同一个函数被不同…

vue3通过vue-video-player实现视频倍速、默认全屏、拖拽进度条等功能

效果图&#xff1a; 1、场景&#xff1a; js原生的video标签在不同浏览器及不同型号手机上都展示的不一样&#xff0c;一部分没有倍速&#xff0c;一部分没有全屏等功能&#xff0c;为了统一视频播放的交互功能&#xff0c;使用vue-video-player插件来完成&#xff0c;vue-vid…

轻松打造分班查询系统,这个工具助您一臂之力!

新学期伊始&#xff0c;老师们知道该如何快捷制作并发布分班查询系统吗&#xff1f;面对繁杂的学生名单和班级分配&#xff0c;无疑是一项巨大的麻烦。传统的纸质通知效率低下&#xff0c;容易出错&#xff0c;更别提在信息传递过程中可能出现的混乱和误解了。 现在有一个工具可…

【工具推荐】ONLYOFFICE 桌面编辑器 8.1:引入全新功能,提升文档处理体验

ONLYOFFICE 桌面编辑器 8.1 现已发布&#xff1a;功能完善的 PDF 编辑器、幻灯片版式、改进从右至左显示、新的本地化选项等 【工具推荐】ONLYOFFICE 桌面编辑器 8.1&#xff1a;引入全新功能&#xff0c;提升文档处理体验 一、什么是ONLYOFFICE&#xff1f; ONLYOFFICE 是…