【Mysql学习笔记】3 - 本章作业

1.判断

1. 这句话表示ename as name 可以不要这个as,同理后面的sal salary也是别名,而选项D的Annual Salary中间也有空格,程序会判断为as 但as不能连用,所以错误,选D

2.选B,因为null不能加上判断符号<> C显而易见

3.AB正确,因为sal salary为as别名,所以C错误,3无法找到

2.DESC

-- 查看表结构
	
DESC dept
DESC emp

3. select语句 流程控制函数

-- 显示所有部门信息
SELECT *
	FROM dept
-- 显示所有雇员名及其全年收入
-- (2)显示所有雇员名及其全年收入13月(工资+补助),并指定列别名"年收入”
SELECT ename,(sal * 13)+IFNULL(comm,0) AS '年收入'
	FROM emp

4.WHERE语句

-- 4.限制查询数据。
-- (1)显示工资超过2850的雇员姓名和工资。
SELECT ename,sal salary
	FROM emp
	WHERE sal > 2850

-- (2)显示工资不在1500到2850之间的所有雇员名及工资。
SELECT ename,sal salary
	FROM emp
	WHERE sal < 2850 AND sal > 1500
-- (3)显示编号为7566的雇员姓名及所在部门编号。
SELECT empno,ename,deptno
	FROM emp
	WHERE empno IN (7566)
-- (4)显示部门10和30中工资超过1500的雇员名及工资。
SELECT ename,sal salary,deptno
	FROM emp
	WHERE deptno = 10 OR deptno = 30 AND sal > 1500
-- (5)显示无管理者的雇员名及岗位。
SELECT ename,job
	FROM emp
	WHERE mgr IS NULL

5.where语句,order by 排序

-- 5.排序数据。
-- (1)显示在1991年2月1日到1991年5月1日之间雇用的雇员名,岗位及雇佣日期,并以雇佣日期进行排序。I
SELECT ename,job,hiredate
	FROM emp
    -- 	WHERE hiredate >= '1991-2-1' AND hiredate <= '1991-5-1'
	WHERE DATEDIFF(hiredate,'1991-2-1') >= 0 AND DATEDIFF(hiredate,'1991-5-1') <= 0
	ORDER BY hiredate
-- (2)显示获得补助的所有雇员名工资及补助,并以工资降序排序
SELECT ename,sal,comm
	FROM emp
	WHERE comm IS NOT NULL
	ORDER BY sal

6.基础的sql查询,函数调用

-- 1.选择部门30中的所有员工.
SELECT * 
	FROM emp
	WHERE deptno = 30

-- 2.列出所有办事员(CLERK)的姓名,编号和部门门编号.
SELECT ename,empno,deptno
	FROM emp
	WHERE job = 'CLERK'

-- 3.找出佣金高于薪金的员工.
SELECT *
	FROM emp
	WHERE comm > sal

-- 4.找出佣金高于薪金60%的员工.
SELECT *
	FROM emp
	WHERE comm > (sal * 0.6)

-- 5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.
SELECT *
	FROM emp
	WHERE deptno = 10 AND job = 'MANAGER' OR deptno = 20 AND job = 'CLERK'

-- 6.找出部门10中所有经理(MANAGER)部门20中所有办事员(CLERK),还有既不是经理又不是办事员
-- 但其薪金大于或等于2000的所有员工的详细资料.
SELECT *
	FROM emp
	WHERE deptno = 10 AND job = 'MANAGER' OR deptno = 20 AND job = 'CLERK' 
	OR sal > 2000 AND job

-- 7.找出收取佣金的员工的不同工作.
SELECT DISTINCT job
	FROM emp
	WHERE comm IS NOT NULL

-- 8.找出不收取佣金或收取的佣金低于100的员工
SELECT *
	FROM emp
	-- where comm is null or comm < 100 -- 最好不要用null参与比较 改为下句
	WHERE comm IS NULL OR IFNULL(comm,0) < 100

-- 9.找出各月倒数第3天受雇的所有员工.
-- 提示: last_day(日期), 可以返回该日期所在月份的最后一天
-- last_day(日期) - 2 得到日期所有月份的倒数第3天
SELECT * 
	FROM emp
	WHERE LAST_DAY(hiredate) - 2  =  hiredate

-- 10.找出早于12年前受雇的员工.
SELECT *
	FROM emp
	-- where abs(DATEDIFF(hiredate,CURRENT_DATE()))  > 12 * 365
	WHERE DATE_ADD(hiredate,INTERVAL 12 YEAR) < NOW()

-- 11.以首字母小写的方式显示所有员工的姓名.
SELECT CONCAT(LCASE(SUBSTRING(ename,1,1)), SUBSTRING(ename,2))
	FROM emp

-- 12.显示正好为5个字符的员工的姓名.
SELECT *
	FROM emp
	WHERE LENGTH(ename) = 5

6.1

-- 13.显示不带有"R"的员工的姓名.
SELECT *
	FROM emp
	WHERE ename NOT LIKE '%R%'

-- 14.显示所有 员工姓名的前三个字符
SELECT SUBSTRING(ename,1,3)
	FROM emp

-- 15.显示所有员工的姓名,用a替换所有"A"
SELECT REPLACE(ename,'A','a')
	FROM emp

-- 16.显示满10年服务年限的员工的姓名和受雇日期. 
SELECT ename,hiredate
	FROM emp
	WHERE DATE_ADD(hiredate,INTERVAL 12 YEAR) < NOW()

-- 17.显示员工的详细资料按姓名排序
SELECT *
	FROM emp
	ORDER BY ename

.

-- 18.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面.
SELECT ename,hiredate
	FROM emp
	ORDER BY hiredate 

-- 19.显示所有员工的姓名、工作和薪金按工作降序排序,若工作相同则按薪金排序
SELECT ename,job,sal
	FROM emp
	ORDER BY job DESC,sal

-- 20.显示所有员工的姓名、加入公司的年份和月份按受雇日期所在月排序,若月份相同则将最早年份
-- 的员工排在最前面.
SELECT ename,YEAR(hiredate),MONTH(hiredate)
	FROM emp
	ORDER BY MONTH(hiredate),YEAR(hiredate)

-- 21.显示在一个月为30天的情况所有员工的日薪金,忽略余数.
SELECT ename,FLOOR (sal / 30) AS 'daySal'
	FROM emp
	ORDER BY daySal

-- 21.显示在一个月为30天的情况所有员工的日薪金,忽略余数.
SELECT ename,FLOOR (sal / 30) AS 'daySal' -- 使用ROUND四舍五入
	FROM emp
	ORDER BY daySal

 

-- 22.找出在(任何年份的)2月受聘的所有员工。
SELECT ename,hiredate
	FROM emp
	WHERE MONTH(hiredate) = 2

-- 23.对于每个员工,显示其加入公司的天数.
SELECT ename, hiredate , DATEDIFF(CURRENT_DATE,hiredate)
	FROM emp

-- 24. 显示姓名字段的任何位置包含" A"的所有员工的姓名.
SELECT ename
	FROM emp
	WHERE ename LIKE '%A%'

-- 25.以年月日的方式显示所有员工的服务年限(大概)
SELECT ename,FLOOR(DATEDIFF(NOW(),hiredate) / 365 ) AS '工作年' ,
	FLOOR(DATEDIFF(NOW(),hiredate) % 365 / 31) AS '工作月',
	DATEDIFF(NOW(),hiredate) % 31 AS '工作日'
	FROM emp
	

7.多表查询,子查询,子列

-- (1).列出至少有一个员工的所有部门
SELECT COUNT(*) AS c,deptno
	FROM emp
	GROUP BY deptno
	HAVING c > 1

-- (2).列出薪金比"SMITH"多的所有员工。
SELECT *
	FROM emp
	WHERE sal > (
		SELECT sal
		FROM emp
		WHERE ename = 'SMITH'
	) -- 把该查询做一个子查询

-- (3).列出受雇日期晚于其直接上级的所有员工。
/*
	先把emp表当做两张表 worker,leader
	条件 1. worker.hiredate > leader.hiredate
*/
SELECT worker.ename AS '员工名字',worker.hiredate, leader.ename AS '领导名字',leader.hiredate
	FROM emp worker,emp leader
	WHERE worker.hiredate > leader.hiredate
	AND worker.mgr = leader.empno

 

-- (4).列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
SELECT dname,emp.*
	FROM dept -- 使用左连接 外连接
	LEFT JOIN emp ON dept.deptno = emp.deptno
	ORDER BY dname

 

 

-- (5).列出所有"CLERK" : (办事员)的姓名及其部门名称。
SELECT dname,emp.*
	FROM emp,dept -- 使用左连接 外连接
	WHERE emp.job = 'CLERK'
	ORDER BY dname

 

 

-- (6).列出最低薪金大于1500的各种工作。
SELECT MIN(sal) AS min_sal , job
	FROM emp
	GROUP BY job
	HAVING min_sal > 1500

 

-- (7).列出在部门"SALES"销售部) 工作的员工的姓名。
SELECT ename,dname
	FROM emp,dept
	WHERE emp.deptno = dept.deptno AND dname = 'SALES'

 

-- (8).列出薪金高于公司平均薪金的所有员工。

SELECT *
	FROM emp
	WHERE sal > (
		SELECT AVG(sal)
			FROM emp
	)

 

-- (9).列出与"SCOTT"从事相同工作的所有员工。
SELECT *
	FROM emp
	WHERE job = (SELECT job
			FROM emp
			WHERE ename = 'SCOTT')

 

-- (10).列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
SELECT ename,sal
	FROM emp
	WHERE sal > (SELECT MAX(sal) 
	FROM emp
	WHERE deptno = 30 /*先查出30号部门里最大的工资*/)

-- (11).列出在每个部门工作的员工数量、平均工资和平均服务期限。
SELECT COUNT(*) AS '各部门的员工数量',FLOOR(AVG(sal)) AS '平均工资',FLOOR (AVG(DATEDIFF(NOW(),hiredate))) AS '平均服务期限'
	FROM emp
	GROUP BY deptno

-- (11).列出在每个部门工作的员工数量、平均工资和平均服务期限。
SELECT COUNT(*) AS '各部门的员工数量',
	FORMAT(AVG(sal),2) AS '平均工资',
	FORMAT (AVG(DATEDIFF(NOW(),hiredate)) / 365,2) AS '平均服务期限(年)'
	FROM emp
	GROUP BY deptno

-- (12).列出所有员工的姓名、部门名称和工资。
SELECT *
	FROM emp
	JOIN dept ON emp.deptno = dept.deptno
	

-- (13).列出所有部门的详细信息和部门人数。
SELECT dept.*,c
	FROM dept,(SELECT COUNT(*) AS c,deptno
	FROM emp
	GROUP BY deptno /*-- 看作子查询*/)tmp
	WHERE tmp.deptno = dept.deptno

-- (14).列出各种工作的最低工资。
SELECT MIN(sal),job
	FROM emp
	GROUP BY job

-- (15).列出MANAGER (经理)的最低薪金。
SELECT MIN(sal),job
	FROM emp
	WHERE job = 'MANAGER'
	GROUP BY job

 

 


-- (16).列出所有员工的年工资,按年薪从低到高排序。
SELECT ename,(sal + IFNULL(comm,0)) * 12 yearSal
	FROM emp
	ORDER BY yearSal

8.综合

 

-- 完成最后一个综合的练习

-- 8. 设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生。
-- 现要建立关于系、学生、班级的数据库,关系模式为:
-- 班CLASS (班号classid,专业名subject,系名deptname,入学年份enrolltime,人数num)
-- 学生STUDENT (学号studentid,姓名name,年龄age,班号classid)
-- 系 DEPARTMENT (系号departmentid,系名deptname)
-- 试用SQL语言完成以下功能:  homework05.sql 10min 
-- 
-- (1) 建表,在定义中要求声明:
--     (1)每个表的主外码。
--     (2)deptname是唯一约束。
--     (3)学生姓名不能为空。

-- 创建表 系 DEPARTMENT (系号departmentid,系名deptname)
CREATE TABLE DEPARTMENT (
	departmentid VARCHAR(32) PRIMARY KEY,
	deptname VARCHAR(32) UNIQUE NOT NULL);
	
-- 班CLASS (班号classid,专业名subject,系名deptname,入学年份enrolltime,人数num)
CREATE TABLE `class` (
	classid INT PRIMARY KEY,
	`subject` VARCHAR(32) NOT NULL DEFAULT '',
	deptname VARCHAR(32) , -- 外键字段,在表定义后指定
	enrolltime INT NOT NULL DEFAULT 2000,
	num INT NOT NULL DEFAULT 0,
	FOREIGN KEY (deptname) REFERENCES  DEPARTMENT(deptname));
	
-- 学生STUDENT (学号studentid,姓名name,年龄age,班号classid)
CREATE TABLE hsp_student (
	studentid INT PRIMARY KEY,
	`name` VARCHAR(32) NOT NULL DEFAULT '',
	age INT NOT NULL DEFAULT 0,
	classid INT, -- 外键
	FOREIGN KEY (classid) REFERENCES  `class`(classid));
	
-- 添加测试数据

INSERT INTO department VALUES('001','数学');
INSERT INTO department VALUES('002','计算机');
INSERT INTO department VALUES('003','化学');
INSERT INTO department VALUES('004','中文');
INSERT INTO department VALUES('005','经济');

INSERT INTO class VALUES(101,'软件','计算机',1995,20);
INSERT INTO class VALUES(102,'微电子','计算机',1996,30);
INSERT INTO class VALUES(111,'无机化学','化学',1995,29);
INSERT INTO class VALUES(112,'高分子化学','化学',1996,25);
INSERT INTO class VALUES(121,'统计数学','数学',1995,20);
INSERT INTO class VALUES(131,'现代语言','中文',1996,20);
INSERT INTO class VALUES(141,'国际贸易','经济',1997,30);
INSERT INTO class VALUES(142,'国际金融','经济',1996,14);

INSERT INTO hsp_student VALUES(8101,'张三',18,101);
INSERT INTO hsp_student VALUES(8102,'钱四',16,121);
INSERT INTO hsp_student VALUES(8103,'王玲',17,131);
INSERT INTO hsp_student VALUES(8105,'李飞',19,102);
INSERT INTO hsp_student VALUES(8109,'赵四',18,141);
INSERT INTO hsp_student VALUES(8110,'李可',20,142);
INSERT INTO hsp_student VALUES(8201,'张飞',18,111);
INSERT INTO hsp_student VALUES(8302,'周瑜',16,112);
INSERT INTO hsp_student VALUES(8203,'王亮',17,111);
INSERT INTO hsp_student VALUES(8305,'董庆',19,102);
INSERT INTO hsp_student VALUES(8409,'赵龙',18,101);

SELECT * FROM department
SELECT * FROM class
SELECT * FROM hsp_student

-- (3) 完成以下查询功能
--   3.1 找出所有姓李的学生。
-- 查表 hsp_student , like
SELECT * 
	FROM hsp_student
	WHERE `name` LIKE '李%' 
--   3.2 列出所有开设超过1个专业的系的名字。

-- 1. 先查询各个系有多少个专业
SELECT COUNT(*) AS nums, deptname 
	FROM class
	GROUP BY deptname HAVING nums > 1
--   3.3 列出人数大于等于30的系的编号和名字。
-- 1. 先查出各个系有多少人, 并得到 >= 30 的系

SELECT SUM(num) AS nums, deptname  
	FROM class 
	GROUP BY  deptname 
	HAVING nums >= 30
	
-- 2. 将上面的结果看成一个临时表 和 department 联合查询即可

SELECT  tmp.*, department.departmentid
	FROM department , (
		SELECT SUM(num) AS nums, deptname  
		FROM class 
		GROUP BY  deptname 
		HAVING nums >= 30
	) tmp 
	WHERE department.deptname = tmp.deptname;
	


-- (4) 学校又新增加了一个物理系,编号为006
-- 添加一条数据
INSERT INTO department VALUES('006','物理系');
-- (5) 学生张三退学,请更新相关的表

-- 分析:1. 张三所在班级的人数-1 2. 将张三从学生表删除  3. 需要使用事务控制

-- 开启事务
START TRANSACTION;
-- 张三所在班级的人数-1 
UPDATE class SET num = num - 1
	WHERE classid = (
		SELECT classid 
			FROM hsp_student 
			WHERE NAME = '张三'
	);

DELETE 
	FROM hsp_student
	WHERE NAME = '张三';
	
-- 提交事务
COMMIT;

SELECT * FROM hsp_student;
SELECT * FROM class


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Stable Diffusion绘画系列【7】:极致东方美学

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐--…

leetCode 131.分割回文串 + 回溯算法 + 图解 + 笔记

131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串 示例 1&#xff1a; 输入&#xff1a;s "aa…

RabbitMQ消息模型之Work Queues

Work Queues Work Queues&#xff0c;也被称为&#xff08;Task Queues&#xff09;&#xff0c;任务模型&#xff0c;也是官网给出的第二个模型&#xff0c;使用的交换机类型是直连direct&#xff0c;也是默认的交换机类型。当消息处理比较耗时的时候&#xff0c;可能生产消息…

F. Magic Will Save the World

首先积攒了能量打了怪再积攒是没有意义的&#xff0c;可以直接积攒好&#xff0c;然后一次性进行攻击 那么怎么进行攻击了&#xff1f;可以尽量的多选怪物使用水魔法攻击剩余的再用火魔法进行攻击&#xff0c; 也就是只要存在合法的体积&#xff08;即装入背包的怪物的体积之…

Docker、Kubernetes、OCI、CRI-O、containerd、runc 之间的关系以及它们是如何一起工作的?

最近网上看到一张图片&#xff0c;能够很清晰地展现出 Docker、Kubernetes、OCI、CRI-O、containerd、runc 之间的关系以及它们是如何在一起工作的&#xff0c;如下&#xff1a; 本文可以作为之前一篇文章&#xff08;《K8s、Docker、CRI、OCI 之间的爱恨情仇》&#xff09;的…

Echarts的引入使用

ECharts文档 1.下载并引入Echarts 2.准备一个具备大小的DOM容器 3.初始化echarts实例对象 4.指定配置项和数据(option) 5.将配置项设置给echarts实例对象 最后是一个js文件 echarts的引入 1.引入echarts - js 文件 <script src"js/echarts.min.js"></scri…

【新手解答1】深入探索 C 语言:变量名、形参 + 主调函数、被调函数 + 类和对象 + 源文件(.c 文件)、头文件(.h 文件)+ 库

C语言的相关问题解答 写在最前面目录 问题1变量名与变量的关系与区别变量和数据类型形参&#xff08;形式参数&#xff09;的概念 问题2解析&#xff1a;主调函数和被调函数延伸解析&#xff1a;主调函数对于多文件程序的理解总结 问题3类和对象变量和数据类型变量是否为抽象的…

YOLOv5算法进阶改进(6)— 更换主干网络之ResNet18

前言:Hello大家好,我是小哥谈。ResNet18是ResNet系列中最简单的一个模型,由18个卷积层和全连接层组成,其中包含了多个残差块。该模型在ImageNet数据集上取得了很好的表现,成为了深度学习领域的经典模型之一。ResNet18的优点是可以解决深度神经网络中梯度消失的问题,使得性…

第一个C代码讲解

文章目录 编写C文件创建文本文件编写代码修改文件后缀切换文件路径 编译代码打开命令行使用gcc编译代码运行程序双击运行使用命令行运行 代码分析编译过程 编写C文件 编辑C代码文件的工具有很多&#xff0c;为了让大家初学的时候摆脱编译软件的干扰&#xff0c;更容易理解编译过…

hql面试题之上海某资深数仓开发工程师面试题-求不连续月份的月平均值

1.题目 A,B两组产品的月平均值&#xff0c;月平均值是当月的前三个月值的一个平均值&#xff0c;注意月份是不连续的&#xff0c;如果当月的前面的月份不存在&#xff0c;则为0。如A组2023-04的月平均值为2023年1月的数据加2023-02月的数据的平均值&#xff0c;因为没有其他月…

MES管理系统在智能工厂建设中的五个核心作用

随着制造业的数字化转型&#xff0c;智能工厂已经成为了现代工业生产的标志。而在智能工厂中&#xff0c;MES生产管理系统扮演着至关重要的角色。MES管理系统是一种用于管理和监控生产过程的软件系统&#xff0c;通过集成生产计划、资源调度、设备控制、质量管理等功能&#xf…

Cytoscape学习教程

写在前面 今天分享的内容是自己遇到问题后,咨询社群里面的同学,帮忙解决的总结。 关于Cytoscape,对于做组学或生物信息学的同学基本是陌生的,可能有的同学用这个软件作图是非常溜的,做出来的网络图也是十分的好看,“可玩性”很高,就像前面分享的aPEAR包一样aPEAR包绘制…

Python自动化测试工具selenium使用指南

概述 selenium是网页应用中最流行的自动化测试工具&#xff0c;可以用来做自动化测试或者浏览器爬虫等。官网地址为&#xff1a;selenium。相对于另外一款web自动化测试工具QTP来说有如下优点&#xff1a; 免费开源轻量级&#xff0c;不同语言只需要一个体积很小的依赖包支持…

大杀四方,华为组建智能车大联盟 | 百能云芯

最近&#xff0c;华为和一系列汽车公司合资的新公司迎来新的进展。除了与长安汽车的合作外&#xff0c;据传华为已经邀请奇瑞、赛力斯、北汽以及江淮汽车入股新公司&#xff0c;这将使华为成为中国智能汽车平台的重要主导者。 根据澎湃新闻的报道&#xff0c;知情人透露&#x…

Mysql之子查询(知识点+例题)

Mysql之子查询<知识点例题> 什么是子查询案例分析案例分析子查询的分类单行子查询子查询中的空值问题题目练习题目一题目二题目三题目四题目五补充&#xff1a;聚合函数与GROUP BY的使用关系 CASE表达式&#xff08;子查询中的运用&#xff09;简单CASE表达式搜索CASE表达…

Python将Labelme的Json标注文件进行增、删、改、查

Python将Labelme的Json标注文件进行增、删、改、查 前言前提条件相关介绍实验环境Json标注文件的增、删、改、查增代码实现输出结果 删代码实现输出结果 改代码实现输出结果 查代码实现输出结果 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精…

ISCTF2023 部分wp

学一年了还在入门( web where_is_the_flag ISCTF{41631519-1c64-40f6-8dbb-27877a184e74} 圣杯战争 <?php // highlight_file(__FILE__); // error_reporting(0);class artifact{public $excalibuer;public $arrow;public function __toString(){echo "为Saber选择…

elementui的table合并列,三个一组

<el-table :span-method"objectSpanMethod" :cell-style"iCellStyle" :data"tableData" height"63vh" border style"width: 100%; margin-top: 6px"><el-table-column type"index" label"序号"…

【同一局域网下】访问其他电脑的虚拟机

一、在被连接的电脑上对VMware进行设置 编辑 --> 虚拟网络编辑器 按顺序点击 如果22端口已被占用&#xff0c;可以自行定义 &#xff08;端口号越大&#xff0c;被占用的可能性越小&#xff09; 二、在被连接的电脑上对防火墙进行设置&#xff08;这里以win11为例&#xff…

【C++笔记】红黑树的简易实现

【C笔记】红黑树的简易实现 一、什么是红黑树以及红黑树好在哪里1.1、什么是红黑树1.2、红黑树比AVL树好在哪里&#xff1f; 二、红黑树的模拟实现2.1、红黑树的插入2.2、仅变色调整2.3、变色单旋调整2.4、变色双旋调整 一、什么是红黑树以及红黑树好在哪里 1.1、什么是红黑树…