MySQL | CRUD
目录
1. Create
2. Retrieve
2.1. SELECT列
2.1.1. 全列查询
2.1.2. 指定列查询
2.1.3. 查询字段为表达式
2.1.4. 为查询结果指定别名
2.1.5. 结果去重
2.2. WHERE条件
2.2.1. 年龄小于19的同学
2.2.2. id在2~3的同学
2.2.3. id为1和4的同学
2.2.4. 姓张的同学及张某的同学
2.3. 结果排序
2.3.1. 年龄按照升序
2.3.2. 年龄按照降序
2.3.3. 查询同学信息,依次按照年龄降序,id升序的方式显示
2.4. 筛选分页结果
2.4.1. 按 id 进行分页
3. Update
3.1. 将id为1的同学name改为麻子
3.2. 将所有同学的年龄+2
4. Delete
4.1. 删除麻子同学的信息
4.2. 删除整张表
4.3. 截断表
4.4. 插入查询结果
5. 聚合函数
5.1. 统计班级共有多少同学
5.2. 统计年龄的总和
5.3. 统计平均年龄
5.4. 返回年龄最大值和最小值
6. GROUP BY子句的使用
6.1. 显示每个订单编号中的最高销售数量
6.2. 显示销售数量低于5的订单信息
表的增删查改也叫做CRUD:CREATE 创建,RETRIEVE读取,UPDATE更新,DELETE函数。
1. Create
创建一张学生表:
CREATE TABLE students (id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,sn INT NOT NULL UNIQUE,name VARCHAR(20) NOT NULL,qq VARCHAR(20)
);
单行数据 + 全列插入。
全列插入的时候,必须按照创建表的顺序来插入数据.
INSERT INTO students VALUES(1,101,'a',NULL);
多行数据 + 指定列插入
指定列插入可以在表明后面跟上要插入的列.
INSERT INTO students(id, sn, name) VALUES(2,102, 'b'),(3, 103,'c');
插入否则更新
由于主键或者唯一键对应的值已经存在而导致插入失败
INSERT INTO students VALUES(1,104,'d',NULL);
INSERT INTO students VALUES(4,101,'d',NULL);
对于这种情况,可以选择性的进行同步更新操作语法:
INSERT ... ON DUPLICATE KEY UPDATE
column = value [, column = value] ...
INSERT INTO students VALUES (3,103,'d','123456') ON DUPLICATE
KEY UPDATE sn = 103, name = 'd';
这条数据已经存在过了,会产生冲突,在添加了同步更新之后,新数据会把旧数据给覆盖。
-- 0 row affected: | 表中有冲突数据,但冲突数据的值和 update 的值相等 |
替换
-- 主键 或者 唯一键 没有冲突,则直接插入;
-- 主键 或者 唯一键 如果冲突,则删除后再插入;
REPLACE INTO students (sn, name) VALUES(102, '13462');
-- 1 row affected: | 表中没有冲突数据,数据被插入 |
2. Retrieve
语法:
SELECT[DISTINCT] {* | {column [, column] ...}[FROM table_name][WHERE ...][ORDER BY column [ASC | DESC], ...]LIMIT ...
在进行查询的时候,是不建议使用*号来进行全查询的。
案例:
创建表结构
CREATE TABLE students (id INT NOT NULL AUTO_INCREMENT,name VARCHAR(100) NOT NULL,age INT NOT NULL,class VARCHAR(100) NOT NULL,PRIMARY KEY (id)
);
插入测试数据
INSERT INTO students (name, age, class) VALUES ('张三', 18, '一年级');
INSERT INTO students (name, age, class) VALUES ('李四', 19, '二年级');
INSERT INTO students (name, age, class) VALUES ('王五', 20, '三年级');
2.1. SELECT列
2.1.1. 全列查询
通常情况下不建议使用*进行全列查询,查询的列越多,意味着需要传输的数据量越大,并且可能会影响到索引的使用。---- 不建议规不建议,在日常学习的时候还是可以用的。
SELECT * FROM students;
2.1.2. 指定列查询
指定列查询的顺序不需要按照创建表的时候设定字段的顺序查询。
SELECT name FROM students;
2.1.3. 查询字段为表达式
表达式不包含字段
SELECT id, name, 10 FROM students;
表达式包含字段
SELECT id, name, age + 10 FROM students;
表达式包含多个字段
SELECT id, name, age + 10 + class FROM students;
2.1.4. 为查询结果指定别名
语法:
SELECT column [AS] alias_name [...] FROM table_name;
SELECT id, name, age + 10 AS 年龄加10 FROM students;
2.1.5. 结果去重
SELECT age FROM students;
SELECT DISTINCT age FROM students;
2.2. WHERE条件
比较运算符:
运算符 | 说明 |
>, >=, <, <= | 大于,大于等于,小于,小于等于 |
= | 等于,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) |
2.2.1. 年龄小于19的同学
SELECT name ,age FROM students WHERE age <= 19;
2.2.2. id在2~3的同学
使用AND进行连接
SELECT id, name FROM students WHERE id >= 2 AND id <= 3;
'
使用BETWEEN……AND……条件
SELECT id, name FROM students WHERE id BETWEEN 2 AND 3;
2.2.3. id为1和4的同学
SELECT id, name FROM students WHERE id IN (1, 4);
SELECT id, name FROM students WHERE id = 1 OR id = 4;
2.2.4. 姓张的同学及张某的同学
INSERT INTO students (name, age, class) VALUES ('张三丰', 20, '三年级');
匹配任意多个(包括0个)任意字符
SELECT name FROM students WHERE name LIKE '张%';
严格匹配一个字符
SELECT name FROM students WHERE name LIKE '张_';
2.3. 结果排序
-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASCSELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];
注意:没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
2.3.1. 年龄按照升序
SELECT name, age FROM students ORDER BY age;
SELECT name, age FROM students ORDER BY age ASC;
2.3.2. 年龄按照降序
SELECT name, age FROM students ORDER BY age DESC;
2.3.3. 查询同学信息,依次按照年龄降序,id升序的方式显示
SELECT id, name, age FROM students ORDER BY age DESC , id ASC ;
2.4. 筛选分页结果
语法:
-- 起始下标为 0
-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
建议:对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死
2.4.1. 按 id 进行分页
SELECT id, name, age FROM students ORDER BY id LIMIT 3 OFFSET 0;
3. Update
语法:
UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]
对查询到的结果进行列值更新
3.1. 将id为1的同学name改为麻子
UPDATE students SET name = '麻子' WHERE id = 1;
3.2. 将所有同学的年龄+2
没有WHERE子句,则更新全表
UPDATE students SET age = age + 2;
4. Delete
语法:
DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
4.1. 删除麻子同学的信息
DELETE FROM students WHERE name = '麻子';
4.2. 删除整张表
DELETE FROM TABLE_NAME
使用这个命令可以把表中的所有内容都给删除。
再插入新的数据
INSERT INTO students (name, age, class) VALUES ('赵六', 21, '四年级');
INSERT INTO students (name, age, class) VALUES ('孙七', 22, '五年级');
INSERT INTO students (name, age, class) VALUES ('周八', 23, '六年级');
INSERT INTO students (name, age, class) VALUES ('吴九', 24, '七年级');
INSERT INTO students (name, age, class) VALUES ('郑十', 25, '八年级');
插入数据之后发现,自增id是在原值上增长的。
查看表结构,发现存在一个AUTO_INCREMENT = 11。
SHOW CREATE TABLE students;
4.3. 截断表
语法:
TRUNCATE [TABLE] table_name
注意:这个操作慎用
- 只能对整表操作,不能像 DELETE 一样针对部分数据操作;
- 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事物,所以无法回滚
- 会重置 AUTO_INCREMENT 项
TRUNCATE students;
阶段之后查询,发现是一张空表,在插入数据。
INSERT INTO students (name, age, class) VALUES ('赵六', 21, '四年级');
INSERT INTO students (name, age, class) VALUES ('孙七', 22, '五年级');
INSERT INTO students (name, age, class) VALUES ('周八', 23, '六年级');
INSERT INTO students (name, age, class) VALUES ('吴九', 24, '七年级');
INSERT INTO students (name, age, class) VALUES ('郑十', 25, '八年级');
查询数据后发现,id不在是在原值的基础上增长的。
4.4. 插入查询结果
语法:
INSERT INTO table_name [(column [, column ...])] SELECT ...
在创建一张空表,结构和students一样。
CREATE TABLE cp_students LIKE students;
将students的数据插入到cp_students表中。
INSERT INTO cp_students SELECT DISTINCT * FROM students;
通过重命名表,实现去重操作
RENAME TABLE cp_students TO students;
5. 聚合函数
函数 | 说明 |
COUNT([DISTINCT] expr) | 返回查询到的数据的 数量 |
SUM([DISTINCT] expr) | 返回查询到的数据的 总和,不是数字没有意义 |
AVG([DISTINCT] expr) | 返回查询到的数据的 平均值,不是数字没有意义 |
MAX([DISTINCT] expr) | 返回查询到的数据的 最大值,不是数字没有意义 |
MIN([DISTINCT] expr) | 返回查询到的数据的 最小值,不是数字没有意义 |
5.1. 统计班级共有多少同学
SELECT COUNT(*) FROM students;
5.2. 统计年龄的总和
SELECT SUM(age) FROM students;
5.3. 统计平均年龄
SELECT AVG(age) FROM students;
5.4. 返回年龄最大值和最小值
SELECT MAX(age) FROM students;
SELECT MIN(age) FROM students;
6. GROUP BY子句的使用
在SELECT中使用GROUP BY子句可以对指定列进行分组查询。
select column1, column2, .. from table group by column;
案例:
CREATE TABLE sales (order_id SERIAL PRIMARY KEY,customer_id INT,product_id INT,quantity INT,unit_price DECIMAL(10, 2),total_price DECIMAL(10, 2),order_date DATE
);
订单编号、客户编号、产品编号、销售数量、单价、总价和订单日期。
INSERT INTO sales (customer_id, product_id, quantity, unit_price, total_price, order_date)
VALUES(101, 201, 5, 10.00, 50.00, '2024-03-01'),(102, 202, 3, 15.00, 45.00, '2024-03-02'),(103, 203, 2, 20.00, 40.00, '2024-03-03'),(104, 201, 4, 10.00, 40.00, '2024-03-04'),(105, 204, 6, 8.00, 48.00, '2024-03-05'),(101, 202, 2, 15.00, 30.00, '2024-03-06'),(102, 203, 1, 20.00, 20.00, '2024-03-07'),(103, 201, 3, 10.00, 30.00, '2024-03-08'),(104, 204, 5, 8.00, 40.00, '2024-03-09'),(105, 202, 4, 15.00, 60.00, '2024-03-10');
6.1. 显示每个订单编号中的最高销售数量
SELECT order_id, MAX(quantity) AS max_quantity
FROM sales
GROUP BY order_id;
6.2. 显示销售数量低于5的订单信息
SELECT * FROM sales GROUP BY order_id
HAVING SUM(quantity) < 5;
--having经常和group by搭配使用,作用是对分组进行筛选,作用有些像where
相关文章:
MySQL | CRUD
目录 1. Create 2. Retrieve 2.1. SELECT列 2.1.1. 全列查询 2.1.2. 指定列查询 2.1.3. 查询字段为表达式 2.1.4. 为查询结果指定别名 2.1.5. 结果去重 2.2. WHERE条件 2.2.1. 年龄小于19的同学 2.2.2. id在2~3的同学 2.2.3. id为1和4的同学 2.2.4. 姓张的同学及张…...
【电路笔记】-MOSFET作为开关
MOSFET 作为开关 文章目录 MOSFET 作为开关1、概述2、MOSFET特性曲线2.1 截住区域2.2 饱和区域3、MOSFET作为开关的示例4、功率MOSFET电机控制5、P沟道MOSFET作为开关6、互补MOSFET作为开关电机控制器当 MOSFET 在截止区和饱和区之间工作时,MOSFET 是非常好的电子开关,用于控…...
SpringBoot+Vue项目(Vue3环境搭建 + 基础页面)
文章目录 1.项目基本介绍2.安装Node.js(SSM部分安装过)3.初始化前端工程1.创建一个文件夹 springboot_vue2.创建vue项目1.在刚才创建的文件夹下打开命令行,使用脚手架搭建项目2.选择手动配置3.选择三个4.选择vue35.选择路由模式6.选择包管理方…...
elementui el-table表格自动循环滚动【超详细图解】
效果如图 1. 当表格内容超出时,自动滚动,滚动到最后一条之后在从头滚动。 2. 鼠标移入表格中,停止滚动;移出后,继续滚动。 直接贴代码 <template><div><div class"app-container"><e…...
关于学习的一点粗浅见解
我们学习的每一个领域,大多都有着宽泛的知识面,那在学习过程中,我们是应该一开始就专钻一个方向(即深度),还是应该先扩展知识面(即广度)?个人认为,应该先扩展知识面宽度,然后再精研某个方向&…...
[java基础揉碎]Object类详解
目录 equals方法: hashCode: toString: finalize: equals方法: 和equals对比 1.: 既可以判断基本类型,又可以判断引用类型 2.: 如果判断基本类型,判断的是值是否相等。示例: int i10; double d10.0; 3.:如果判断引用类型,判断的是地址是…...
23.1 微服务理论基础
23.1 微服务基础 1. 微服务介绍2. 微服务特点3. 微服务优缺点4. 微服务两大门派5. 微服务拆分6. 微服务扩展6.1 服务扩展6.2 按需扩展7. 微服务重要模块******************************************************************************************************************...
数据结构-基本概念-001
1数据结构基本概念 1.1 (1)一组用来保存一种或者多种特定关系的数据的集合(组织和存储数据)(2)程序的设计:将现实中大量而复杂的问题以特定的数据类型和特定的存储结构存储在内存中࿰…...
以题为例浅谈SSRF
什么是ssrf SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连…...
Java网络编程:探索奥秘与实践
欢迎来到我的博客!今天我们将一起探索Java网络编程的奥秘。网络编程是计算机科学中的一个重要领域,它使得不同的计算机系统可以相互通信和共享数据。Java的网络编程库提供了一套全面而强大的工具,让我们能够轻松地实现这些功能。我们将通过一…...
Leetcode992-K个不同整数的子数组[两种方法] 关键词 滑窗
文章目录 题目方法一:滑窗右端每次1,左端来回滑动方法二:(最多K种的子串数) - (最多K-1种的子串数) 恰好K种 题目 1 < nums.length < 20000 1 < nums[i], k < nums.length 方法一…...
【闲聊】-后端框架发展史
框架,是为了解决系统复杂性,提升开发效率而产生的工具,主要服务于研发人员。 当然,框架还有更深层的作用,框架的沉淀是一种高级的抽象,会将人类的业务逐步抽象为统一标准又灵活可变的结构,为各行…...
界面控件DevExpress ASP.NET Scheduler - 助力快速交付个人信息管理系统(下)
DevExpress ASP. NET Scheduler组件能完全复制Microsoft Outlook Scheduler的样式和功能,具有日、周、月和时间轴视图,并包括内置的打印支持,因此用户可以在尽可能短的时间内交付全功能的个人信息管理系统。在上文中(点击这里回顾…...
机器学习-04-分类算法-01决策树
总结 本系列是机器学习课程的系列课程,主要介绍机器学习中分类算法,本篇为分类算法开篇与决策树部分。 参考 决策树——ID3和C4.5(理论图解公式推导) 策略产品经理必读系列—第七讲ID3、C4.5和CART算法详解 决策树(…...
探索大数据时代的决策利器:如何有效应对海量数据?
随着信息技术的快速发展,大数据时代已经到来,海量数据成为了我们生活和工作中不可忽视的一部分。这些数据来自各个方面:社交媒体、传感器、网络交易、移动设备等,每天都在以惊人的速度增长。但是,面对如此庞大的数据量,我们该如何有效地应对呢?本文将探索大数据时代的决…...
Linux 学习笔记(16)
十六、 计划任务 在很多时候为了自动化管理系统,我们都会用到计划任务,比如关机,管理,备份之类的操作,我 们都可以使用计划任务来完成,这样可以是管理员的工作量大大降低,而且可靠度更好。 l…...
【C语言】打印闰年
输⼊⼀个年份year,判断year是否是闰年 闰年判断的规则: 1, 能被4整除并且不能被100整除是闰年 2,能被400整除是闰年 结合起来如下: if ((year % 4 0 && year % 100 ! 0) || (year % 400 0)) 代码如下&…...
外贸入门,很残忍但很真实的外贸真相
如果你是小白入行外贸,第一家选择的公司大概率会决定你以后的客户开发模式。 外贸老鸟们可以留言讨论下自己是不是被说中了。 如果新人选择的第一家公司是靠B2B网站,展会或者官网询盘分发,公司每年会花大量的广告费用获客,你会很快…...
【Linux网络编程七】网络序列化和反序列化(网络版本计算器)
【Linux网络编程七】网络序列化和反序列化(网络版本计算器) 一.网络读取问题【解决方案】1.定制协议2.序列化和反序列化3.添加报头①封包②解包 4.框架总结 二.自定义协议:网络计算器协议Ⅰ.客户端发送请求,服务器端接收请求1.构建请求(结构化…...
算法打卡day17|二叉树篇06|Leetcode 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
算法题 Leetcode 654.最大二叉树 题目链接:654.最大二叉树 大佬视频讲解:最大二叉树视频讲解 个人思路 大概思路就是在数组中 找最大值的节点作为当前节点,用最大值的index切割左右子树的区间,往复循环到数组元素为0; 解法 递…...
C语言之数据在计算机内部的存储
文章目录 一、前言二、类型的基本归类1、整型家族2、浮点数家族3、构造类型4、指针类型 三、整型在内存中的存储1、原码、反码、补码1.1 概念1.2 原码与补码的转换形式1.3 计算机内部的存储编码 2、大小端介绍~~2.1 为什么要有大端和小端之分?2.2 大(小&…...
程序人生——Java中基本类型使用建议
目录 引出Java中基本类型使用建议建议21:用偶判断,不用奇判断建议22:用整数类型处理货币建议23:不要让类型默默转换建议24:边界、边界、还是边界建议25:不要让四舍五入亏了一方 建议26:提防包装…...
Pikachu 靶场搭建
文章目录 环境说明1 Pikachu 简介2 Pikachu 安装 环境说明 操作系统:Windows 10PHPStudy 版本: 8.1.1.3Apache 版本:2.4.39MySQL 版本 5.7.26 1 Pikachu 简介 Pikachu是一个使用“PHP MySQL” 开发、包含常见的Web安全漏洞、适合Web渗透测试学习人员练…...
机器学习-绪论
机器学习致力于研究如何通过计算的手段、利用经验来改善系统自身的性能。在计算机系统中,“经验”通常以“数据”的形式存在,因此,机器学习所研究的主要内容,是关于在计算机上从数据中产生“模型”的算法,即“学习算法…...
mysql 索引(为什么选择B+ Tree?)
索引实现原理 索引:排好序的数据结构 优点:降低I/O成本,CPU的资源消耗(数据持久化在磁盘中,每次查询都得与磁盘交互) 缺点:更新表效率变慢,(更新表数据,还要…...
蓝桥杯-带分数
法一 /* 再每一个a里去找c,他们共用一个st数组,可以解决重复出现数字 通过ac确定b,b不能出现<0 b出现的数不能和ac重复*/import java.util.Scanner;public class Main {static int n,res;static boolean[] st new boolean[15];static boolean[] backup new boolean[15];…...
消息队列面试题
目录 1. 为什么使用消息队列 2. 消息队列的缺点 3. 消息队列如何选型? 4. 如何保证消息队列是高可用的 5. 如何保证消息不被重复消费(见第二条) 6. 如何保证消息的可靠性传输? 7. 如何保证消息的顺序性(即消息幂…...
Android和IOS应用开发-Flutter 应用中实现记录和使用全局状态的几种方法
文章目录 在Flutter中记录和使用全局状态使用 Provider步骤1步骤2步骤3 使用 BLoC步骤1步骤2步骤3 使用 GetX:步骤1步骤2步骤3 在Flutter中记录和使用全局状态 在 Flutter 应用中,您可以使用以下几种方法来实现记录和使用全局状态,并在整个应…...
若依 ruoyi-cloud [网关异常处理]请求路径:/system/user/getInfo,异常信息:404
这里遇到的情况是因为nacos中的配置文件与项目启动时的编码不一样,若配置文件中有中文注释,那么用idea启动项目的时候,在参数中加上 -Dfile.encodingutf-8 ,保持编码一致,(用中文注释的配置文件,…...
自然语言处理里预训练模型——BERT
BERT,全称Bidirectional Encoder Representation from Transformers,是google在2018年提出的一个预训练语言模型,它的推出,一举刷新了当年多项NLP任务值的新高。前期我在零、自然语言处理开篇-CSDN博客 的符号向量化一文中简单介绍…...
整人网站怎么做/sem分析是什么
我正在使用弹簧靴.我有一个休息的api POST调用,我需要使用x-www-form-urlencoded发送正文,调用不需要头文件.我可以从邮递员中获取此URL,并在db中成功创建一行.但是当我尝试从Java端调用它时,我收到400个错误的请求异常.以下是我在Java中尝试过的内容.MultiValueMap map new L…...
定制家具网站建设/河池网站seo
目录 文章目录[toc]数据库实例关系代数选择与投影集合操作连接除参考资料有了数据库,还要通过查询来获得数据。SQL是常用的查询语言,但我想用更抽象的查询语言来表达,从思路上去理解而忽略实现细节。下面将介绍关系代数。 数据库实例 在介…...
成品网站整套源码/百度推广服务费3000元
curl -I"http://foobar:8080/jmx-console/HtmlAdaptor?actioninvokeOpByName&nameUCMDB%3Aservice%3DAuthorizationServices&methodNamecreateUser&arg0&arg1zdi-poc&arg2pocuser&arg3zdi-poc&arg4pocuser"...
网站域名到期如何续费/汕头seo公司
环境: 电脑:HP246G7 系统:Windows 10 专业版 64位 问题描述: Win10 如何把视频制作成,屏幕保护,想把一个MP4格式视频做成屏幕保护 解决方案: 1.下载ScreensaverWond 2.安装完成后&#x…...
网站开发相关技术/深圳网络seo推广
2021年THE泰晤士高等教育电力电子工程Electrical and Electronic Engineering专业世界大学排名公布,新加坡国立大学NUS电力电子工程世界排名第12位,新加坡国立大学NUS电力电子工程专业实力怎么样呢?下面美英港新留学介绍新加坡国立大学NUS电力…...
郑州建设网站/易搜搜索引擎
百度百科: 哈夫曼树也可以是k叉的,只是在构造k叉哈夫曼树时需要先进行一些调整。构造哈夫曼树的思想是每次选k个权重最小的元素来合成一个新的元素,该元素权重为k个元素权重之和。但是当k大于2时,按照这个步骤做下去可能到最后剩…...