当前位置: 首页 > news >正文

数据库操控指南:玩转数据

对于表中数据的基本操作

  • 数据的操作——DML语句(增删改)
    • 1.插入数据
    • 2.修改数据
    • 3.数据删除
  • 数据的查询——DQL语句
    • 1.原理:
    • 2.查看表结构
    • 3.条件查询
    • 4.基础的SELECT语法

阅读指南:
本文章讲述了对于数据库中的数据的基本操作,如果读者感兴趣,后续我们会更新高级的操作在我们的对于数据库教程的合集中,大家可以来很我们一起学习讨论
合集链接:
数据库详细基础教程

数据的操作——DML语句(增删改)

1.插入数据

方法一:

​ 为表的一行所有字段(列)插入数据

INSERT INTO 表名 VALUES (VALUES2, VALUES3……);

笼统的插入行数据时,总需要为表的每一个字段指定值,并且值的顺序必须和数据表中字段定义时的顺序相同。

方法二:

​ 为表的一行指定字段(列)插入数据

INSERT INTO 表名(列名1, 列名2, ……) VALUES (value1, value2, ……)……(value1, value2……);

特殊的插入行数据时,需要为表后指定的列指定值,并且值的顺序和类型必须和指定的列顺序相同。

方法三:

​ 同时插入多条记录

INSERT INTO  表名 VALUES(value1, value2……);
# 或者
INSERT INTO 表名(列名1, 列名2, ……) VALUES (value1, value2, ……)……(value1, value2……);

注:

对于方法一和方法二而言,只需要在values后面写多个值即可,并且()代表的是一行。

示例:

CREATE TABLE students (stu_id INT COMMENT '学号',stu_name VARCHAR(100) COMMENT '姓名',stu_age TINYINT UNSIGNED COMMENT '年龄',stu_birthday DATE COMMENT '生日',stu_height DECIMAL(4, 1) DEFAULT 200 COMMENT '身高,保留以为小数'
);SHOW TABLES;
-- 使用 SELECT 语句查看表的数据
SELECT * FROM students;USE ddl_d1;
-- 插入数据
INSERT INTO students (stu_id, stu_name, stu_age, stu_birthday, stu_height) 
VALUES (1, '二狗子', 20, '2000-01-05', 185.5);INSERT INTO students (stu_name, stu_age, stu_birthday, stu_height, stu_id) 
VALUES ('二狗子', 20, '2000-01-05', 185.5, 2);

2.修改数据

方式一:

​ 修改表中所有行数据,即全表修改

# 这是一行指令,分开写只是方便阅读,同时分开写这种形式不会影响sql编译
UPDATE table_name
SET column = value, column2 = value2,……,column = value;

更新表总所有行指定的列数据。

方式二:

​ 修改表中符合条件的数据,即条件修改

UPDATE table_name
SET column1 = value1, column2 = value2,……, column = vlaue
[WHERE condition];

条件修改只是在后面添加where,where后面指定相关的条件即可。

示例:

USE ddl_d1;
-- 插入数据
INSERT INTO students (stu_id, stu_name, stu_age, stu_birthday, stu_height) 
VALUES 
(6, '张三', 20, '2000-01-05', 185.5),
(7, '李四', 45, '2000-01-05', 185.5),
(8, '王五', 40, '2000-01-05', 185.5),
(9, '赵六', 30, '2000-01-05', 185.5),
(10, '钱七', 80, '2000-01-05', 185.5),
(11, '孙八', 21, '2000-01-05', 185.5),
(12, '周九', 13, '2000-01-05', 185.5),
(13, '吴十', 15, '2000-01-05', 185.5),
(14, '郑十一', 18, '2000-01-05', 185.5),
(15, '王狗子', 56, '2000-01-05', 185.5)-- 按 stu_id 升序排序
SELECT * FROM students ORDER BY stu_id ASC;# 将id为1的学生的名字改为赵一
UPDATE students SET stu_name = '赵一' WHERE stu_id = 1;
# 将所有年龄小于20的学生的升高减20
UPDATE students SET stu_height = stu_height - 20 WHERE stu_age < 20;
# 让所有学生大一岁
UPDATE students SET stu_age = stu_age + 1;

3.数据删除

方法一:

​ 删除表中的所有数据,即全表删除,但不删除表的记录,只清理数据。

DELETE FROM table_name;

方法二:

​ 删除表中符合条件行的数据,即条件删除。

DELETE FROM talbe_name [WHERE condition];

示例:

# 删除年龄大于40且身高小于170的
DELETE FROM students WHERE stu_age > 40 AND stu_height > 170;# 清空表数据
DELETE FROM students;

数据的查询——DQL语句

1.原理:

单表查询:
单张数据表 ——> 查询语法 ——> 虚拟表

多表查询:

​ 多张数据表 ——> 合并语法 ——> 中间虚拟表 ——> 查询语法 ——> 虚拟表

2.查看表结构

DESCRIBE table_names;DESC table_names;

3.条件查询

SELECT 字段你1,字段2 FROM 表名 WHERE 过滤条件;

这种方法是先过滤条件,然后再把符合的返回。

4.基础的SELECT语法

方法一:

​ 非表查询

SELECT 1;SELECT 9/2;SELECT VERSION;	# sql的版本

类似java的输出,直接在控制台输出。

方法二:

​ 指定表

SELECT 列名1, 列名2, 列名3 FROM 表名;
或者
SELECT * FROM 表名;

方法三:

​ 查询列起别名

SELECT 列名1 as 别名1, 列名2, 列名3 as 别名3 FROM 表名;
或者
SELECT 列名1 别名1,列名2, 列名3 别名3 FROM 表名;

起别名这种方式是为了让java在读取数据库时,当数据库的字段与Java的对象名不一致时,采用对数据库的字段起别名的方式来匹配java的对象。

方法四:

​ 去除重复行

SELECT DISTINCT 别名 [列名,列名]FROM 表名;

指定删除重复行,可以指定单行或者多行

方法五:

​ 查询常数

SELECT '尚硅谷' as corporation, 列名, 列名……FROM表名

这一部分的意思是选择一个字符串常量"尚硅谷"并将其命名为"corporation"。这意味着结果集中将会有一列,其所有行的值都将是"尚硅谷"。

示例:
创建库,准备数据

CREATE DATABASE IF NOT EXISTS test04_dql;
USE test04_dql;-- 创建员工表
DROP TABLE IF EXISTS `t_employee`;CREATE TABLE `t_employee` (`eid` INT NOT NULL COMMENT '员工编号',`ename` VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '员工姓名',`salary` DOUBLE NOT NULL COMMENT '薪资',`commission_pct` DECIMAL(3,2) DEFAULT NULL COMMENT '奖金比例',`birthday` DATE NOT NULL COMMENT '出生日期',`gender` ENUM('男','女') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '男' COMMENT '性别',`tel` CHAR(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '手机号码',`email` VARCHAR(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '邮箱',`address` VARCHAR(150) DEFAULT NULL COMMENT '地址',`work_place` SET('北京','深圳','上海','武汉') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '北京' COMMENT '工作地点'
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;INSERT  INTO `t_employee`(`eid`,`ename`,`salary`,`commission_pct`,`birthday`,`gender`,`tel`,`email`,`address`,`work_place`) 
VALUES (1,'孙洪亮',28000,'0.65','1980-10-08','男','13789098765','shl@atguigu.com','白庙村西街','北京,深圳'),
(2,'何进',7001,'0.10','1984-08-03','男','13456732145','hj@atguigu.com','半截塔存','深圳,上海'),
(3,'邓超远',8000,NULL,'1985-04-09','男','18678973456','dcy666@atguigu.com','宏福苑','北京,深圳,上海,武汉'),
(4,'黄熙萌',9456,NULL,'1986-09-07','女','13609876789','hxm@atguigu.com','白庙村东街','深圳,上海,武汉'),
(5,'陈浩',8567,NULL,'1978-08-02','男','13409876545','ch888@atguigu.com','回龙观','北京,深圳,上海'),
(6,'韩庚年',12000,NULL,'1985-04-03','男','18945678986','hgn@atguigu.com','龙泽','深圳,上海'),
(7,'贾宝玉',15700,'0.24','1982-08-02','男','15490876789','jby@atguigu.com','霍营','北京,武汉'),
(8,'李晨熙',9000,'0.40','1983-03-02','女','13587689098','lc@atguigu.com','东三旗','深圳,上海,武汉'),
(9,'李易峰',7897,NULL,'1984-09-01','男','13467676789','lyf@atguigu.com','西山旗','武汉'),
(10,'陆风',8789,NULL,'1989-04-02','男','13689876789','lf@atguigu.com','天通苑一区','北京'),
(11,'黄冰茹',15678,NULL,'1983-05-07','女','13787876565','hbr@atguigu.com','立水桥','深圳'),
(12,'孙红梅',9000,NULL,'1986-04-02','女','13576234554','shm@atguigu.com','立城苑','上海'),
(13,'李冰冰',18760,NULL,'1987-04-09','女','13790909887','lbb@atguigu.com','王府温馨公寓','北京'),
(14,'谢吉娜',18978,'0.25','1990-01-01','女','13234543245','xjn@atguigu.com','园中园','上海,武汉'),
(15,'董吉祥',8978,NULL,'1987-05-05','男','13876544333','djx@atguigu.com','小辛庄','北京,上海'),
(16,'彭超越',9878,NULL,'1988-03-06','男','18264578930','pcy@atguigu.com','西二旗','深圳,武汉'),
(17,'李诗雨',9000,NULL,'1990-08-09','女','18567899098','lsy@atguigu.com','清河','北京,深圳,武汉'),
(18,'舒淇格',16788,'0.10','1978-09-04','女','18654565634','sqg@atguigu.com','名流花园','北京,深圳,武汉'),
(19,'周旭飞',7876,NULL,'1988-06-13','女','13589893434','sxf@atguigu.com','小汤山','北京,深圳'),
(20,'章嘉怡',15099,'0.10','1989-12-11','女','15634238979','zjy@atguigu.com','望都家园','北京'),
(21,'白露',9787,NULL,'1989-09-04','女','18909876789','bl@atguigu.com','西湖新村','上海'),
(22,'刘烨',13099,'0.32','1990-11-09','男','18890980989','ly@atguigu.com','多彩公寓','北京,上海'),
(23,'陈纲',13090,NULL,'1990-02-04','男','18712345632','cg@atguigu.com','天通苑二区','深圳'),
(24,'吉日格勒',10289,NULL,'1990-04-01','男','17290876543','jrgl@163.com','北苑','北京'),
(25,'额日古那',9087,NULL,'1989-08-01','女','18709675645','ergn@atguigu.com','望京','北京,上海'),
(26,'李红',5000,NULL,'1995-02-15','女','15985759663','lihong@atguigu.com','冠雅苑','北京'),
(27,'周洲',8000,NULL,'1990-01-01','男','13574528569','zhouzhou@atguigu.com','冠华苑','北京,深圳');

开始操作数据:

# 查询表的全部信息
SELECT * FROM t_employee;# 按 eid 升序排序
SELECT * FROM t_employee ORDER BY eid ASC;# 查询员工的姓名与工资
SELECT ename, salary FROM t_employee;# 查询时给列起别名
SELECT ename AS NAME,salary FROM t_employee;
SELECT ename NAME,salary FROM t_employee;
SELECT ename `name`,salary FROM t_employee;# 查询员工的性别(去重查找)
SELECT DISTINCT gender FROM t_employee;# 查询常数列(人为的创建列常数列)
SELECT ename NAME,salary, '尚硅谷' company FROM t_employee;# 查询所有员工姓名,月薪和年薪(年薪等于月薪*12,结果列字段为 姓名 , 月薪 , 年薪 )
SELECT ename 姓名,salary 月薪 , salary * 12 AS 年薪 FROM t_employee;# 查询所有员工姓名,月薪,每月奖金,每月总收入(结果列字段为 姓名 , 月薪 , 奖金,月总 )
SELECT ename  姓名 , salary  月薪 , salary * commission_pct 奖金 , salary +  salary * commission_pct 月总收入 FROM t_employee;
SELECT ename  姓名 , salary  月薪 , salary * IFNULL(commission_pct,0) 奖金 , salary +  salary * IFNULL(commission_pct,0) 月总收入 FROM t_employee;
# 因为,有些员工没有奖金, 奖金占比就是null, null 运算 任何值 = null
# ifnull(列,为null你给与的默认值) 0

相关文章:

数据库操控指南:玩转数据

对于表中数据的基本操作 数据的操作——DML语句&#xff08;增删改&#xff09;1.插入数据2.修改数据3.数据删除 数据的查询——DQL语句1.原理&#xff1a;2.查看表结构3.条件查询4.基础的SELECT语法 阅读指南&#xff1a; 本文章讲述了对于数据库中的数据的基本操作&#xff0…...

前端 CSS 经典:图层放大的 hover 效果

效果 思路 设置 3 层元素&#xff0c;最上层元素使用 clip-path 裁剪成圆&#xff0c;hover 改变圆大小&#xff0c;添加过渡效果。 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /><meta http-eq…...

Flutter实现页面间传参

带参跳转 步骤 在router中配置这个路由需要携带的参数,这里的参数是 arguments,注意要用花括号包裹参数名称 在相应组件中实现带参构造函数 在state类中可以直接使用${widget.arguments}来访问到传递的参数 在其他页面中使用Navigator.pushNamed()带参跳转...

如何在Java中实现安全编码

如何在Java中实现安全编码 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在当今数字化和网络化的时代&#xff0c;安全编码成为软件开发中至关重要的一环。特…...

C#开发-集合使用和技巧(八)集合中的排序Sort、OrderBy、OrderByDescending

C#开发-集合使用和技巧&#xff08;八&#xff09;集合中的排序Sort、OrderBy、OrderByDescending List<T>.Sort()方法签名使用场景示例升序实现效果 降序实现效果 IEnumerable<T>.OrderBy()方法签名使用场景示例实现效果 Enumerable<T>.OrderByDescending()…...

仓库管理系统

摘 要 随着电子商务的快速发展和物流行业的蓬勃发展&#xff0c;仓库管理成为了企业重要的一环。仓库管理涉及到商品的入库、出库、库存管理等一系列操作&#xff0c;对于企业的运营效率和成本控制具有重要影响。传统的仓库管理方式往往依赖于人工操作和纸质记录&#xff0c;存…...

AI绘画Stable Diffusion:超级质感真人大模型,逼真青纯!

大家好&#xff0c;我是设计师阿威 今天和大家分享一个具有超级质感的基于SD1.5的真人大模型&#xff1a;极致质感-DgirlV5&#xff0c;该模型追求质感的不断优化&#xff0c;细到发丝&#xff0c;当前最新版本是V5.1&#xff0c;修正了V5版本整体色彩发红的问题。 作者对该模…...

CMake笔记之CMAKE_INSTALL_PREFIX详解以及ROS中可执行文件为什么会在devel_lib中

CMake笔记之CMAKE_INSTALL_PREFIX详解以及ROS中可执行文件为什么会在devel_lib中 code review! 文章目录 CMake笔记之CMAKE_INSTALL_PREFIX详解以及ROS中可执行文件为什么会在devel_lib中1.CMAKE_INSTALL_PREFIX详解变量作用设置 CMAKE_INSTALL_PREFIX示例影响范围常见用法特别…...

数据结构之二叉树的超详细讲解(3)--(二叉树的遍历和操作)

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 数据结构之二叉树的超详细讲解(3)--(二叉树的遍历和操作) 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记&#xff0c;欢迎大家在评…...

Arduino - 旋转编码器 - 伺服电机

Arduino - 旋转编码器 - 伺服电机 Arduino - Rotary Encoder In this tutorial, We are going to learn how to program Arduino to rotate a servo motor according to the rotary encoder’s output value. 在本教程中&#xff0c;我们将学习如何对Arduino进行编程&#xff…...

儿童电动音乐牙刷OTP芯片方案:NV040C,耐温耐压,抗干扰能力强

一&#xff1a;方案背景概述 随着科技的飞速发展&#xff0c;源于对儿童口腔健康深入细致的关怀&#xff0c;以及对现代科技在日常生活用品中应用的不断追求&#xff0c;儿童电动音乐牙刷OTP芯片方案的诞生。 二&#xff1a;芯片简介 NV040C语音芯片是一款性能稳定、适合工厂量…...

Sentinel链路流控模式失效的解决方法

解决方法 1、在pom.xml中增加sentinel-web-servlet的依赖&#xff0c;我使用的版本是1.7.1 <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-web-servlet</artifactId> </dependency>2、在项目中添加一个FilterCon…...

Web应用安全测试-专项漏洞(一)

Web应用安全测试-专项漏洞&#xff08;一&#xff09; 专项漏洞部分注重测试方法论&#xff0c;每个专项仅列举一个例子。实际测试过程中&#xff0c;需视情况而定。 文章目录 Web应用安全测试-专项漏洞&#xff08;一&#xff09;Web组件&#xff08;SSL/WebDAV&#xff09;漏…...

VMware ESXi 8.0U2c macOS Unlocker OEM BIOS Huawei (华为) FusionServer 定制版

VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS Huawei (华为) FusionServer 定制版 ESXi 8.0U2 标准版&#xff0c;Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Hitachi (日立)、Fujitsu (富士通)、NEC (日电)、Huawei (华为)、xFusion (超聚…...

python中的高阶函数介绍

在Python中&#xff0c;高阶函数是指那些可以接受函数作为参数或者返回函数作为结果的函数。这种特性使得函数式编程成为可能&#xff0c;并且可以编写出更加简洁和灵活的代码。以下是Python中一些常用的高阶函数&#xff1a; map() map() 函数接受一个函数和一个可迭代对象作为…...

华为OD机试 - 石头剪刀布游戏(Java 2024 D卷 200分)

华为OD机试 2024D卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;D卷C卷A卷B卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测…...

[开发|java] LocalDate转化为LocalDateTime

要将 java.time.LocalDate 转换为 java.time.LocalDateTime&#xff0c;你需要指定一天中的时间。因为 LocalDate 只包含日期部分&#xff08;年、月、日&#xff09;&#xff0c;而 LocalDateTime 包含日期和时间&#xff08;时、分、秒、纳秒&#xff09;&#xff0c;所以在转…...

介绍几种 MySQL 官方高可用方案

前言&#xff1a; MySQL 官方提供了多种高可用部署方案&#xff0c;从最基础的主从复制到组复制再到 InnoDB Cluster 等等。本篇文章以 MySQL 8.0 版本为准&#xff0c;介绍下不同高可用方案架构原理及使用场景。 1.MySQL Replication MySQL Replication 是官方提供的主从同…...

IMU坐标系与自定义坐标系转化

1.首先示例图为例&#xff1a; 虚线黑色角度为IMU的坐标系&#xff1b;实线为自定义坐标系&#xff1b; 矫正&#xff1a;&#xff08;默认angleyaw为IMU采的数据角度&#xff09; angleyaw_pt angleyaw-25;if(-180<angleyaw&&angleyaw<-155) // 角度跳变问…...

《STM32 HAL库》RCC 相关系列函数详尽解析—— HAL_RCC_OscConfig()

观前提示&#xff1a;函数完整代码在文末&#xff0c;本文梳理了函数HAL_RCC_OscConfig()的主要逻辑和实现方法f105时钟树详解图 HAL_RCC_OscConfig() 函数介绍&#xff1a; 此函数是一个用于初始化RCC&#xff08;Reset and Clock Control&#xff09;振荡器&#xff08;Osc…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...