MYSQl基础操作命令合集与详解

news2024/11/18 5:48:15

MySQL入门

先来个总结

SQL语言分类

  1. DDL(Data Definition Language) - 数据定义语言:
  • 用于定义和管理数据库结构,包括创建、修改和删除数据库对象。

  • 示例:CREATE, ALTER, DROP等语句。

  1. DML(Data Manipulation Language) - 数据操纵语言:
  • 用于操作数据库中的数据,包括插入、更新和删除数据。

  • 示例:INSERT, UPDATE, DELETE等语句。

  1. DQL(Data Query Language) - 数据查询语言:
  • 用于从数据库中查询数据。

  • 示例:SELECT语句。

  1. TCL(Transaction Control Language) - 事务控制语言:
  • 用于管理数据库中的事务,包括提交和回滚事务。

  • 示例:COMMIT, ROLLBACK等语句。

  1. DCL(Data Control Language) - 数据控制语言:
  • 用于授权和权限管理。

  • 示例:GRANT, REVOKE等语句。

这些类别帮助组织 SQL 语言的不同方面和功能。DDL 主要关注数据库结构的定义,DML 关注数据的操作,DQL 关注数据的查询,TCL 关注事务管理,而 DCL 则关注数据库的安全性和权限控制。在实际使用中,通过结合这些语言元素,可以有效地管理和操作数据库。

DDL-操作数据库

查询:show databases;

创建数据库:create databases 数据库名称;

创建数据库(判断,如果不存在则创建):create database if not exists 数据库名称;

删除数据库:drop database 数据库名称;

删除数据库判断:drop database if exists 数据库名称;

使用数据库:use 数据库名称;

查看当前使用的数据库:select database();

DDL-操作表

查询当前数据库下所有表名称:show tables;

查询表结构:desc 表名称;

创建表:create table 表名 (字段名1 数据类型1,字段2 数据类型2...);


删除表:drop table 表名;

删除表时判断:drop table if exists 表名;


修改表名:alter table 表名 rename to 新表名;

添加一列:alter table 表名 add 列名 数据类型;

修改数据类型:alter table 表名 modify 列名 新数据类型;

修改列名和数据类型:alter table 表名 change 列名 新列名 新数据类型;

删除列:alter table 表名 drop 列名;

DML-添加数据

添加数据

给指定列添加数据:insert into 表名(列名1,列名2...) values (值1,值2,...);

给全部列添加数据:insetr into 表名 values (值1,值2,...);

批量添加数据:insert into 表名 (列名1,列名2,...) values(值1,值2,...),(值1,值2,...)...;

insert into 表名 values(值1,值2,...),(值1,值2,...),(值1,值2,...)...;

DML-修改数据

修改表数据:update 表名 set 列名1=值1,列名2=值2,... where 条件;

删除数据:delete from 表名 where 条件;

删除表内所有数据方法1:delete from 表名;

删除表内所有数据方法2:truncate table 表名;

DQL-基础查询

查询多个字段:select 字段列表 from 表名;select * from 表名;

去除重复记录:select distinct 字段列表 from 表名;

起别名:as as也可以省略

DQL-条件查询

语法:select 字段列表 from 表名 where 条件列表;

准确查询,模糊查询,区间匹配

条件:

DQL-排序查询

普通排序查询:select 字段列表 from 表名 order by 排序字段名1 排序方法,排序字段名2 排序方法...;

排序方法:asc 升序排序(默认) desc 降序排序

tips:如果有多个排序条件,当前面的条件值一致时,才会根据第二条件进行排序

DQL-聚合函数查询

概念:将一列数据作为一个整体,进行纵向计算。

分类:

语法:select 聚合函数名(列名)from 表

null 值不参与所有聚合函数运算

DQL-对结果的二次处理

分组select 字段列表 from 表名 where 分组前条件限定 group by 分组字段名 having 分组后条件过滤

去重:select distinct 列名 from 表名;

截取:select 列名 from 表名 limit a, b;

多表查询

SELECT
    column1, column2, ...
FROM
    table1
JOIN
    table2 ON condition
[JOIN
    table3 ON condition]
WHERE
    condition;
//其中:
column1, column2, ... 是你想要查询的列。
table1, table2, table3, ... 是要查询的表。
condition 是连接条件,它定义了如何将表关联起来。
具体的连接条件可以是各种形式,比如等值连接、不等值连接等,具体取决于你的需求。常见的JOIN类型包括INNER JOIN、LEFT JOIN、RIGHT JOIN等。

克隆备份表

复制格式,复制表结构生成新的表create table 表名 like 被克隆的表名;

复制数据,将数据表的数据生成到新的表中 create table 表名 (select * from 被克隆的表名);

备份内容,将内容复制到结构一直的表中insert into 表名 select * from 被克隆的表名;

查看表的结构,索引等信息

show create table 表名\G;

这个命令中的 \G 是用来改变输出格式的,它会以更易读的方式显示结果,将结果每行一个字段,而不是标准的表格式输出。

接下来是详解

库命令:

1.查看已有的库:

show databases;

2.创建库:

create database 库名;

3.删除库:

drop database 库名;

表命令:

1.创建表:

create table 表名(
    列名 列类型 约束条件
  );

2.删除表:

drop table 表名

3.修改表:

1、修改表名:
alter table 旧名字 rename to 新名字;
2、添加一列:
alter table 表名 add column 新列名 新列类型 [约束条件];
3、如何修改一列:

修改一列的范围:列名、列类型、约束条件都能改。这似乎有点像替换。

alter table 表名 change 旧列名 新列名 新列类型 [约束条件];
4.删除一列:
alter table 表名 drop column 列名;

增 :

1、缺省插入:

insert into 表名(需要赋值的列) values (要插入的数据);

例:尝试在t_stu表中插入一行数据

insert into  **关键字独占一行,且顶头**

       t_stu   **语句参数独占一行,缩进一格**

values

        (‘001’, ‘zhangsan’, ‘c1’, 0, ‘12312312312’,

        ‘304’, ‘here’, ‘2022-06-27’);

  • 关于这里的插入,不同的数据类型在values后的括号中出现的形式是不一样的

  • 数字:是直接出现的,不需要任何的修饰

  • 字符串:字符串需要使用单引号进行包裹表示字符串的范围

  • 时间:针对时间的赋值可以使用规范格式的字符串,

  • 可用的格式 2022-06-27 2022 / 06 / 07 20220627

缺省插入并不是真的要少插入数据,它存在的目的和后续主要用法是用来标记value中出现的数据的顺序

在实际开发中,一张表不可能只交给一个程序员进行维护,你可能回去访问其他人或者其他系统中的表,当表的字段较多的时候你的value中数据的次序就很难把握了

2.批量插入:
insert into 表名 values (第一行数据), (第二行数据), …… ;

这只是MySQL中可以用的方式

3.中文插入
  • 先设置的方式是输入命令 set names gbk

insert into  

                t_stu(s_no, s_name)

values

                (‘006’, ‘张三’);
  • 直接插入是会报错的,windows系统默认字符集是gbk,终端(黑色的框体)是操作系统提供的,所以在终端中出现的中文字符集默认按照系统字符集就是gbk

  • 数据库在安装的时候就将字符集设置为utf8,这样就是在用utf8去解析gbk的文字,这样就会导致乱码,在MySQL中就直接是报错。

  • 那么在这里就需要通过sql命令将终端中接受的字符编码改成gbk的,让MySQL数据库知道要按照GBK的格式读取将要插入的数据,虽然读的数据是GBK的,保存在数据库中的还是utf8的。

  • 设置的方式是输入命令 set names 字符集的名字

  • 在这里使用的就是 set names gbk; 是同时管理输入和输出两个方向的字符集设置。

  • 它的作用范围只在本次终端连接中,重新连接或者关掉重开都会使这个命令失效。

删:

1.删除所有数据:

delete from 表名;

#DELETE清空表后,返回的结果内有删除的记录条目; DELETE 工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除 所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。

truncate table 表名;

#TRUNCATE清空表后,没有返回被删除的条目: TRUNCATE 工作时是将表结构按原样重新建立, 因此在速度上TRUNCATE会比DELETE清空表快;使用TRUNCATE TABLE 清空表内数据后, ID会从1开始重新记录

2.where约束删除

delete from 表名 where 约束条件;

改:

1.将整张表中这一列的值都替换为新值

update 表名 set 列名=新值;

update
  t_stu
set
  s_class = ‘c2’;

2.只有符合where的判断的行才会受到影响

update 表名 set 列名=新值 where 约束条件;

update
  t_stu
set
  s_class=’c1’
where
  s_name = ‘lisi’;

3.update语句每次可以修改不止一列的数据

例如:同时修改lisi的性别和手机号,将性别设为1 手机号设为123

update
       t_stu

set
       s_gender = 1, s_phone=’123’
where
        s_name=’lisi’

当出现多列要同时修改的时候,列与列之间用逗号隔开

 

查:

从一张指定的表中获取指定列的数据:select 需要被查的列 from 表名;

1.准确查询

准确查询使用 = 进行判断

where s_name=’李四’;

where s_no = ‘001’;

给出一个确定的值,必须和这个值完全一致才能通过

2.模糊查询

模糊查询使用关键字like替换了=like这里翻译成相似

需要搭配通配符:_表示一个任意字符 %表示0或多个任意字符

where s_name like ‘%a%’;

//只要出现a即可,a的前后有没有内容,有什么内容都不重要

select * from t_stu where s_name like ‘%a%’;

3.空值匹配

null在mysql是一个特殊的值,任何运算符只要有一侧是null结果就是null

针对null的判断mysql提供了专有关键字 is 和 is not

select * from t_stu where s_dorm_no  is  null;

select * from t_stu where s_dorm_no  is  not null;

4.区间匹配

其实就是大于小于的范围

where age > 10; //大于,是不能包括10的

where age < 10; //小于,也是不包括10的

where age >= 10;

where age <= 10; //包括10的小于等于

同时实现大于小于,例如找出年龄在5~10岁之间的学生信息

where 5 <= age and age <= 10;

使用and这个逻辑运算符连接两个判断式的结果

mysql中的逻辑运算符

与 and

当and的两侧都是true的时候and返回true否则返回false

where 5 <= age and age <= 10;

年龄要大于5的同时也小于10

或 or

当or的两侧都是false的时候or返回false,否则返回true

where 5 <= age or age <= 10;

年龄大于5或者小于10都可以

非 not

原来是true变成false,原来是false变成true

枚举

列出所有需要的样本

例如找出年龄是5或10岁的学生信息

where age = 5 or age = 10;

where age in (5, 10);

()就是枚举范围,使用介词in连接到列上,括号中写枚举值,值和值之间用逗号隔开

请找出在2022年6月份出生的学生信息

select * from tstu where sbirthday between ‘2022-06-01’ and ‘2022-06-30’;

为什么日期可以比大小还可以形成区间?

这里要先理解计算机中是如何看待时间的,计算机并不是记录当前时间,而是记录现在这个时间点距离时间原点(1970年1月1日0时0分0秒)经过了多少毫秒数。

你可以认为6月1日小于6月2日,因为2日的时间点距离时间原点更远,毫秒数更大。

既然时间已经转化为了数字进行保存,数字之间比较大小形成区间也就好理解了。

对查询结果的二次处理

1.去重:select sclass from tstu;

关键字distinct进行去重:select distinct s_class from t_stu;

2.排序:order  by
//希望根据生日对学生信息进行排序
select * from t_stu order by s_birthday;

//默认顺序是正序(从小到大)
//可以在排序列的后面使用asc正序(从小到大)desc倒序(从大到小)
select * from t_stu order by s_birthday desc;
//tips:asc正序是默认值,可写可不写

//请尝试根据学生的姓名进行排序,并尝试自行找出字符串排序的规律
//tips:当对字符串进行排序的时候,MySQL会进行逐位比较
//aa、ab 会先判断第一位上的a是否有顺序,如果是相同的,再判断下一位,根据ab的字母顺序进行排列
//aa会在aab之前,ab会在ba之前
3.截取:limit a, b;
limit a, b;
//从第a行开始截取,取b行数据

limit 1, 3;
//从第1行开始截取,取3行数据,实际取值是(2,3,4)

//a表示的行不会进入结果
//select * from t_stu limit 1, 3;

 

多表查询:

请按照给出的表名和列名,分配合适的数据类型创建这两表
t_user (u_id, u_name, u_grade, u_class);
t_score(s_id, u_id, s_subject, s_score);
create table t_user(
u_id int primary key,
u_name varchar(50),
u_grade int,
u_class int
);
insert into t_user values(1, '张三', 1, 1);
insert into t_user values(2, '李四', 1, 1);
insert into t_user values(3, '李世民', 2, 1);
insert into t_user values(4, '成吉思汗', 2, 2);
insert into t_user values(5, '李白', 2, 2);
insert into t_user values(6, '张飞', 3, 1);
insert into t_user values(7, '武则天', 3, 1);
create table t_score(
s_id int primary key,
u_id int,
s_subject varchar(50),
s_score int
);

insert into t_score values(1, 1, '语文', 80);
insert into t_score values(2, 2, '数学', 90);
insert into t_score values(3, 3, '外语', 70);
insert into t_score values(4, 4, '外语', 95);
insert into t_score values(5, 5, '语文', 60);
insert into t_score values(6, 6, '数学', 30);
insert into t_score values(7, 7, '语文', 20);
insert into t_score values(8, 1, '数学', 50);

请尝试查出每个人的语文分数(要求输出人名和成绩)

名字在t_user表中,成绩在t_score表中,只查一张表是必然凑不齐要求的数据的,必须要同时查询多张表,并将表中的数据进行整合才能达到要求。
1自然连接
  • 在from关键字的后面,可以写不止一张表,需要多表查询的时候使用逗号隔开多张表

  • select * from t_user, t_score;

  • 在没有约束条件的情况下,直接连接的两张表查询结果是两张表内容的笛卡尔积

  • 笛卡尔积:每张表中的每一行对应另一张的每一行。指从两个或多个表中获取所有可能的组合

  • 当tuser有7行数据,tscore有8行数据的时候,查询结果就是7*8=56行结果,且这个结果是没有意义的,用户表和成绩表之间的关联应该放在u_id相等上,只有用户id相同才能表示这个成绩是这个用户考到的,直接逐行对应是没有逻辑的。

  • 自然连接强调的是需要在where中使用判断式从笛卡尔积中筛选出符合要求的数据

select
  u_name, s_score
from
  t_user, t_score //将两张表同时写在from的后面
where
  t_user.u_id = t_score.u_id; //再使用where从笛卡尔积中筛选数据

2内连接
  • 如何杜绝笛卡尔积的产生,直接查询表中的数据呢?需要使用连接,连接指的是将两张表在一定条件下整合成一张临时表,后续的查询操作不是直接查询数据表,而是这张整合后的临时表。
select
  u_name, s_score
from
  t_user inner join t_score on t_user.u_id = t_score.u_id;

A表 join B表 on 在某种条件下

在一般情况下,都认为内连接查询的效率是要高于自然连接的,因为它会先整合两张表中的数据从而杜绝笛卡尔积的产生,可以认为在刚才的例子中就没有出现那个56行的笛卡尔积的结果,而是直接出现了8行的最终结果(在连接产生的临时表中)

tips:inner这个关键字是可写可不写的。

3、外连接
  • 外连接也是连接查询,外连接的重点是区分左右表,就分出了左外连接和右外连接。
select
  u_name, s_score
from
  t_user inner join t_score on t_user.u_id = t_score.u_id
where
  s_subject = '语文';

在上面这个查询中会发现,由于部分学生没有语文成绩,所以在查询条件约束了考试科目的时候,这些学生由于uid = uid的判断式无法成立导致没有出现在最终的结果中。

外连接就可以将一侧的表设为主表,不管连接条件时怎样的,主表内容一定会完整显示。

t_user inner join t_score
//t_user表此刻在左侧,它就是左表
//t_score表在右侧,它就是右表
//如果使用左外连接,左表t_user就是主表,它的内容一定会完整的展示反之亦然。

select
  u_name, s_score
from
  t_user left outer join t_score on t_user.u_id = t_score.u_id and s_subject = '语文';

 

这种查询后,左表中的内容完整的显示了(结果中有完整的7个user),如果有无法对应的右表中的内容用null进行占位(表示没有对应值)

再来个练习

请找出英语考试没有分数的学生的姓名
select
  u_name
from
  t_user left outer join t_score on t_user.u_id = t_score.u_id and s_subject = '外语'
where
  s_score is null;
4、子查询
  • 将多条语句写在一个语句中同步执行。

  • 例如:请查出二年级二班的学生的成绩

  • 分析一下:查询的条件年级和班级都是在tuser这张表中的,成绩是在tscore表中的。

  • 能否将这题中的查询分成两个部分

  • 1、根据班级和年级查出学生的编号

  • select uid from tuser where ugrade = 2 and uclass = 2;

  • 2、根据这些编号查出对应的成绩

  • select sscore from tscore where u_id in (4, 5);

  • 第二部的查询条件 4,5这两个值就是第一步的查询的结果,那能否直接将第一步查询的语句写在这个括号中代表4,5这两个值呢?

select s_score from t_score where u_id in (
  select u_id from t_user where u_grade = 2 and u_class = 2
);

子查询实际上就是将一次查询的结果当做下一次查询的组成部分,这个组成部分可以是多表查询中的一张表也可以是where约束条件中的判断依据

tips:子查询是上面所有多表查询中效率最低的一种,在编码中要尽量回避,但是不是不能用,当sql的逻辑过于复杂用一条语句实在难以实现的时候可以用子查询进行逻辑的简化(将一道复杂的逻辑分解为多个简单的逻辑,分别用sql实现然后组装起来形成一个子查询)

对于sql的优化,其中有一点就是将子查询进行了再次组成一个其他类型的多表查询。

例、统计每个部门年龄最大的员工的姓名

select
  e_name
from
  t_emp, &nbsp;(select 
             e_dept_id, max(e_age) maxage
           from
             t_emp
           group by
             e_dept_id) t
 where
   t_emp. e_dept_id = t. e_dept_id 
 and
   t_emp.e_age = t. maxage;

让我把这个查询解析一下:

  1. 主查询:
  • 选择了表 t_emp 中的 e_name 列。

  • 没有直接指定表的来源,而是在查询中使用了表别名 t_emp

  1. 子查询:
  • 内部查询了表 t_emp,按照 e_dept_id 进行分组,并找出每个部门中年龄最大的员工。

  • 使用了聚合函数 MAX(e_age) 找到每个部门的最大年龄。

  • 选取了 e_dept_id 和每个部门的最大年龄,这两列作为结果集。

  1. 连接条件:
  • 在主查询中,使用了表别名 t_emp 和子查询 t

  • t_emp.e_dept_id = t.e_dept_id 确保主查询中的部门ID与子查询中的部门ID相匹配。

  • t_emp.e_age = t.maxage 确保主查询中的员工年龄与子查询中的最大年龄相匹配。

综合起来,这个查询的目的是从 t_emp 表中选取每个部门中年龄最大的员工,并返回这些员工的姓名(e_name)。

tips:1、子查询除了可以作为查询条件还可以作为临时表充当查询的数据来源

2、表和列都可以在查询中起别名,方式是用空格加上别名

mysql中的函数

函数在mysql中有两个大的类型

1、单行函数

一般是对查询结果进行后处理

例如:获取当前时间

select now();

2、聚合函数

单行函数是对一个值进行处理,聚合函数是将一组值进行统一的计算最后返回一个值。

max :取最大值

select max(sscore) from tscore;

本来t_score表中有多个成绩的值,使用max表示仅取最大值这一列的值经过计算之后只会留下最大的那一个。

min:取最小值

avg:取平均值

count 计数

sum 总和

来点练习

1、找出最大值
select max(s_score) from t_score;

2、找出最大值对应的u_id
select u_id from t_score where s_score = 最大值;

3、找出u_id对应的u_name
select u_name from t_user where u_id = 上一步查出来的
select u_name from t_user where u_id = (
  select u_id from t_score where s_score = (
    select max(s_score) from t_score
  )
);

尝试整合一下多个子查询,将代码转为
1、查出最大值
select max(s_score) from t_score;

2、根据成绩找人名字
自然连接版
select
  u_name
from
  t_user, t_score
where
  t_user.u_id = t_score.u_id and
  s_score = (select max(s_score) from t_score);

内连接版
select
  u_name
from
  t_user inner join t_score on t_user.u_id = t_score.u_id
where
  s_score = (select max(s_score) from t_score);

左外连接版
select
  u_name
from
  t_user left outer join t_score on t_user.u_id = t_score.u_id
where
  s_score = (select max(s_score) from t_score);
1、统计平均分
select avg(s_score) from t_score;

2、统计每个学科的平均分
select s_subject ,avg(s_score) from t_score group by s_subject;

3、统计每个年级的平均分
select
  u_grade, avg(s_score)
from
  t_user, t_score
where
  t_user.u_id = t_score.u_id
group by
  u_grade;

tips:分组查询是特殊的一种查询,它查出的数据不是表中直接存在的数据,而是分组后再次经过分组函数统计的数据

tips:当使用分组查询的时候select的后面只能出现被分组的列和聚合函数

以下面的代码为例
select
  s_id, u_grade, avg(s_score)
from
  t_user, t_score
where
  t_user.u_id = t_score.u_id
group by
  u_grade;

u_grade是分组的依据,就是被分组的列,每一行的查询结果都是根据它的值分出来的一个组,所以u_grade的值和查询结果中的行是一一对应的,聚合函数是在这一组的基础上进行计算得到分组组内的计算结果,所以这个结果也是和当前组一一对应的。

s_id就不是,它和这一组没有任何关系,每个年级有多个考试结果,他们都有自己的s_id不存在一个一一对应的关系,这个值和计算出来的集合函数的返回值也没有数值上的关系。所以s_id在这里不管查出了什么数据都是“巧合”。巧合就是错误

分组查询

group by

:分组查询是特殊的一种查询,它查出的数据不是表中直接存在的数据,而是分组后再次经过分组函数统计的数据

:当使用分组查询的时候select的后面只能出现被分组的列和聚合函数

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

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

相关文章

FC-13A(用于汽车应用的kHz范围晶体单元,低轮廓贴片)

FC-13A晶体非常适合用在汽车导航系统设计中的应用&#xff0c;是一种具有优异的频率性能和AEC-Q200标准认证的汽车工业级高精度晶体,FC-13A是一款尺寸为3.2 1.5 0.9mm&#xff0c;频率范围32.768KHz耐高温晶振&#xff0c;频率温度系数仅为-0.04ppm/℃&#xff0c;并且其老化…

Java基础面试题小结

基础面试题 Java语言简介 Java是1995年由sun公司推出的一门高级语言&#xff0c;该语言具备如下特点: 简单易学&#xff0c;相较于C语言和C&#xff0c;没有指针的概念&#xff0c;所以操作和使用是会相对容易一些。平台无关性&#xff0c;即Java程序可以通过Java虚拟机在不…

牛客网SQL训练2—SQL基础进阶

文章目录 一、基本查询二、数据过滤三&#xff1a;函数四&#xff1a;分组聚合五&#xff1a;子查询六&#xff1a;多表连接七&#xff1a;组合查询八&#xff1a;技能专项-case when使用九&#xff1a;多表连接-窗口函数十&#xff1a;技能专项-having子句十一&#xff1a;技能…

vue 使用 Echarts做地图及飞线效果

前言&#xff1a; 效果图 一. 项目中安装以及引入Echarts 1.1 npm 命令安装echarts库 npm install echarts --save 1.2 yarn命令安装echarts库 yarn add echarts 1.3 引用 a. 在使用页面上引入 在Vue组件的script标签中引入echarts库 使用 echarts import * as echarts f…

flowable之三 启动一个流程并跟踪

1. 背景介绍 当我们部署一个流程并启动后&#xff0c;Flowable会按照既定流程定义及进行节点处理以及自动流转&#xff0c;从一个节点执行到下一个节点&#xff0c;直至结束。在此过程中&#xff0c;系统如何处理BPMN XML文件&#xff1f;节点如何进行流转&#xff1f;本文对f…

衡兰芷若成绝响,人间不见周海媚(4k修复基于PaddleGan)

一代人有一代人的经典回忆&#xff0c;1994年由周海媚、马景涛、叶童主演的《神雕侠侣》曾经风靡一时&#xff0c;周海媚所诠释的周芷若凝聚了汉水之钟灵&#xff0c;峨嵋之毓秀&#xff0c;遇雪尤清&#xff0c;经霜更艳&#xff0c;俘获万千观众&#xff0c;成为了一代人的共…

柔性数组(结构体成员)

目录 前言&#xff1a; 柔性数组&#xff1a; 给柔性数组分配空间&#xff1a; 调整柔性数组大小&#xff1a; 柔性数组的好处&#xff1a; 前言&#xff1a; 柔性数组&#xff1f;可能你从未听说&#xff0c;但是确实有这个概念。听名字&#xff0c;好像就是柔软的数…

鸿蒙小车之多任务调度实验

说到鸿蒙我们都会想到华为mate60&#xff1a;遥遥领先&#xff01;我们一直领先&#xff01; 我们这个小车也是采用的是鸿蒙操作系统&#xff0c;学习鸿蒙小车&#xff0c;让你遥遥领先于你的同学。 文章目录 前言一、什么是任务&#xff1f;为什么要有任务二、任务的状态三、任…

Axure自定义元件

目录 1.processOne的使用 ​编辑2.自定义元件的使用、 2.1如何自定义一个元件 2.2使用自定义元件 导语&#xff1a; Axure是绘制原型图的软件&#xff0c;但是我们很多时候不知道&#xff0c;画哪一个板块&#xff0c;所以流程图的绘制也是非常重要的 1.processOne的使用…

一些好用的VSCode扩展

可以在扩展这里直接搜索需要的扩展&#xff0c;点击安装即可。 1.Chinese 中文扩展&#xff0c;就是说虽然咱们懂点英语&#xff0c;但还是中文看着方便 2.Auto Rename Tag 当你重命名一个HTML 标签时&#xff0c;会自动重命名与他配对的HTML 标签 当你选择h4这个标签时&…

如何解决Windows 11黑屏的问题,让电脑“重见光明”

本页介绍了经过测试并证明有效的常见Windows 11黑屏故障的所有修复程序。 本页上的提示和解决方案适用于所有Windows 11设备,从台式电脑和笔记本电脑到微软的Surface二合一设备。 是什么导致Windows 11黑屏死机 在使用Windows 11时,显示器或屏幕明显关闭,通常被称为Window…

YOLOv8 图片目标计数 | 特定目标进行计数

全类别计数特定类别计数如何使用 YOLOv8 进行对象计数 有很多同学留言说想学 YOLOv8 目标计数。那么今天这篇博客,我将教大家如何使用 YOLOv8 进行对象计数。YOLOv8 是一种非常强大的对象检测模型,它可以识别图像中的各种对象。我们将学习如何利用这个模型对特定对象进行计数…

【日常笔记】notepad++ 正则表达式基本用法

一、场景 二、正则表达式--语法 2.1、学习基本的匹配字符&#xff1a; 2.2、学习特殊字符和量词&#xff1a; 2.3、学习转义字符 2.4、学习分组和捕获 2.5、区分大小写 和 匹配整个单词 2.6、引用分组 三、实战 ▶ 希望把课程目录中 -- 前面的都去掉 一、场景 希望把…

如何使用ArcGIS Pro裁剪影像

对影像进行裁剪是一项比较常规的操作&#xff0c;因为到手的影像可能是多种范围&#xff0c;需要根据自己需求进行裁剪&#xff0c;这里为大家介绍一下ArcGIS Pro中裁剪的方法&#xff0c;希望能对你有所帮助。 数据来源 本教程所使用的数据是从水经微图中下载的影像和行政区…

Java EE 多线程之 JUC

文章目录 1. Callable 接口2. ReentrantLock3. 信号量4. CountDownLatch JUC这里就是指&#xff08;java.util.concurrent&#xff09; concurrent 就是并发的意思 这个包里的内容&#xff0c;主要就是一些多线程相关的组件 1. Callable 接口 Callable 也是一种创建线程的方式…

Go 与 Rust:现代编程语言的深度对比

在快速发展的软件开发领域中&#xff0c;选择合适的编程语言对项目的成功至关重要。Go 和 Rust 是两种现代编程语言&#xff0c;它们都各自拥有一系列独特的特性和优势。本文旨在深入比较 Go 和 Rust&#xff0c;从不同的角度分析这两种语言&#xff0c;包括性能、语言特性、生…

你好!赫夫曼树【JAVA】

目录 1.简单介绍 2.术语 3.构建思路 4.创建节点类 5.创建赫夫曼树 6.前序遍历 7.小玩一把 1.简单介绍 赫夫曼树&#xff08;Huffman Tree&#xff09;又称最优二叉树&#xff0c;是一种带权路径长度最短的二叉树。它的构建主要用于数据压缩算法中&#xff0c;根据字…

【vue】jenkins打前端包时报错:第 8 行:cd: dist: 没有那个文件或目录

问题描述 jenkins打前端包时报错&#xff1a;第 8 行&#x1f4bf; dist: 没有那个文件或目录 Jenkins中 “Execute shell” 配置的脚本&#xff1a; echo $PATH node -v npm -v npm config set registry http://ued.edtsoft.com/ npm install npm run build:prod cd dist rm…

数据结构(七):树介绍及面试常考算法

一、树介绍 1、定义 树形结构是一种层级式的数据结构&#xff0c;由顶点&#xff08;节点&#xff09;和连接它们的边组成。 树类似于图&#xff0c;但区分树和图的重要特征是树中不存在环路。树有以下特点&#xff1a; &#xff08;1&#xff09;每个节点有零个或多个子节点…

牛客网BC100有序序列合并

思路&#xff1a; 运用归并排序&#xff1a; 假设给定我们两个都是升序的数组&#xff0c;要求我们要把这两个数组以升序的方式合并到一个数组中&#xff0c;则我们就可以在这两个数组中分别各拿取一个元素进行比较&#xff0c;将二者之间较小值先放在这个新数组中&#xff0c…