MySQL之DQL

DQL是数据查询语言

SELECT语句

语法:

SELECT {*,列名,函数等}
FROM 表名;

SELECT *:表示匹配所有列
FROM :提供数据源
例如:查询student表的所有记录

SELECT * FROM student;

例如:查询学生姓名和地址:

SELECT StudentName,Address FROM student;

例如:查询学号为1001的学生姓名和地址:

SELECT StudentName,Address FROM student WHERE StudentNo=1001;

SELECT语句中的算术表达式

数值型数据列、变量、常量可以使用算术操作符创建表达式(+ - * /)
**例如:

SELECT 100+80;

在这里插入图片描述

SELECT 100-80;

在这里插入图片描述

SELECT 100*80;

在这里插入图片描述

SELECT 100/80;

在这里插入图片描述

SELECT "12"+80;

在这里插入图片描述

SELECT "ABC"+80;

在这里插入图片描述

SELECT "ABC"+"DE";

在这里插入图片描述

SELECT NULL+80;(只要有一个NULL则全部为NULL)

在这里插入图片描述

日期型数据列、变量、常量可以使用部分算术操作符创建表达式(+ -)

运算符的优先级

乘法和除法的优先级高于加法和减法。
统计运算符的顺序是从左到右。
表达式中使用括号可以强行改变优先级的运算顺序。

定义字段别名

未定义别名

mysql> SELECT StudentNo,StudentName  -> FROM student;
+-----------+--------------+
| StudentNo | StudentName  |
+-----------+--------------+
|      1000 | 郭靖         |
|      1001 | 李文才       |
|      1002 | 李斯文       |
|      1003 | 武松         |
|      1004 | 张三         |
|      1005 | 张秋丽       |
|      9527 | 赵尧林       |
|      1007 | 欧阳峻峰     |
|      1008 | 梅超风       |
|      1028 | 赵敏         |
|      8080 | 李寻欢       |
+-----------+--------------+
11 rows in set (0.00 sec)

定义别名1

mysql> SELECT StudentNo "学号",StudentName "学生姓名"-> FROM student-> ;
+--------+--------------+
| 学号   | 学生姓名     |
+--------+--------------+
|   1000 | 郭靖         |
|   1001 | 李文才       |
|   1002 | 李斯文       |
|   1003 | 武松         |
|   1004 | 张三         |
|   1005 | 张秋丽       |
|   9527 | 赵尧林       |
|   1007 | 欧阳峻峰     |
|   1008 | 梅超风       |
|   1028 | 赵敏         |
|   8080 | 李寻欢       |
+--------+--------------+
11 rows in set (0.00 sec)

定义别名2

mysql> SELECT StudentNo AS "学号",StudentName AS "学生姓名"-> FROM student;
+--------+--------------+
| 学号   | 学生姓名     |
+--------+--------------+
|   1000 | 郭靖         |
|   1001 | 李文才       |
|   1002 | 李斯文       |
|   1003 | 武松         |
|   1004 | 张三         |
|   1005 | 张秋丽       |
|   9527 | 赵尧林       |
|   1007 | 欧阳峻峰     |
|   1008 | 梅超风       |
|   1028 | 赵敏         |
|   8080 | 李寻欢       |
+--------+--------------+
11 rows in set (0.00 sec)

关键字

DISTINCT

去除查询出来的重复的记录
例如: 查询学生性别

未去重

mysql> SELECT Sex "性别"-> FROM student;
+--------+
| 性别   |
+--------+
|      1 |
|      1 |
|      1 |
|      1 |
|      1 |
|      2 |
|      1 |
|      1 |
|      1 |
|      1 |
|      1 |
+--------+
11 rows in set (0.00 sec)

去重

mysql> SELECT DISTINCT Sex "性别"-> FROM student;
+--------+
| 性别   |
+--------+
|      1 |
|      2 |
+--------+
2 rows in set (0.01 sec)

BETWEEN…AND…

条件介于某两个值之间
例如:查询学号位于1003和1110之间的学生。

SELECT * 
FROM student
WHERE StudentNo BETWEEN 1003 AND 1110;

IN

条件在某些值里面
例如:查询班级号为2或者3的学生信息。

SELECT * 
FROM student
WHERE GradeId IN (2,3);

LIKE

模糊查询

查询条件可包含文字字符或者占位符:
① % 表示匹配0或任意多个字符。
②_ 表示匹配1个字符。

例如:查询刘姓的学生

SELECT * FROM student WHERE StudentName LIKE "刘%";

逻辑运算符:
AND: 需要满足所有的条件。
例如:查询出生在1987年02月01日之后并且性别为1的学生信息。

SELECT * FROM student WHERE BornDate > '1987-02-01' AND Sex = 1;

OR: 满足任一条件即可。
例如:查询出生在1987年02月01日之后或者性别为1的学生信息。

SELECT * FROM student WHERE BornDate > '1987-02-01' OR Sex = 1;

NOT: 取反。
例如:查询班级号不在2、3的学生信息。

SELECT *
FROM student
WHERE GradeId NOT IN (2,3);

正则表达式: REGEXP
语法:

<语法> REGEXP '表达式'

例如:查询生日在1986年的学生信息。

SELECT *
FROM student
WHERE BornDate REGEXP '^1986';

GROUP BY

数据分组,其真正作用在于与各种聚合函数配合使用。它用来对查询出来的数据进行分组。
分组的含义: 把该列具有相同值的多条记录,当作一个记录去处理,最终只输出一条记录。且忽略NULL。
语法:

SELECT 列名,分组函数
FROM 表名
[WHERE 条件]
[GROUP BY 分组条件];

例如:查询每个学生的平均分

SELECT StudentNo "学号",AVG(StudentResult) "平均分" FROM result GROUP BY (StudentNo);

例如:查询每个学生的平均分、总分、最高分、最低分。

SELECT StudentNo "学号",AVG(StudentResult) "平均分",SUM(StudentResult) "总分",MAX(StudentResult) "最高分",MIN(StudentResult) "最低分"
FROM result
GROUP BY(StudentNo);

例如:查询个性别人数各占多少?

SELECT COUNT(*)
FROM student
GROUP BY(Sex);

HAVING语句

语法:

SELECT 列名,分组函数
FROM 表名
[WHERE 条件]
[GROUP BY 分组条件]
[HAVING 过滤条件];

多用于分组后的二次过滤。
例如:根据学号得到所有学生的平均分后,过滤掉94分以下的同学。

SELECT StudentNo "学号",AVG(StudentResult) "平均分"
FROM result
GROUP BY(StudentNo)
HAVING AVG(StudentResult) > 94;

ORDER BY

排序
DESC:降序
ASC:升序
默认为ASC。
语法:

SELECT 列名,分组函数
FROM 表名
[WHERE 条件]
[GROUP BY 分组条件]
[HAVING 过滤条件]
[ORDER BY 排序字段] [ASC||DESC||];

例如:根据学号得到所有学生平均分后,过滤掉80分以下的学生后,对成绩进行降序排列。

SELECT StudentNo "学号",AVG(StudentResult) "平均分"
FROM result
GROUP BY(StudentNo)
HAVING AVG(StudentResult) > 80
ORDER BY AVG(StudentResult) DESC;

LIMIT

区间查询
索引从0开始
LIMIT A,B A是起始行的索引位,B是查询的空间值。
语法:

SELECT 列名,分组函数
FROM 表名
[WHERE 条件]
[GROUP BY 分组条件]
[HAVING 过滤条件]
[ORDER BY 排序字段] [ASC||DESC||]
[LIMIT A,B];

例如:根据学号得到所有学生平均分后,过滤掉80分以下的学生后,对成绩进行降序排列并取前三名。

SELECT StudentNo "学号",AVG(StudentResult) "平均分"
FROM result
GROUP BY(StudentNo)
HAVING AVG(StudentResult)>80
ORDER BY AVG(StudentResult) DESCLIMIT 0,3;

GROUP_CONCAT

多行数据合并
例如:根据班级进行分组,要求查看各班各人姓名和各班人数个数。

SELECT GradeId "班级编号",COUNT(*) "人数",GROUP_CONCAT(StudentName)
FROM student
GROUP BY GradeId;

注意:
①使用GROUP_CONCAT()函数必须对源数据进行分组,否则所有数据就会别合并成一列。
②对结果集排序,查询语句执行的查询结果,数据是按照插入顺序排序。
③实际上需要按照某列的大小值进行排序的话,建议针对于数值类型或日期类型进行排序

多表关联查询

1、交叉连接

不适合用于任何匹配条件,生成笛卡尔积产出的行数。
语法:

SELECT 列名
FROM 表名1、2..;

2、内外连接

①等值连接

等值连接,在我们检索时,可以的将表与表之间的关系,明文的体现在SQL语句内,从而避免了如交叉连接产生的冗余数据。
语法:

SELECT 表一.列名,表二.列名
FROM 表一,表二
WHERE 条件;
例如:查询所有学生+所有班级信息
SELECT student.StudentName "学生姓名",grade.GradeName "班级" 
FROM student,grade 
WHERE student.GradeId=grade.GradeId;

②内连接

本质上来说和等值无区别,但是内连接会释放WHER关键字,表与表之间的连接语法更加清晰。
语法:

SELECT *
FROM 表1 INNER JOIN 表2 ON 表1.列=表2.列
[INNER JOIN 表3 ON 关系];

例如:查询学生姓名以及班级名

SELECT student.StudentName "姓名",grade.GradeName "班级"
FROM student INNER JOIN grade ON student.GradeId=grade.GradeId;

③外连接

选择了外联关键字指向的表的所有数据+关联数据
语法:

SELECT *
FROM 表1 {LEFT||RIGHT} JOIN 表2 ON 表1.列=表2.列;

例如:查询男学生名以及对应的班级名

SELECT student.StudentName "姓名",grade.GradeName "班级"
FROM student LEFT JOIN grade ON student.GradeId=grade.GradeId
WHERE student.Sex=1; 

小结

①INNER JOIN :代表选择的是两个表的交叉部分。
②LEFT JOIN :代表选择的是前面一个表的全部。
③RIGHT JOIN :代表选择的是后面一个表的全部。

3、自连接

自己和自己连接,参与连接表都是同一张表。
例如:

SELECT c1.categoryName "父级目录",c2.categoryName "子目录"
FROM category AS c1 INNER JOIN category AS c2 ON c1.categoryId = c2.pid;

4、子查询

①子查询是将一个查询语句嵌套在另一个查询语句中,内部嵌套其他的SELECT语句的查询。
②内层查询的结果,可以作为外层查询的条件。
③子查询中可以包含的关键字:IN NOT NULL
④子查询中可以包含的运算符:= != > < 等

例如:查询班级名称是大一,科目是高等数学-1的学生的平均分。
//0-根据大一查到对应的班级编号

SELECT GradeId
FROM grade
WHERE GradeName = "大一";

//1-根据对应的班级编号适配学生的学号

SELECT StudentNo
FROM student
WHERE GradeId = (
SELECT GradeId
FROM grade
WHERE GradeName = "大一"
);

//2-根据高等数学-1查到对应的课程号

SELECT SubjectNo
FROM subject
WHERE subjectName = "高等数学-1";

//前三步完成,我们手里有 一个课程号以及若干个学号

SELECT AVG(result.StudentResult)
FROM result
WHERE result.SubjectNo = (SELECT SubjectNo
FROM subject
WHERE subjectName = "高等数学-1")
AND result.StudentNo IN (SELECT StudentNo
FROM student
WHERE GradeId = (SELECT GradeId
FROM grade
WHERE GradeName = "大一"));

SQL函数

聚合函数

对一组值进行运算,并返回单个值,也叫组合函数。

常见聚合函数:
COUNT():统计行数
AVG():求平均
SUM():求和
MIN():求最小
MAX():求最大
除了COUNT()函数之外,聚合函数都会忽略NULL;

COUNT(*)、COUNT(1)、COUNT(列名)的区别

COUNT(1)和COUNT(*): 当表的数据量大些时,对表分析之后,使用COUNT(1)还要比使用COUNT()用时多了!
从执行计划来看,COUNT(1)和COUNT(
)的效果是一样的,但是在表做过分析之后,COUNT(1)会比COUNT()的用时少些(1w以内的数据量),不过差不了多少。如果COUNT(1)是聚索引id,那肯定是COUNT(1)快,但是差是很小的。
因为COUNT(
),自动会优化指定到那一个字段,所以没必要去COUNT(1),用COUNT(),SQL会帮你完成优化,因此COUNT(1)和COUNT()基本没区别。
COUNT(1)和COUNT(字段):
COUNT(1)会统计表中所有的记录数,包含字段为NULL的记录。
COUNT(字段)会统计该字段在表中出现的次数,忽略了字段为NULL的情况。

三者的区别:
COUNT(*)包含了所有列,相当于所有行,在统计结果时不忽略NULL。
COUNT(1)包含了忽略所有列,用1代表代码行,在统计结果时不忽略NULL。
COUNT(字段)只包含了列名的那一列,在统计结果时忽略NULL。

在执行效率上
如果目标列名是主键:COUNT(列名)>COUNT()||COUNT(1)
如果目标列名非主键:COUNT(列名)<COUNT(
)||COUNT(1)
如果表多列都无主键:COUNT(1)>COUNT(*)>COUNT(列名)
因此最优的查行语法为:SELECT COUNT(主键列)

数值型函数

函数名称作用
ABS()求绝对值
SQRT()求平方根
POW()或者POWER()返回参数的幂次方
MOD()求余数
CEIL()或者CEILING()向上取整
ROUND()四舍五入
RAND()生成一个0-1之间的随机数
FLOOR()向下取整
SIGN()返回函数的符号

例如:随机生成0-99999之间的一个数字

SELECT FLOOR(100000*RAND());

字符串函数

函数名称作用
LENGTH返回字符串长度
CHAR_LENGTH返回字符串的字节长度
CONCAT合并字符串长度,返回结果为连接参数产生的字符串,参数可以使用一个或多个
INSERT(str,pos,len,newstr)替换字符串函数
LOWER将字符串中的字母转换为小写
UPPER将字符串中的字母转换为大写
LEFT(str,len)从左侧进行截取,返回字符串左边若干个长度的字符
RIGHT(str,len)从右侧进行截取,返回字符串右边若干个长度的字符串
TRIM删除字符串左右两侧空格
REPLACE(s,s1,s2)字符串替换函数,返回替换后的新字符串
SUBSTRING(s,n,len)截取字符串,返回从指定位置指定长度的字符串
REVERSE字符串逆序函数返回与原字符串顺序相反的字符串
STRCMP(parem1,parem2)比较两个表达式的顺序,如果parem1小于parem2,则返回-1,相等返回0,大于返回1
LOCATE(sub,str)返回第一次出现目标字符串的索引位
INSTR(sub,str)返回最后一次出现目标字符串的索引位

日期和时间函数

函数名称作用
CURDATE()
CURRENT_DATE()
CURRENT_DATE
返回当前系统的日期
CURTIME()
CURRENT_TIME()
CURRENT_TIME
返回当前系统时间的时分秒
NOW()返回当前系统的日期和时间值
SYSDATE()返回当前系统的日期和时间值
DATE(parem)返回指定日期时间的日期部分
TIME(parem)返回指定日期时间的时间部分
MONTH(parem)返回指定日期的月份
MONTHNAME(parem)返回指定日期的月份英文名
DAYNAME(paremr)返回指定日期对应的星期几的英文名
YEAR(parem)返回年份,返回值范围为1970-2069
DAYOFWEEK(parem)返回指定日期对应的一周的索引位,也就是星期数,注意周日时开始日,为1
WEEK(parem)返回指定日期是一年中的第几周,返回值的范围是否为0-52或1-53
DAYOFYEAR(parem)返回指定日期是一年中的第几天,返回值范围是1-366
DAYOFMONTH(parem) 和 DAY(parem)返回指定日期是一个月中第几天,返回值范围为1-31
DATEDIFF(parem,parem)返回两个日期之间的天数

例如:计算自己出生到现在多久了?

SELECT DATEDIFF(NOW(),'2003-02-27');

例如:计算自己多大了?

SELECT CEIL(DATEDIFF(NOW(),'2003-02-27')/365);

流程控制函数

函数名称作用
IF(expr,v1,v2)判断,流程控制,当expr = true时返回v1,否则返回v2
IFNULL(v1,v2)判断是否为空,如果v1不为NULL,则IFNULL函数返回v1,否则返回v2
CASE搜索语句

例如:使用IF函数进行条件判断

SELECT IF(12,2,3);————2
IF(1<2,'YES','NO');————YES
IF(STRCMP('test','test1'),'NO','YES');————YES

CASE语法:

CASE <表达式>WHEN<值1> THEN<结果1>WHEN<值2> THEN<结果2>WHEN<值3> THEN<结果3>WHEN<值4> THEN<结果4>.....ELSE<结果5>

例如:

SELECT StudentName,CASE GradeId WHEN 1 THEN "大一" WHEN2 THEN "大二" ELSE "其他" END AS "班级信息" 
FROM student;

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Linux安装宝塔,并实现公网远程登录宝塔面板【内网穿透】

目录 前言 1. 安装宝塔 2. 安装cpolar内网穿透 3. 远程访问宝塔 4. 固定http地址 5. 配置二级子域名 6. 测试访问二级子域名 前言 宝塔面板作为建站运维工具&#xff0c;它支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能&#xff0c;可提高…

SpringBoot结合Redisson实现分布式锁

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;啥技术都喜欢捣鼓捣鼓&#xff0c;喜欢分享技术、经验、生活。 &#x1f60e;人生感悟&#xff1a;尝尽人生百味&#xff0c;方知世间冷暖。 &#x1f4d6;所属专栏&#xff1a;Sp…

【已解决】opencv 交叉编译 ffmpeg选项始终为NO

一、opencv 交叉编译没有 ffmpeg &#xff0c;会导致视频打不开 在交叉编译时候&#xff0c;发现在 pc 端能用 opencv 打开的视频&#xff0c;但是在 rv1126 上打不开。在网上查了很久&#xff0c;原因可能是 交叉编译过程 ffmpeg 造成的。之前 ffmpeg 是直接用 apt 安装的&am…

css自学框架之选项卡

这一节我们学习切换选项卡&#xff0c;两种切换方式&#xff0c;一种是单击切换选项&#xff0c;一种是鼠标滑动切换&#xff0c;通过参数来控制&#xff0c;切换方法。 一、参数 属性默认值描述tabBar.myth-tab-header span鼠标触发区域tabCon.myth-tab-content主体区域cla…

FFmpeg 命令:从入门到精通 | FFmpeg 基本介绍

FFmpeg 命令&#xff1a;从入门到精通 | FFmpeg 基本介绍 FFmpeg 命令&#xff1a;从入门到精通 | FFmpeg 基本介绍FFmpeg 简介FFmpeg 基础知识复用与解复用编解码器码率和帧率 资料 FFmpeg 命令&#xff1a;从入门到精通 | FFmpeg 基本介绍 本系列文章要解决的问题&#xff1…

掌动智能:UI自动化测试工具的重要性和应用

在软件开发过程中&#xff0c;测试是至关重要的环节。而UI自动化测试工具则成为了测试团队提高效率、降低成本、保证软件质量的重要利器。本文将介绍UI自动化测试工具的概念和重要性&#xff0c;并探讨其在软件开发中的应用和好处。 一、UI自动化测试工具的概念 UI自动化测试工…

ASUS华硕飞行堡垒5笔记本FX504GM_FX80GM原装出厂Windows10系统

系统自带所有驱动、出厂主题壁纸、系统属性华硕专属LOGO标志、Office办公软件、MyASUS华硕电脑管家等预装程序 下载链接&#xff1a;https://pan.baidu.com/s/1C8vPvqiwqoUY3PxC915LXg?pwdv079

18.示例程序(编码器接口测速)

STM32标准库开发-各章节笔记-查阅传送门_Archie_IT的博客-CSDN博客https://blog.csdn.net/m0_61712829/article/details/132434192?spm1001.2014.3001.5501 main.c #include "stm32f10x.h" // Device header #include "Delay.h" #incl…

如何在 Elasticsearch 中使用 Openai Embedding 进行语义搜索

随着强大的 GPT 模型的出现&#xff0c;文本的语义提取得到了改进。 在本文中&#xff0c;我们将使用嵌入向量在文档中进行搜索&#xff0c;而不是使用关键字进行老式搜索。 什么是嵌入 - embedding&#xff1f; 在深度学习术语中&#xff0c;嵌入是文本或图像等内容的数字表示…

智能合约漏洞,BEVO 代币损失 4.5 万美元攻击事件分析

智能合约漏洞&#xff0c;BEVO 代币损失 4.5 万美元攻击事件分析 一、事件背景 北京时间 2023 年 1 月 31 日&#xff0c;在 twitter 上看到这样一条消息&#xff1a; BEVO 代币被攻击&#xff0c;总共损失 45000 美元&#xff0c;导致 BEVO 代币的价格下跌了 99%。 有趣的是…

2023年山东省安全员C证证考试题库及山东省安全员C证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年山东省安全员C证证考试题库及山东省安全员C证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大…

JAVA 学习笔记 2年经验

文章目录 基础String、StringBuffer、StringBuilder的区别jvm堆和栈的区别垃圾回收标记阶段清除阶段 异常类型双亲委派机制hashmap和hashtable concurrentHashMap 1.7和1.8的区别java的数据结构排序算法&#xff0c;查找算法堆排序 ThreadLocal单例模式常量池synchronizedsynch…

JavaScript系列从入门到精通系列第十四篇:JavaScript中函数的简介以及函数的声明方式以及函数的调用

文章目录 一&#xff1a;函数的简介 1&#xff1a;概念和简介 2&#xff1a;创建一个函数对象 3&#xff1a;调用函数对象 4&#xff1a;函数对象的普通功能 5&#xff1a;使用函数声明来创建一个函数对象 6&#xff1a;使用函数声明创建一个匿名函数 一&#xff1a;函…

tiny模式基本原理整合

【Tiny模式】的基本构成 M【首头在首位】 U【/】 V【HTTP/】 Host H【真实ip】 XH \r回车 \n换行 \t制表 \ 空格 一个基本的模式构成 [method] [uri] [version]\r\nHost: [host]\r\n[method] [uri] [version]\r\nHost: [host]\r\n 检测顺序 http M H XH 有些地区 XH H M 我这边…

MySQL - mysql服务基本操作以及基本SQL语句与函数

文章目录 操作mysql客户端与 mysql 服务之间的小九九了解 mysql 基本 SQL 语句语法书写规范SQL分类DDL库表查增 mysql数据类型数值类型字符类型日期类型 示例修改&#xff08;表操作&#xff09; DML添加数据删除数据修改数据 DQL查询多个字段条件查询聚合函数分组查询排序查询…

python模拟表格任意输入位置

在表格里输入数值&#xff0c;要任意位置&#xff0c;我找到了好方法&#xff1a; input输入 1. 行 2. 列输入&#xff1a;1 excel每行输入文字input输入位置 3.2 表示输入位置在&#xff1a;3行个列是要实现一个类似于 Excel 表格的输入功能&#xff0c;并且希望能够指定输入…

oracle GBK未定义编码使用Unicode写入特殊字符e000迁移lightdb-x测试

E:\HS\LightDBSVN\23.3sql文件\迁移工具\caofa\config\application.properties gbk-->uft8: logging.configclasspath:log4j2.xml # ???? etl.global.sourceDatabaseoracle etl.global.targetDatabaselightdb etl.global.showSqlfalse etl.global.fastFailfalse etl.g…

数据结构之双链表

双链表 1.复杂方法的图分析2.My_LinkedList代码3.接口MY_lIST4.测试类 1.复杂方法的图分析 2.My_LinkedList代码 package My_liNKEDlIST;public class My_LinkedList implements MY_lIST{static class ListNode{public int val;public ListNode prev;public ListNode next;pub…

git 分支管理进阶

目录 1. merge 命令&#xff1a;git merge A 2. rebase 命令&#xff1a;git rebase A 命令&#xff1a;git rebase B A 3. 指针——分支切换 3.1哈希值方式 3.2相对引用 3.3综合练习 4.撤销 4.1 本地分支 reset 4.2 远程分支 revert 5.Cherry-pick与交互式的 …

十天学完基础数据结构-第三天(数组(Array))

数组的基本概念 数组是一种线性数据结构&#xff0c;用于存储相同数据类型的元素。它具有以下基本概念&#xff1a; 元素&#xff1a;数组中的每个数据项称为元素&#xff0c;可以是整数、浮点数、字符等。 索引&#xff1a;每个元素在数组中都有一个唯一的位置&#xff0c;称…