MySQL(二)——CRUD
文章目录
- CRUD
- 新增
- 全列插入
- 指定列插入
- 插入查询结果
- 查询
- 全列查询
- 指定列查询
- 查询字段为表达式
- 表达式不包含字段
- 表达式包含一个字段
- 表达式包含多个字段
- 补充:别名
- 去重查询
- 排序
- 条件查询
- 补充:运算符
- 区间查询
- 模糊查询
- NULL的查询
- 分页查询
- 聚合查询
- 聚合函数
- 分组查询
- 修改
- 删除
CRUD
CRUD是指创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)四个操作的首字母缩写(即增删查改),它是数据库或持久层在软件系统中执行的基本功能。这四个操作构成了大多数应用程序和服务中数据管理的基础。
接下来我们就介绍一数据库基本的增删改查。
新增
语法:
INSERT [INTO] tbl_name[(column [, column] ...)] VALUES (value_list) [, (value_list)] ...;value_list: value, [, value] ...
INSERT
、VALUES
以及(value_list)
是必须的,其余都被[]
括起来,属于可选项- 选择不同的可选项,可以达到全列插入与指定列插入、单行数据插入与多行数据插入以及这两组的组合。
我们先新建一个二维表,方便观察现象:
CREATE TABLE IF NOT EXISTS demo1 (id BIGINT,name VARCHAR(20),gender TINYINT
);
全列插入
语法:
INSERT [INTO] tbl_name VALUES (value_list) [, (value_list)] ...;
-
VALUES
后可以跟多个小括号,每个小括号就是一行数据,多行数据的小括号之间用,(逗号)
连接;只有一个小括号就是单行数据插入;多个小括号就是多行数据插入
-
全列插入的
VALUES
后的每个小括号中的值要与列一一对应(数量、数据类型),否则会报错!
例如:
SELECT * FROM demo1;
是全列查询语句。
指定列插入
语法:
INSERT [INTO] tbl_name[(column [, column] ...)] VALUES (value_list) [, (value_list)] ...;
- 在表名后、
()
里使用属性(字段)名指定列,如果要指定多个列,用,(逗号)
分隔。注意:即使只插入一列,()
也不能省略! - 一行中没有被指定插入的列,会用默认值填充,即
NULL
,表示缺失值 - 显式地指定所有属性名,就是全列插入
- 同样也可以多行数据插入
例如:
插入查询结果
建议先学习查询后再来。
语法:
INSERT INTO tbl_name [(column1)[,column2...]] SELECT ...
- 查询出的列与要插入的列的数量和类型要一致,一一对应
例如,将旧表中的数据导入新表:
查询
为了方便举例,我们后续可能会用到下表:
语法:
SELECT[DISTINCT] {* | {column1 [, column2] ...} [FROM tbl_name][WHERE ...][ORDER BY column [ASC | DESC], ...]LIMIT ...;
查询涉及到的关键字很多,分别有着不同的功能,但各个部分不是独立的。下面介绍时只是按照功能进行的分类,实际查询时一般不会只用到某个分类,比如,同时要求去重、条件查询、排序,这要求我们要依据需求编写合理的SQL查询语句
查询是不影响原表(永久表)的,每次返回的是一个临时表
全列查询
语法:
SELECT * FROM tbl_name;
*
:通配符,代表我要查询的结果中包含所有的字段(列)。- 当一张表中数据量很大时,建议不要使用全列查询,会有很大的磁盘开销和网络开销
例如:
指定列查询
语法:
SELECT column1 [, column2]... FROM tbl_name;
SELECT
后面紧跟要查询的列,之间用,(逗号)
分隔
例如:
查询字段为表达式
表达式不包含字段
语法:
SELECT column1, 常量 ... FROM tbl_name;
例如:
- 查询结果中返回的临时表,会在指定位置生成一列,如上图
表达式包含一个字段
例如,将表中的某列的值全部加10
SELECT column1 + 10, column2... FROM tbl_name;
表达式包含多个字段
例如,使用考试表,查询总分:
补充:别名
在MySQL中,别名的使用包括列别名和表别名两种类型。
使用别名可以带来多个重要的好处,主要包括提高查询的可读性、简化复杂查询、解决字段名冲突和提升性能等方面。
列别名的引入旨在提高查询结果的可读性,并允许在查询中使用更符合情境的标签来代表列。(也可以给表达式起别名)
表别名则主要用于简化查询中的表引用,特别是在多表查询的情况下。通过为每个表定义一个简短的别名,可以大大增强SQL语句的可读性和编写效率。
语法:
...列名 [AS] 别名...
...表名 [AS] 别名...
# 别名大多数情况下都是字符串,可以选择使用''引起来;不过,当别名中包含空格,必须使用''引起来
例如,优化查询考试总分:
去重查询
语法:
SELECT DISTINCT {* | {column1 [, column2] ...} FROM tbl_name;
- 判断为重复的条件:所有查询列的数值相等,例如全列去重查询,当两行数据的所有列的值相等,才判断为重复并去重
排序
语法:
SELECT[DISTINCT] {* | {column1 [, column2] ...} FROM tbl_name[ORDER BY column1 [ASC | DESC], ...];
-
ASC
为升序,DESC
为降序,用于指定排序方式。可以不指定,此时按照MySQL默认的升序排序 -
使用到
ORDER BY
,后面跟字段名(或查询列表的表达式)和排序方式,表示按照该字段的值进行升序/降序排序;ORDER BY
后面可以跟多个字段。在SQL中,可以使用逗号分隔多个字段来指定排序顺序。当使用多个字段进行排序时,首先按照第一个字段进行排序,如果第一个字段的值相同,则按照第二个字段进行排序,以此类推。每个字段都可以指定升序(
ASC
)或降序(DESC
)排序。(排序优先级取决于书写顺序) -
与查看表结构的关键字重名,但查看表结构的
DESC
是describe的缩写,排序的DESC
是descend的缩写,这是SQL设计时的反例。
例如,根据总分对exam表排名:
- 不能将
ORDER BY
后的别名用单引号引起来,否则排序就会失效
【注意】
NULL
数据排序,视为比任何值都小,升序排在最上面,降序排在最下面- 没有
ORDER BY
子句的查询,返回的顺序是未定义的
条件查询
条件查询基于比较运算符和逻辑运算符,可以构成较为复杂的条件对数据进行过滤,从而达到需求。下面给出的区间查询、模糊查询和NULL的查询都是条件查询,只是将这些场景单独拿出来,具体的场景要具体分析采用什么条件进行过滤
语法:
SELECT{* | {column1 [, column2] ...} FROM tbl_name[WHERE ...];
补充:运算符
【比较运算符】
运算符 | 说明 |
---|---|
>,>=,<,<= | 大于,大于等于,小于,小于等于 |
= | 等于。NULL 不安全,NULL = NULL 的结果为 NULL |
<=> | 等于。NULL 安全, NULL <=> NULL 的结果是1(TRUE ) |
!=,<> | 不等于 |
BETWEEN a AND b | 范围匹配。[a, b],如果 a <= values <= b,返回1(TRUE ) |
IN(option, …) | 如果是option中的任意一个,返回1(TRUE ) |
IS NULL | 是 NULL 。是,返回1(TRUE ),不是,返回0(FALSE ) |
IS NOT NULL | 不是NULL 。是,返回0(FALSE ),不是,返回1(TRUE ) |
LIKE | 模糊匹配。% 表示任意多个(包括0个)任意字符;_ 表示任意一个字符 |
【逻辑运算符】
运算符 | 说明 |
---|---|
AND | AND连接的多个条件必须都为TRUE ,结果才是1(TRUE ) |
OR | OR连接的任意一个条件为TRUE ,结果为1(TRUE ) |
NOT | 条件为TRUE ,返回0(FALSE ) |
-
WHERE
条件可以使用表达式,但不能使用别名,这与SQL语句的执行顺序有关:- 先确定表,即执行
FROM
- 根据条件过滤出合适的数据行,即执行
WHERE
- 显示要查询的列,即执行
SELECT
我们的列别名一般会在
SELECT
声明,这使得执行WHERE
时识别不出别名 - 先确定表,即执行
-
运算符是有优先级的,比如逻辑运算符
NOT >AND > OR
,不过不建议死记,建议使用小括号()
来手动设置优先级,确保万无一失 -
MySQL不支持链式比较,如 a < column < b,必须改写为
column > a AND column < b
-
NULL值不参与除了判断
NULL
之外的任何条件查询,它会被过滤掉。比如,找语文成绩高于60分的成绩,其中一位同学语文成绩一列为NULL
,那么就会直接过滤掉,不参与。 -
如果想知道某个表达式的值,写法:
SELECT 表达式;
。例如,SELECT NULL <=> NULL;
,将返回1(TRUE
) -
标准的比较运算符(如=, <>, <, >)在用于
NULL
值时会返回NULL
,比如SELECT NULL > 10;
结果为NULL
;对NULL
使用算术运算符将返回NULL
。例如,任何数字与NULL
进行加法运算的结果都将是NULL
。
区间查询
语法:
SELECT{* | {column1 [, column2] ...} FROM tbl_nameWHERE {column1 BETWEEN a AND b | column1 >= a AND column1 <= b};
例如,查询总分在200~300的学生:
模糊查询
语法:
SELECT{* | {column1 [, column2] ...} FROM tbl_nameWHERE column1 LIKE '[%][_...]值[_...][%]';
举例说明,查询姓刘的同学的成绩:
刘%
就代表刘的后面包含若干个(包括0个)字符,满足该条件的都会被选中。
查询姓名只有两个字的同学的成绩:
- 上图两个
_
号连在了一起,表示两个字符,必须是两个字符的才会被选中。
比如,我要查询姓刘且名字只有两个字的同学,就得:LIKE '刘_'
;查询名字中包含玄的同学,就得:LIKE '%玄%'
。
NULL的查询
语法:
SELECT {* | {column1 [, column2] ...} FROM tbl_name WHERE {column1 IS NULL | column1 IS NOT NULL};
- 区分
NULL
值 与 字符串'NULL'
,采用LIKE 'NULL'
实际上查询的时字符串NULL
,而不是NULL
。
小结一下目前遇到的有关NULL
的知识点:
- NULL的基本概念
- 定义:
NULL
在MySQL中代表一个未知的值。它是一种“没有类型”的特殊值,用于表示无值、未知值、缺失值等情况。 - 默认值:在创建表结构时,如果某字段未指定默认值,则默认为
NULL
值。这意味着如果在插入数据时没有提供该字段的值,它将自动被设置为NULL
。
- 定义:
- NULL值的比较与操作
- 比较运算符:标准的比较运算符(如=, <>, <, >)在用于
NULL
值时会返回NULL
,这表明结果既不是TRUE
也不是FALSE
,而是不确定的。因此,要检查一个值是否为NULL
,应使用IS NULL
或IS NOT NULL
运算符。 - 算术运算符:对
NULL
使用算术运算符将返回NULL
。例如,任何数字与NULL
进行加法运算的结果都将是NULL。 - 排序行为:在
ORDER BY
子句中,NULL
值在升序排序时默认位于最后,但在降序排序时则位于首位。
- 比较运算符:标准的比较运算符(如=, <>, <, >)在用于
分页查询
语法:
-- 从 0 开始,筛选 n 条结果
SELECT ... FROM tbl_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM tbl_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM tbl_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
- 分页查询可以有效控制每次查询的的记录条数,可以减小数据库服务器的压力,可以有效提升数据处理的效率和用户体验。
- 记录的序号从 0 开始,第一条记录是0,以此类推
- 如果起始位置已经超出了整个结果集的范围,可以执行,但返回的是空结果集
例如,查询id编号前5的同学的成绩:
例如,查询总分排名前3的同学的成绩:
聚合查询
聚合函数
聚合函数(Aggregate Functions)在SQL中用于对一组值执行计算并返回单个值。
常见聚合函数如下:
函数 | 说明 |
---|---|
COUNT() | 返回查询到的数据数量 |
SUM() | 返回查询到的数据的总和,非数值没有意义 |
AVG() | 返回查询到的数据的平均值,非数值没有意义 |
MAX() | 返回查询到的数据的最大值 |
MIN() | 返回查询到的数据的最小值 |
语法:
SELECT 聚合函数([DISTINCT expr]) [,聚合函数(DISTINCT expr)]... FROM tbl_name [WHERE...];
-
聚合函数主要接受列名、列上的表达式以及(通过
CASE
语句)条件表达式作为参数。其他类型的参数(如直接的常量或复杂的子查询)要么在技术上可行但通常不推荐,要么需要特别考虑查询的上下文和目的。 -
聚合函数会忽略
NULL
(除了COUNT(*)
),例如SUM()
计算某列总和时,会忽略NULL
值,不会出现多个数值相加,其中包含NULL
值导致结果为NULL
的情况。所以,如果某列的值全为NULL
值,最终返回0 -
聚合函数的高级用法:
-
嵌套聚合函数:SQL允许在聚合函数内部使用其他聚合函数,进行更复杂的计算,例如计算每个部门的最高工资与最低工资之差。
-
使用DISTINCT关键字:有时需要对唯一值进行聚合计算,而不是考虑所有行。这时可以使用DISTINCT关键字来确保只考虑唯一的值。
-
计算百分比:聚合函数还可用于计算百分比或比例,例如计算每个部门的工资在总工资中的占比。
-
例如,查询班级人数(记录条数):
例如,查询全班人总分的平均数(有缺考科目的不计):
可以使用ROUND()
函数来处理结果:
ROUND()
函数用于对数值进行四舍五入到指定的小数位数。 它接受一到两个参数:
- 第一个参数:要四舍五入的数值。这可以是一个列名、一个表达式的结果,或者是一个直接的数值。
- 第二个参数(可选):指定要四舍五入到的小数位数。如果省略此参数,则默认四舍五入到最接近的整数。如果第二个参数是负数,则表示在小数点左侧进行四舍五入,即四舍五入到十位、百位等。
例如,查询全班数学成绩的最大值和最小值:
分组查询
语法:
SELECT 查询目标 FROM tbl_name [WHERE...] GROUP BY 分组字段名 [HAVING...];
WHERE
和HAVING
的区别:- 执行时机不同:
WHERE
是分组之前的过滤,不满足WHERE
条件,不参与分组;HAVING
是分组之后对结果进行过滤 - 判断条件不同:
WHERE
不能对聚合函数进行判断过滤,而HAVING
可以
- 执行时机不同:
- 分组查询常和聚合查询一起使用,使用聚合函数,对分组后各组数据进行指定求值
- 分组查询的查询目标一般为聚合函数和分组字段,查询其他字段无任何意义
- 执行顺序:
WHERE
> 聚合函数 >HAVING
例如,有这样一张表:
查询各个职务的平均薪资:
查询平均工资低于10000的职务(除游戏角色外)的平均工资和最高工资:
修改
语法:
UPDATE tbl_name SET column1 = expr [, column2 = expr ...][WHERE ...] [ORDER BY ...] [LIMIT ...];
SET
后指定列并修改值,WHERE
条件用于过滤筛选出要修改指定列的数据行,ORDER BY
用于排序,LIMIT
用于控制修改的数据行数- 在标准的 SQL 中,
UPDATE
语句本身并不直接支持ORDER BY
子句(可以使用,不报错)。ORDER BY
通常用于SELECT
语句中,以指定结果集的排序方式。并且,在UPDATE
语句中,排序通常不是必要的。对于需要排序的场景,需要结合使用子查询或临时表,并在子查询中指定排序。 - 在
SELECT
语句中,LIMIT
可以接受两个参数,第一个参数是偏移量,第二个参数是要返回的记录数。但在UPDATE
语句中,这种用法是不被支持的,仅支持一个参数的LIMIT
子句。 UPDATE
操作如果不加WHERE
子句,将会修改表中的所有记录,十分危险!
例如,将孙悟空同学的英语成绩和语文成绩分别改为95,90分:
例如,将总分小于200分的同学的英语成绩减去5分:
删除
语法:
DELETE FROM tbl_name [WHERE ...] [ORDER BY ...] [LIMIT ...];
-
在标准的 SQL 中,
DELETE
语句本身并不直接支持ORDER BY
子句(可以使用,不报错)。ORDER BY
通常用于SELECT
语句中,以指定结果集的排序方式。并且,在DELETE
语句中,排序通常不是必要的。对于需要排序的场景,需要结合使用子查询或临时表,并在子查询中指定排序。 -
在
SELECT
语句中,LIMIT
可以接受两个参数,第一个参数是偏移量,第二个参数是要返回的记录数。但在DELETE
语句中,这种用法是不被支持的,仅支持一个参数的LIMIT
子句,与UPDATE
语句一样。 -
DELETE
操作如果不加WHERE
子句,将会删除表中的所有记录,十分危险!
例如,删除孙悟空同学的成绩:
完
相关文章:

MySQL(二)——CRUD
文章目录 CRUD新增全列插入指定列插入插入查询结果 查询全列查询指定列查询查询字段为表达式表达式不包含字段表达式包含一个字段表达式包含多个字段 补充:别名去重查询排序条件查询 补充:运算符区间查询模糊查询NULL的查询 分页查询聚合查询聚合函数 分…...

presto高级用法(grouping、grouping sets)
目录 准备工作: 在hive中建表 在presto中计算 分解式 按照城市分组 统计人数 按照性别分组 统计人数 编辑 按照爱好分组 统计人数 编辑 按照城市和性别分组 统计人数 按照城市和爱好分组 统计人数 按照性别和爱好分组 统计人数 按照城市和性别还有…...

二十五年后,Microsoft终于移除了FAT32的32GB分区限制——一个从草稿到现实的故事
二十五年后,Microsoft终于移除了FAT32的32GB分区限制——一个从草稿到现实的故事 你可能不知道,FAT32文件系统的32GB分区限制是怎么来的。这个限制其实是1994年Windows前开发者Dave Plummer无心插柳的结果,也是"草台班子"式开发的…...

Java二十三种设计模式-命令模式(18/23)
命令模式:将请求封装为对象的策略 概要 本文全面探讨了命令模式,从基础概念到实现细节,再到使用场景、优缺点分析,以及与其他设计模式的比较,并提供了最佳实践和替代方案,旨在帮助读者深入理解命令模式并…...

Kafka系列之:Dead Letter Queue死信队列DLQ
Kafka系列之:Dead Letter Queue死信队列DLQ 一、死信队列二、参数errors.tolerance三、创建死信队列主题四、在启用安全性的情况下使用死信队列更多内容请阅读博主这篇博客: Kafka系列之:Kafka Connect深入探讨 - 错误处理和死信队列一、死信队列 死信队列(DLQ)仅适用于接…...

Fragment学习笔记
静态加载 <fragment android:name"com.example.serviceapplication.fragment.TestFragment"android:layout_width"match_parent"android:layout_height"wrap_content"app:layout_constraintStart_toStartOf"parent"app:layout_cons…...

NGINX 基础参数与功能
章节 1 NGINX 的源码安装 2 NGINX 核心配置详解 3 NGINX 之 location 匹配优先级 4 NGINX 基础参数与功能 目录 1 实现 Nginx 账户认证功能 1.1 创建htpasswd 认证文件 1.2 创建数据目录 1.3 指定认证文件路径 1.4 测试效果 2 定义重定向错误日志 2.1 指定错误日志访问路…...

css设置元素居中显示
CSS中实现居中显示可以通过不同的属性来实现,取决于你是要水平居中还是垂直居中,或者两者都要。以下是一些常用的居中方法: 1.水平居中 - 行内元素或文本 .center-text {text-align: center; } 2.水平居中 - 块级元素 .center-block {mar…...

js判断一个任意值为空包括数组和对象
在JavaScript中,判断一个变量是否为空可以考虑以下几种情况: 如果变量可能是null或undefined,可以直接判断。 对于数组,如果想要判断数组为空(长度为0),可以检查其length属性。 对于对象&…...

EmguCV学习笔记 VB.Net和C# 下的OpenCv开发
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 笔者的博客网址:https://blog.csdn.net/uruseibest 本教程将分为VB.Net和C#两个版本分别进行发布。 教程VB.net版本请…...

“TCP粘包”不是TCP的问题!
前言 写RPC用了Netty。涉及到粘包拆包问题。想复习一下。发现网上博客多是概念模糊不清。没有触及本质或者没有讲清楚。 遂决定自己写一篇 “TCP粘包”是谁的问题? 首先我们要明确TCP是面向字节流的协议。也就是说我们在应用层想使用TCP来传输数据时,…...

Electron项目依赖管理:最佳实践与常见错误
问题一 问题描述: 输入命令 pnpm add electron 后, electron 包在执行 postinstall 脚本时,尝试从网络上下载 Electron 二进制文件,但由于网络问题(如连接超时或代理设置问题),导致下载失败。 λ pnpm a…...

华为数通路由交换HCIP/HCNP
2017-2022年软考高级网络规划设计师真题解析视频!软考复习一定要多做历年真题! 2022年软考网络规划设计师真题解析_哔哩哔哩_bilibili 2024年5月软考网络工程师真题解析合集,考后估分版【综合知识案例分析】 2024年5月软考网络工程师真题解…...

搜索面试题
1、目前怎么构建样本的?如果排序中第5个被点了,前面的作为负样本,后面的不要怎么样;为什么不好,为什么好。 点击作为负样本,曝光未点击作为负样本; 可以这样理解。您提到的排序中第5个被点的对…...

WPF学习(8) --Windows API函数的使用
一、API函数的介绍 1.FindWindow函数 [DllImport("user32.dll", CharSet CharSet.Auto)]public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 功能: FindWindow函数用于根据窗口的类名和窗口名称查找窗口的句柄(IntPtr…...

Linux系统-用户账号文件
文章目录 文件一(passwd) 文件二(shadow) 加密密码部分 举例理解 文件三(gshadow) 文件四(group) 文件五(skel) 文件六(login.defs&#…...

docker配置国内镜像加速
docker配置国内镜像加速 由于国内使用docker拉取镜像时,会经常出现连接超时的网络问题,所以配置Docker 加速来使用国内 的镜像加速服务,以提高拉取 Docker 镜像的速度。 1、备份docker配置文件 cp /etc/docker/daemon.json /etc/docker/da…...

C语言实现排序之堆排序算法
一、堆排序算法 基本思想 堆排序是一种比较有效的排序方法,其基本思想是: 构建最大堆:首先将待排序的数组构建成一个最大堆,即对于每个非叶子节点,它的值都大于或等于其子节点的值。排序:然后将堆顶元素…...

【STM32 Blue Pill编程】-外部中断配置及使用
外部中断配置及使用 文章目录 外部中断配置及使用1、中断介绍2、STM32中的中断3、硬件准备及接线4、GPIO配置5、代码实现在本文中,我们将介绍如何使用 STM32Cube IDE 中的 HAL 库配置和处理外部中断。 我们将通过一个带有按钮和 LED 的示例来演示这一点。 读完本文后,您将能够…...

MySQL 安装与配置教程:单机、主从复制与集群模式
目录 MySQL 简介MySQL 安装MySQL 基础配置MySQL 主从复制配置MySQL 集群配置总结 1. MySQL 简介 MySQL 是一个广泛使用的关系型数据库管理系统,具有高性能、高可靠性和易用性等特点。它支持多种部署模式,包括单机模式、主从复制模式(用于高…...

JavaEE 的相关知识点(一)
一、过滤器 过滤器(Filter)是一个用于对请求和响应进行预处理的组件。过滤器可以在 Java Servlet 规范中使用,通常用于执行一些通用的任务 1、过滤器的作用 过滤器是一种javaEE规范中定义的一种技术,可以让请求达到目标servlet之…...

使用Python实现深度学习模型:智能医疗影像识别与诊断
介绍 智能医疗影像识别与诊断是现代医疗技术的重要应用,通过深度学习模型,可以自动分析和识别医疗影像,提高诊断的准确性和效率。本文将介绍如何使用Python和深度学习技术来实现智能医疗影像识别与诊断。 环境准备 首先,我们需要安装一些必要的Python库: pip install …...

24.给定一个链表,实现一个算法交换每两个相邻节点并返回其头部。要求不能修改列表节点中的值,只能更改节点本身。
24. Swap Nodes in Pairs 题目 给定一个链表,交换每两个相邻节点并返回其头部。要求不能修改列表节点中的值,只能更改节点本身。 Example: Given 1->2->3->4, you should return the list as 2->1->4->3....

Python 通过UDP传输超过64k的信息
Python 通过UDP传输超过64k的信息 在网络编程中,UDP(用户数据报协议)是一种常用的传输协议。与TCP不同,UDP是无连接的,并且不保证数据包的顺序、完整性及交付。尽管如此,UDP因其较低的延迟和开销而被广泛应…...

微服务设计原则——高性能:批量
能批量就不要并发。 如果调用方需要调用我们接口多次才能进行一个完整的操作,那么这个接口设计就可能有问题。 比如获取数据的接口,如果仅仅提供getData(int id)接口,那么使用方如果要一次性获取 20 个数据,它就需要循环遍历调用…...

C:指针学习-指针变量—学习笔记
今日伊雷娜: 目录 前言: 1、字符指针变量 1.1 使用字符指针存放字符 1.2 使用字符指针变量存放字符串 2、数组指针变量 2.1 什么是数组指针变量? 2.2 数组指针变量初始化 2.3 关于数组指针类型的解析 3、函数指针变量 3.1 函数地址 …...

【MySQL 07】表的增删查改 (带思维导图)
文章目录 🌈 一、insert 添加数据⭐ 1. 单行数据 全列插入⭐ 2. 多行数据 指定列插入⭐ 3. 插入否则更新⭐4. 插入否则替换 🌈 二、select 查询数据⭐ 1. select 列🌙 1.1 全列查询🌙 1.2 指定列查询🌙 1.3 查询字段…...

快速上手Git
Git相关概念 Git是一个开源的分布式版本控制系统,由Linus Torvalds在2005年创建,用于有效、高速地处理从小到大的项目版本管理。它是由 Linux 之父 Linus Torvalds 开发的,并已经成为了现代软件开发领域中最流行的版本控制系统之一。 git的工…...

RTC时钟测试
1. 基础知识 Linux 的系统时间有时跟硬件时间是不同步的。 Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟。系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIO…...

大数据技术——实战项目:广告数仓(第六部分)报表数据导出至clickhouse
目录 第11章 报表数据导出 11.1 Clickhouse安装 11.2 Clickhouse建表 11.2.1 创建database 11.2.2 创建table 11.3 Hive数据导出至Clickhouse 第11章 报表数据导出 由于本项目最终要出的报表,要求具备交互功能,以及进行自助分析的能力,…...