当前位置: 首页 > news >正文

数据库中的增删改查操作、聚合函数、内置函数、分组查询

数据库中的增删改查操作、聚合函数、内置函数、分组查询

  • CRUD简介
  • Create 新增
    • 语法
    • 示例
      • 单⾏数据全列插⼊
      • 单⾏数据指定列插⼊
      • 多⾏数据指定列插⼊
  • Retrieve 检索
    • 语法
    • ⽰例
      • 构造数据
    • Select
      • 全列查询
      • 指定列查询
      • 查询字段为表达式
      • 为查询结果指定别名
        • 语法
        • ⽰例
      • 结果去重查询
    • Order by 排序
      • 语法
      • ⽰例
    • Where 条件查询
      • 语法
      • ⽐较运算符
      • 逻辑运算符
      • ⽰例
        • 基本查询
        • AND和OR
        • 范围查询
        • 模糊查询
        • NULL的查询
    • 分⻚查询
      • 语法
      • ⽰例
  • Update 修改
    • 语法
    • 示例
    • Update 注意事项
  • Delete 删除
    • 语法
    • 示例
    • Delete注意事项
  • 截断表
    • 语法
    • 示例
    • Truncate注意事项
  • 插⼊查询结果
    • 语法
  • 聚合函数
    • 常⽤函数
    • COUTN
    • SUM
    • AVG
    • MAX
    • MIN
  • Group by 分组查询
    • 语法
    • 示例
    • having⼦句
    • Having 与Where 的区别
  • 内置函数
    • ⽇期函数
      • 示例
      • 参考链接
    • 字符串处理函数
      • 示例
      • 参考链接
    • 数学函数
      • 示例
      • 参考链接
    • 其他常⽤函数
      • 示例

CRUD简介

CURD是对数据库中的记录进⾏基本的增删改查操作:
• Create (创建)
• Retrieve (读取)
• Update (更新)
• Delete (删除)

Create 新增

语法

INSERT [INTO] table_name[(column [, column] ...)]
VALUES(value_list) [, (value_list)] ...value_list: value, [, value] ...

示例

# 创建一个用于演示的表
create table users(id bigint,name varchar(20) comment '用户名'
);

单⾏数据全列插⼊

• value_list 中值的数量必须和定义表的列的数量及顺序⼀致
• 字符串类型的值用英文的单引号包裹

# 插入第一条记录
# 字符串类型的值用英文的单引号包裹
insert into users values (1,'张三');# 插入第二条记录
insert into users values (2,'李四');# 查询结果
select * from users;

在这里插入图片描述

单⾏数据指定列插⼊

• value_list 中值的数量必须和指定列数量及顺序⼀致

# 指定了具体要插入的列
insert into users(id, name) values (3,'王五');# 查询结果
select * from users;

在这里插入图片描述
在这里插入图片描述
没有指定ld这一列时,只写一个name的值,ld这一列就会用默认的值去填充,这个默认值就是NULL

insert into users(name) values('王五');# 查询结果
select * from users;

在这里插入图片描述

多⾏数据指定列插⼊

• 在⼀条INSERT语句中也可以指定多个value_list,实现⼀次插⼊多⾏数据

# 每个value_list表示一行数据
insert into users(id, name) values (4,'赵六'),(5,'钱七');# 查询结果
select * from users;

在这里插入图片描述

Retrieve 检索

语法

SELECT[DISTINCT]select_expr [, select_expr] ...[FROM table_references][WHERE where_condition][GROUP BY {col_name | expr}, ...][HAVING where_condition][ORDER BY {col_name | expr } [ASC | DESC], ... ][LIMIT {[offset,] row_count | row_count OFFSET offset}]

⽰例

构造数据

-- 创建考试成绩表
DROP TABLE IF EXISTS exam;
CREATE TABLE exam (id bigint,name VARCHAR(20),chinese DECIMAL(3,1),math DECIMAL(3,1),english DECIMAL(3,1)
);
-- 插入测试数据
INSERT INTO exam (id,name, chinese, math, english) VALUES
(1,'唐三藏', 67, 98, 56),
(2,'孙悟空', 87.5, 78, 77),
(3,'猪悟能', 88, 98, 90),
(4,'曹孟德', 82, 84, 67),
(5,'刘玄德', 55.5, 85, 45),
(6,'孙权', 70, 73, 78.5),
(7,'宋公明', 75, 65, 30);

Select

全列查询

• 查询所有记录

# 使用 * 可以查询表中所有列的值
select * from exam;

在这里插入图片描述

指定列查询

• 查询所有⼈的编号、姓名和语⽂成绩

select id,name,chinese from exam;

在这里插入图片描述

在select后⾯的查询列表中指定希望查询的列,可以是⼀个也可以是多个,中间⽤逗号隔开
指定列的顺序与表结构中的列的顺序⽆关

查询字段为表达式

• 常量表达式

# 表达式本身就是一个常数
select id,name,10 from exam;

在这里插入图片描述

# 也可以是常量的运算
select id,name,10+1 from exam;

在这里插入图片描述
• 把所有学⽣的语⽂成绩加10分

# 表达式中包含一个字段
select id,name,chinese + 10 from exam;

在这里插入图片描述
• 计算所有学⽣语⽂、数学和英语成绩的总分

# 表达式包含多个字段
select id,name,chinese+math+english from exam;

在这里插入图片描述

为查询结果指定别名

语法
SELECT column [AS] alias_name [, ...] FROM table_name;

AS可以省略,别名如果包含空格必须⽤单引号包裹

⽰例

• 为总分这⼀列指定别名

# select id,name,chinese+math+english as '总分' from exam;
# select id,name,chinese+math+english '总分' from exam;
# select id,name,chinese+math+english as 总分 from exam;
select id,name,chinese+math+english 总分 from exam;

在这里插入图片描述
表头以别名显示

select id,name,chinese+math+english '总 分' from exam;

在这里插入图片描述

select id,name,chinese+math+english 总 分 from exam;

在这里插入图片描述

结果去重查询

  1. 查询当前所的数学成绩
select math from exam;

在这里插入图片描述

  1. 在结果集中去除重复记录,可以使⽤DISTINCT
# 去重查询
select distinct math from exam;

在这里插入图片描述
使⽤DISCTINCT去重时,只有查询列表中所有列的值都相同才会判定为重复

select distinct id,math from exam;

在这里插入图片描述

insert into exam values (8, '孙行者', 87.5, 78, 77);select * from exam;

在这里插入图片描述

select distinct chinese, math, english from exam;

在这里插入图片描述
去重时,只有查询结果中所有的列都相同才会被认定为重复记录
去重后,重复记录只保留一条

注意:
• 查询时不加限制条件会返回表中所有结果,如果表中的数据量过⼤,会把服务器的资源消耗殆尽
• 在⽣产环境不要使用不加限制条件的查询

Order by 排序

语法

-- ASC 为升序(从⼩到⼤)
-- DESC 为降序(从⼤到⼩)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...] ORDER BY {col_name | expr } [ASC | DESC], ... ;

没有写排序规则的时候默认是升序排序

⽰例

• 按数学成绩从低到⾼排序(升序)

# 按数学成绩从低到高排序(升序) 
# select name,math from exam order by math;
select name,math from exam order by math ASC;

在这里插入图片描述
• 按语⽂成绩从⾼到低排序(降序)

# 按语文成绩从⾼到低排序(降序)
select name,chinese from exam order by chinese DESC;

在这里插入图片描述
• 按英语成绩排序

insert into exam values (9, '孙大圣', 87.5, 78, null);select * from exam;

在这里插入图片描述

# 按英语成绩从高到低排序
select name,english from exam order by english DESC;

在这里插入图片描述

# 按英语成绩从低到高排序
select name,english from exam order by english ASC;

在这里插入图片描述

insert into exam values (10, '马超', 76, 99, -12);select * from exam;

在这里插入图片描述

select name,english from exam order by english DESC;

在这里插入图片描述

mysql中NULL 比较特殊:
1.不论和什么值进行运算,返回的值都是NULL
2.NULL 始终被判定为FALSE
3.NULL 的值不是我们以前学习过的其他编程语言中的0,在MYSQL中他就是NULL

• 查询同学各⻔成绩,依次按数学降序,英语升序,语⽂升序的⽅式显⽰
可以对多个字段进行排序,排序的优先级与书写顺序相关
可以为每个字段指定不同的排序规则
先按数学降序排列,再按英语升序排列,再按语文进行升序排列

select name,chinese,math,english from exam order by math DESC, english ASC, chinese ASC;  

在这里插入图片描述
• 查询同学及总分,由⾼到低排序

select name,chinese+math+english from exam order by chinese+math+english DESC;

在这里插入图片描述

不论和什么值进行运算,返回的值都是NULL

• 可以使⽤列的别名进⾏排序

# select name,chinese+math+english as 总分 from exam order by 总分 DESC;
select name,chinese+math+english 总分 from exam order by 总分 DESC;

在这里插入图片描述

注意
• 查询中没有ORDER BY ⼦句,返回的顺序是未定义的,永远不要依赖这个顺序
• ORDER BY ⼦句中可以使⽤列的别名进⾏排序
• NULL 进⾏排序时,视为⽐任何值都⼩,升序出现在最上⾯,降序出现在最下⾯

Where 条件查询

语法

SELECTselect_expr [, select_expr] ... [FROM table_references]WHERE where_condition

根据指定的一些条件,过滤掉不符合条件的记录,把符合条件的记录返回给用户
可以通过一些运算符,比如说比较运算符,逻辑运算符

⽐较运算符

运算符说明
>, >=, <, <=⼤于,⼤于等于,⼩于,⼩于等于
=等于,对于NULL的⽐较不安全,⽐如NULL = NULL结果还是NULL
<=>等于,对于NULL的⽐较是安全的,⽐如NULL <=> NULL结果是TRUE(1)
!=, <>不等于
value BETWEEN a0 AND a1范围匹配,[a0, a1],如果a0 <= value <= a1,返回TRUE或1,NOT BETWEEN则取反
value IN (option, …)如果value 在optoin列表中,则返回TRUE(1),NOT IN则取反
IS NULL是NULL
IS NOT NULL不是NULL
LIKE模糊匹配,% 表⽰任意多个(包括0个)字符;_ 表⽰任意⼀个字符,NOT LIKE则取反

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

逻辑运算符

运算符说明
AND多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR任意⼀个条件为 TRUE(1), 结果为 TRUE(1)
NOT条件为 TRUE(1),结果为 FALSE(0)

⽰例

基本查询
select * from exam;

在这里插入图片描述

• 查询英语不及格的同学及英语成绩 ( < 60 )

# 查询英语不及格的同学及英语成绩 ( < 60 )
select id,name,english from exam where english < 60;

在这里插入图片描述
• 查询语⽂成绩⾼于英语成绩的同学

# 查询语文成绩高于英语成绩的同学
select id,name,chinese,english from exam where chinese > english;

在这里插入图片描述

• 总分在 200 分以下的同学

# 总分在 200 分以下的同学
select id,name,(chinese+math+english) from exam where (chinese + math + english) < 200;

在这里插入图片描述
在这里插入图片描述
• 总分在 200 分以下的同学并按升序排序

# 总分在 200 分以下的同学并按升序排序
select id,name,(chinese+math+english) as total from exam where (chinese+math+english) < 200 order by total;

在这里插入图片描述
在这里插入图片描述
出现这种现象是和MYSQL内部的实现有关,换句话说就是和MYSQL执行SQL语句的顺序有关

  1. 如果要在数据中查某些数据,首先要确定表,先执行from
  2. 在查询的过程中要根据指定的查询条件把符合条件的数据过滤出来,这时执行的就是where子句
    (在执行where条件的时候total还没有被定义)
  3. 执行select后面的指定的列,这些列是需要加入到最终的结果集中
  4. 排序操作,根据order by子句中指定的列名和排序规则进行最后的排序
AND和OR

• 查询语⽂成绩⼤于80分且英语成绩⼤于80分的同学

# 查询语文成绩大于80分且英语成绩大于80分的同学
select id,name,chinese,english from exam where chinese > 80 and english > 80;

在这里插入图片描述
• 查询语⽂成绩⼤于80分或英语成绩⼤于80分的同学

# 查询语文成绩大于80分或英语成绩大于80分的同学
select id,name,chinese,english from exam where chinese > 80 or english > 80;

在这里插入图片描述
只要一个条件满足就符合整个的查询条件

• 观察AND和OR的优先级

select * from exam where chinese > 80 or math > 70 and english > 70;
select * from exam where chinese > 80 or (math > 70 and english > 70);
select * from exam where (chinese > 80 or math > 70) and english > 70;

在这里插入图片描述
根据返回的结果可以得出一个结论:
AND 的优先级是大于OR的
NOT > AND > OR
建议用的时候还是手动加括号

范围查询

• 语⽂成绩在 [80, 90] 分的同学及语⽂成绩

# 语文成绩在 [80, 90] 分的同学及语文成绩
# 使用BETWEEN AND 实现
select id,name,chinese from exam where chinese BETWEEN 80 AND 90;# 使用 AND 实现
select id,name,chinese from exam where chinese >= 80 and chinese <= 90;

在这里插入图片描述
• 数学成绩是 78 或者 79 或者 98 或者 99 分的同学及数学成绩

# 数学成绩是 78 或者 79 或者 98 或者 99 分的同学及数学成绩
# 使用 IN 实现
select id,name,math from exam where math IN (78,79,98,99);# 使用 OR 实现
select id,name,math from exam where math=78 OR math=79 OR math=98 OR math=99;

在这里插入图片描述

模糊查询

• 查询所有姓孙的同学

select * from exam where name like '孙%';

在这里插入图片描述
• 查询姓孙且姓名共有两个字同学

# 查询姓孙且姓名共有两个字同学
select * from exam where name like '孙_';

在这里插入图片描述

NULL的查询

• 查询英语成绩为NULL的记录

# 查询英语成绩为NULL的记录
# 使用 is null
select * from exam where english IS NULL;# 使用 <=>
select * from exam where english <=> null;

在这里插入图片描述
• 查询英语成绩不为NULL的记录

# 查询英语成绩不为NULL的记录
# 使用 is not null
select * from exam where english is not null;

在这里插入图片描述
在这里插入图片描述
• 所有英语成绩不为NULL的同学,按语⽂成绩从⾼到低排序

# 所有英语成绩不为NULL的同学,按语文成绩从高到低排序
select * from exam where english is not null order by chinese DESC;

在这里插入图片描述
• NULL与其他值进⾏运算结果为NULL

# 观察结果中的总分
select id,name,(chinese+math+english) as 总分 from exam;

在这里插入图片描述

注意
• WHERE条件中可以使⽤表达式,但不能使⽤别名
• AND的优先级⾼于OR,在同时使⽤时,建议使⽤⼩括号()包裹优先执⾏的部分
• 过滤NULL时不要使⽤等于号(=)与不等于号(!= , <>)
• NULL与任何值运算结果都为NULL

分⻚查询

不加限制记录条数的查询是不安全的,通过分页查询可以有效的控制一次查询出来的结果集中的记录的条数,可以有效的减少数据库服务器的压力,同时对于用户也比较友好

语法

-- 起始下标为 0
-- 从 0 开始,筛选 num 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num;
-- 从 start 开始,筛选 num 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT start, num;
-- 从 start 开始,筛选 num 条结果,⽐第⼆种⽤法更明确,建议使⽤
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num OFFSET start;

⽰例

select * from exam order by id desc limit 2;

在这里插入图片描述

select * from exam order by id desc limit 0, 2;

在这里插入图片描述

select * from exam order by id desc limit 1, 2;

在这里插入图片描述
在这里插入图片描述

select * from exam order by id desc limit 2 offset 0;

在这里插入图片描述

select * from exam order by id desc limit 2 offset 1;

在这里插入图片描述

# 查询第一页数据
select * from exam limit 4 offset 0;

在这里插入图片描述

# 查询第二页数据
select * from exam limit 4 offset 4;

在这里插入图片描述

#查询第三页数据,没有达到limit的条数限制,也不会有任何影响,有多少条就显示多少条
select * from exam limit 4 offset 8

在这里插入图片描述

Update 修改

语法

UPDATE [LOW_PRIORITY] [IGNORE] table_referenceSET assignment [, assignment] ...[WHERE where_condition][ORDER BY ...]LIMIT row_count

• 对符合条件的结果进⾏列值更新

示例

• 将孙悟空同学的数学成绩变更为 80 分

# 查看原始数据
select * from exam where name = '孙悟空'; 

在这里插入图片描述

# 更新操作
update exam set math = 80 where name = '孙悟空'; 
# 查看结果,数学成绩更新成功
select * from exam where name = '孙悟空';

在这里插入图片描述
• 将曹孟德同学的数学成绩变更为 60 分,语⽂成绩变更为 70 分

# 查看原始数据
select * from exam where name = '曹孟德';

在这里插入图片描述

# 更新操作
update exam set math = 60, chinese = 70 where name = '曹孟德';
# 查看结果,成绩更新成功
select * from exam where name = '曹孟德';

在这里插入图片描述
• 将总成绩倒数前三的 3 位同学的数学成绩减去 30 分

# 查看原始数据
select name, math, (chinese+math+english) as total from exam where (chinese+math+english) is not null order by total ASC limit 3;

在这里插入图片描述

# 更新操作
update exam set math=math-30 where (chinese+math+english) is not null order by (chinese+math+english) ASC limit 3;
# 查看结果,成绩更新成功
select name, math, (chinese+math+english) as total from exam where (chinese+math+english) is not null order by total ASC limit 3;

在这里插入图片描述
• 把所有语文成绩低于50的同学的语文成绩更新为原来的2倍

insert into exam values(11,'黄忠',40,66,67),(12,'赵云',35,88,96),(13,'张飞',49,78,63);
# 查看原始数据
select * from exam where chinese < 50;

在这里插入图片描述

# 更新操作
update exam set chinese = chinese * 2 where chinese < 50;# 查看结果,成绩更新成功
select * from exam;

在这里插入图片描述

Update 注意事项

• 以原值的基础上做变更时,不能使⽤math += 30这样的语法
• 不加where条件时,会导致全表数据被列新,谨慎操作

Delete 删除

语法

DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]

示例

• 删除孙悟空同学的考试成绩

# 查看原始数据
select * from exam where name = '孙悟空';

在这里插入图片描述

# 删除操作
delete from exam where name = '孙悟空';# 查看结果
select * from exam where name = '孙悟空';select * from exam;

在这里插入图片描述
在这里插入图片描述
• 删除英语成绩倒数前三的同学的所有考试成绩

# 查看原始数据
select * from exam order by english ASC limit 3;

在这里插入图片描述

# 删除操作
delete from exam order by english ASC limit 3;# 查看结果
select * from exam order by english ASC limit 3;select * from exam;

在这里插入图片描述
在这里插入图片描述

Delete注意事项

• 执⾏Delete时不加条件会删除整张表的数据,谨慎操作

截断表

语法

TRUNCATE [TABLE] tbl_name

示例

# 准备测试表
drop table if exists t_truncate;
create table t_truncate(id bigint PRIMARY key auto_increment,name varchar(20)
);# 插入测试数据
insert into t_truncate(name) values ('A'),('B'),('C');# 查看测试表
select * from t_truncate;

在这里插入图片描述

# 查看建表结构,AUTO_INCREMENT=4
show create table t_truncate;

在这里插入图片描述

# 截断表,注意受影响的行数是0
truncate table t_truncate;

在这里插入图片描述

# 查看表中的数据
select * from t_truncate;

在这里插入图片描述

# 查看表结构,AUTO_INCREMENT已被重置为0
show create table t_truncate;

在这里插入图片描述

# 继续写入数据
insert into t_truncate(name) value ('D');# 自增主键从1开如计数
select * from t_truncate;

在这里插入图片描述

# 再次查看表结构,AUTO_INCREMENT=2
show create table t_truncate;

在这里插入图片描述

Truncate注意事项

• 只能对整表操作,不能像 DELETE ⼀样针对部分数据
• 不对数据操作所以⽐DELETE更快,TRUNCATE在删除数据的时候,不经过真正的事物,所以⽆法
回滚
• 会重置 AUTO_INCREMENT 项

插⼊查询结果

语法

INSERT INTO table_name [(column [, column ...])] SELECT ...

⽰例
• 删除表中的重复记录,重复的数据只能有⼀份

# 创建测试表,并构造数据
drop table if exists t_recored;
create table t_recored(id bigint,name varchar(20)
);# 插入测试数据
insert into t_recored values
(100, 'aaa'),
(100, 'aaa'),
(200, 'bbb'),
(200, 'bbb'),
(300, 'ccc'),
(300, 'ccc');# 查看结果
select * from  t_recored;

在这里插入图片描述
• 实现思路:原始表中的数据⼀般不会主动删除,但是真正查询时不需要重复的数据,如果每次查询
都使⽤DISTINCT进⾏去重操作,会严重效率。可以创建⼀张与 t_recored 表结构相同的表,把
去重的记录写⼊到新表中,以后查询都从新表中查,这样真实的数据不丢失,同时⼜能保证查询效

# 创建⼀张新表,表结构与t_recored相同
create table t_recored_new like t_recored;

在这里插入图片描述

# 新表中没有记录
select * from t_recored_new;

在这里插入图片描述

# 原表中的记录去重后写入到新表
insert into t_recored_new select distinct * from t_recored;

在这里插入图片描述

# 查询新表中的记录,实现去重
select * from t_recored_new;

在这里插入图片描述

# 新表与原来重命名
rename table t_recored to t_recored_old, t_recored_new to t_recored;

在这里插入图片描述

# 查询重命名后表中的记录,实现需求且原来中的记录不受影响
select * from t_recored;select * from t_recored_old;

在这里插入图片描述

聚合函数

聚合查询本质上是针对数据表中的行和行进行运算,之前的表达式查询,是对一行记录中的列和列之间进行运算,比如: 语文成绩+数学成绩+英语成绩

常⽤函数

函数说明
COUNT([DISTINCT] expr)返回查询到的数据的 数量
SUM([DISTINCT] expr)返回查询到的数据的 总和,不是数字没有意义
AVG([DISTINCT] expr)返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT] expr)返回查询到的数据的 最⼤值,不是数字没有意义
MIN([DISTINCT] expr)返回查询到的数据的 最⼩值,不是数字没有意义

COUTN

• 统计exam表中有多少记录

# 使用 * 做统计
select * from exam;select count(*) from exam;

在这里插入图片描述

# 使用常量做统计
select count(1) from exam;

在这里插入图片描述

• 统计有多少学⽣参加数学考试

# 统计有多少学生参加数学考试
# 使用指定列做统计
select count(math) from exam;

在这里插入图片描述

insert into exam values (14, '司马懿', 90, 88, NULL);select * from exam;

在这里插入图片描述

• 统计有多少学⽣参加英语考试

select count(id) from exam;# count(列名),如果说列中有NULL值则不会被统计在内
select count(english) from exam;

在这里插入图片描述
• 统计语⽂成绩⼩于60分的学⽣个数

# 统计语文成绩小于60分的学生个数
# 加入where条件
select count(chinese) from exam where chinese < 60;

在这里插入图片描述

SUM

把查询结果中所有行中的指定列进行相加,注意: 列的数据类型必须是数值型,不能是字符或日期。
结果在一个临时表中,结果不受表中字段长度约束
• 统计所有学⽣数学成绩总分

# 统计所有学生数学成绩总分
select sum(math) from exam;

在这里插入图片描述

• 统计所有学⽣英语成绩总分

# 统计所有学生英语成绩总分
# 值为NULL的列不参与统计
select * from exam;select sum(english) from exam;

在这里插入图片描述
• 不能统计⾮数值的列

# 不能统计非数值的列
select sum(name) from exam;

在这里插入图片描述

AVG

• 统计英语成绩的平均分

# 统计英语成绩的平均分
# NULL值不参与统计
select avg(english) from exam;

在这里插入图片描述
• 统计平均总分

# 统计平均总分
select sum(chinese+math+english) from exam;select sum(chinese+math+english) as 总分 from exam;

在这里插入图片描述

MAX

• 查询英语最⾼分

# 查询英语最高分
select max(english) from exam;

在这里插入图片描述

MIN

• 查询 > 70 分以上的数学最低分

# 查询 > 70 分以上的数学最低分
select min(math) from exam where math > 70;

在这里插入图片描述
• 查询数学成绩的最⾼分与英语成绩的最低分

# 查询数学成绩的最高分与英语成绩的最低分,NULL值不参与统计
# 可以使用多个聚合函数
select max(math) '数学最高分', min(english) '英语最低分' from exam;

在这里插入图片描述

Group by 分组查询

GROUP BY ⼦句的作⽤是通过⼀定的规则将⼀个数据集划分成若⼲个⼩的分组,然后针对若⼲个
分组进⾏数据处理,⽐如使⽤聚合函数对分组进⾏统计。

语法

SELECT {col_name | expr} ,... ,aggregate_function (aggregate_expr)FROM table_referencesGROUP BY {col_name | expr}, ...[HAVING where_condition]

• col_name | expr:要查询的列或表达式,可以有多个,必须在 GROUP BY ⼦句中作为分组的依

• aggregate_function:聚合函数,⽐如COUNT(), SUM(), AVG(), MAX(), MIN()
• aggregate_expr:聚合函数传⼊的列或表达式,如果列或表达式不在 GOURP BY ⼦句中,必须
包含中聚合函数中

示例

• 准备测试表及数据职员表emp,列分别为:id(编号),name(姓名),role(⻆⾊),salary(薪⽔)

drop table if exists emp;
create table emp (id bigint primary key auto_increment,name varchar(20) not null,role varchar(20) not null,salary decimal(10, 2) not null
);insert into emp values (null, '老马', '老板', 1500000.00);
insert into emp values (null, '老刘', '老板', 1800000.00);
insert into emp values (null, '强哥', '经理', 10000.00);
insert into emp values (null, '牛哥', '经理', 12000.00);
insert into emp values (null, '小明', '员工', 9000.00);
insert into emp values (null, '小红', '员工', 8000.00);
insert into emp values (null, '猪悟能', '游戏角色', 700.5);
insert into emp values (null, '沙和尚', '游戏角色', 333.3);select * from emp;

在这里插入图片描述
• 统计每个⻆⾊的⼈数

# 统计每个角色的人数
select role,count(*) from emp group by role;

在这里插入图片描述
• 统计每个⻆⾊的平均⼯资,最⾼⼯资,最低⼯资

# 统计每个角色的平均工资,最高工资,最低工资
select role,avg(salary),max(salary),min(salary) from emp group by role;select role,round(avg(salary),2) as 平均工资,round(max(salary), 2) 最高工资,round(min(salary),2) '最低工资' from emp group by role;

在这里插入图片描述

having⼦句

使⽤GROUP BY 对结果进⾏分组处理之后,对分组的结果进⾏过滤时,不能使⽤ WHERE ⼦句,⽽要使⽤ HAVING ⼦句
where 是对表中每一行的真实数据进行过滤的
having 是对group by 之后,计算出来的结果进行过滤的

• 显示平均⼯资低于1500的⻆⾊和它的平均⼯资

# 显示平均工资低于1500的角色和它的平均工资,并按升序排序
select role,avg(salary) from emp group by role having avg(salary) < 1500 order by avg(salary) ASC;select role,avg(salary) 平均工资 from emp group by role having 平均工资 < 1500 order by avg(salary) ASC;select role,avg(salary) 平均工资 from emp group by role having 平均工资 < 1500 order by 平均工资 ASC;

在这里插入图片描述

Having 与Where 的区别

• Having ⽤于对分组结果的条件过滤
• Where ⽤于对表中真实数据的条件过滤

内置函数

⽇期函数

函数说明
CURDATE()返回当前⽇期,同义词 CURRENT_DATECURRENT_DATE()
CURTIME()返回当前时间,同义词 CURRENT_TIMECURRENT_TIME([fsp])
NOW() 返回当前⽇期和时间,同义语 CURRENT_TIMESTAMPCURRENT_TIMESTAMP
DATE(data)提取datedatetime表达式的⽇期部分
ADDDATE(date,INTERVAL exprunit)向⽇期值添加时间值(间隔),同义词 DATE_ADD()
SUBDATE(date,INTERVAL exprunit)向⽇期值减去时间值(间隔),同义词 DATE_SUB()
DATEDIFF(expr1,expr2) 两个⽇期的差,以天为单位,expr1 - expr2

示例

• 获取当前⽇期

# 获取当前日期
select CURDATE();

在这里插入图片描述
• 获取当前时间

# 获取当前时间
select CURTIME();

在这里插入图片描述

• 获取当前⽇期和时间

# 获取当前日期和时间
select NOW();

在这里插入图片描述
• 提取指定datatime的⽇期部分

# 提取指定datatime的日期部分
select DATE('2024-11-23 15:01:01');

在这里插入图片描述
• 在给定⽇期的基础上加31天

# 在给定日期的基础上加31天
select ADDDATE('2024-11-23',INTERVAL 31 DAY);

在这里插入图片描述
• 在给定⽇期的基础上减去1⽉

# 在给定日期的基础上减去1月
select SUBDATE('2024-1-23',INTERVAL 1 MONTH);

在这里插入图片描述
• 计算两个⽇期之间相差多少天

# 计算两个日期之间相差多少天
# 在计算时只使用日期部分
select DATEDIFF('2024-12-31 23:59:59','2024-12-30');

在这里插入图片描述

# 表达式1表示的日期早于表达式2表示的日期时返回负数
select DATEDIFF('2024-12-30', '2024-12-31 23:59:59');

在这里插入图片描述

参考链接

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
https://dev.mysql.com/doc/refman/8.0/en/expressions.html#temporal-intervals

字符串处理函数

函数说明
CHAR_LENGTH(str) 返回给定字符串的⻓度,同义词 CHARACTER_LENGTH()
LENGTH(str) 返回给定字符串的字节数,与当前使⽤的字符编码集有关
CONCAT(str1,str2,...)返回拼接后的字符串
CONCAT_WS(separator,str1,str2,...)返回拼接后带分隔符的字符串
LCASE(str) 将给定字符串转换成⼩写,同义词 LOWER()
UCASE(str)将给定字符串转换成⼤写,同义词UPPER()
HEX(str), HEX(N) 对于字符串参数str, HEX()返回str的⼗六进制字符串表⽰形式,对于数字参数N, HEX()返回⼀个⼗六进制字符串表⽰形式
INSTR(str,substr)返回substring第⼀次出现的索引
INSERT(str,pos,len,newstr)在指定位置插⼊子字符串,最多不超过指定的字符数
SUBSTR(str,pos)SUBSTR(str FROM pos FOR len)返回指定的子字符串,同义词SUBSTRING(str,pos)
SUBSTRING(str FROM pos FOR len) REPLACE(str,from_str,to_str)把字符串str中所有的from_str替换为to_str,区分⼤⼩写
STRCMP(expr1,expr2)逐个字符⽐较两个字符串,返回 -1, 0 , 1
LEFT(str,len)RIGHT(str,len)返回字符串str中最左/最右边的len个字符
LTRIM(str) RTRIM(str)TRIM(str)删除给定字符串的前导、末尾、前导和末尾的空格
TRIM([{LEADING | TRAILING | BOTH } [remstr] FROM] str)删除给定符串的前导、末尾或前导和末尾的指定字符串

示例

• 显⽰所有参加考试的学⽣姓名、姓名字符数和字节⻓度

# 显示所有参加考试的学生姓名、姓名字符数和字节长度
select name, CHAR_LENGTH(name), LENGTH(name) from exam;

在这里插入图片描述
• 显示学生的考试成绩,格式为 “XXX的语⽂成绩:XXX分,数学成绩:XXX分,英语成绩:XXX分”

# 显示学生的考试成绩,格式为 "XXX的语文成绩:XXX分,数学成绩:XXX分,英语成绩:XXX分"
select concat(name, '的语文成绩:', chinese, '分,数学成绩:', math, '分,英语成绩:', english, '分') as 分数 from exam;

在这里插入图片描述
• 拼接后的字符串⽤逗号隔开

# 拼接后的字符串用逗号隔开
select CONCAT_WS(',',name,chinese,math,english) 分数 from exam;

在这里插入图片描述
• 将给定字符串转换成⼩写

# 将给定字符串转换成小写
select LCASE('ABC');

在这里插入图片描述
• 将给定字符串转换成⼩写

# 将给定字符串转换成大写
select UCASE('abc');

在这里插入图片描述
• 转换为⼗六进制

# 转换为十六进制
select HEX('hello MySQL');

在这里插入图片描述

# 数字
select HEX(15);

在这里插入图片描述
• 子字符串第一次出现的索引

# 子字符串第一次出现的索引
select INSTR('hello MySQL','sql');

在这里插入图片描述
• 指定位置插⼊⼦字符串

# 指定位置插入子字符串
# 在指定位置插入
select INSERT('hello database',7,0,'MySQL ');

在这里插入图片描述

# 覆盖20位,如果从写入点往后不足20位相当于删除后面所有字符
select INSERT('hello database',7,20,'MySQL ');

在这里插入图片描述
• 返回指定的⼦字符串

# 返回指定的子字符串
# 从'hello MySQL'的第七个字符开始截取
select SUBSTR('hello MySQL',7);

在这里插入图片描述

# 从'hello MySQL'的第七个字符开始截取1个字符
select SUBSTR('hello MySQL' FROM 7 FOR 1);

在这里插入图片描述

# 从'hello MySQL'的第七个字符开始截取10个字符,不足10个读到整个字符串结尾
select SUBSTR('hello MySQL' FROM 7 FOR 10);

在这里插入图片描述
• 替换字符串

# 替换字符串
# 把Database替换成MySQL, 区分大小写
select REPLACE('hello Database','Database','MySQL');

在这里插入图片描述
• ⽐较两个字符串

# 比较两个字符串
# 观察返回的结果
select STRCMP('text','text1');select STRCMP('text','text');select STRCMP('text1','text');

在这里插入图片描述
• 返回字符串str中最左/最右边的len个字符

# 返回字符串str中最左/最右边的len个字符
# 最左边的5个字符
select LEFT('hello MySQL', 5);# 最右边的5个字符
select RIGHT('hello MYSQL', 5);

在这里插入图片描述
• 删除给定字符串的前导、末尾、前导和末尾的空格

# 删除给定字符串的前导、末尾、前导和末尾的空格
select '     ABC', LTRIM('     ABC'),'ABC     ',RTRIM('ABC     '),'     ABC    ',TRIM('     ABC    ');

在这里插入图片描述
• 删除给定符串的前导、末尾或前导和末尾的指定字符串

# 删除给定符串的前导、末尾或前导和末尾的指定字符串
# 删除前后指定的字符串,BOTH可以省略
select TRIM('xxx' FROM 'xxxABCxxx');# 删除前导的指定字符串
select TRIM(LEADING 'xxx' FROM 'xxxABCxxx');# 删除末尾的指定字符串
select TRIM(TRAILING 'xxx' FROM 'xxxABCxxx');

在这里插入图片描述

参考链接

https://dev.mysql.com/doc/refman/8.0/en/string-functions.html

数学函数

函数说明
ABS(X)返回X的绝对值
CEIL(X) 返回不⼩于X的最⼩整数值,同义词是 CEILING(X)
FLOOR(X) 返回不⼤于X的最⼤整数值
CONV(N,from_base,to_base) 不同进制之间的转换
FORMAT(X,D) 将数字X格式化为“#,###,###”的格式。##',四舍五⼊到⼩数点后D位,并以字符串形式返回
RAND([N]) 返回⼀个随机浮点值,取值范围 [0.0, 1.0)
ROUND(X), ROUND(X,D) 将参数X舍⼊到⼩数点后D位
CRC32(expr) 计算指定字符串的循环冗余校验值并返回⼀个32位⽆符号整数

示例

• 返回-3.14的绝对值

# 返回-3.14的绝对值
select abs(-3.14);

在这里插入图片描述
• 返回不⼩于20.36的最⼩整数值

# 返回不小于20.36的最小整数值 
select CEIL(20.36);

在这里插入图片描述

• 返回不⼤于11.32的最⼩整数值

# 返回不大于11.32的最大整数值 
select FLOOR(11.32);

在这里插入图片描述
• 10进制转为16进制

# 10进制转为16进制
select CONV(15,10,16);

在这里插入图片描述

• 格式化1234567.654321

# 格式化1234567.654321
select FORMAT(1234567.654321,5);

在这里插入图片描述

• 返回⼀个随机浮点值

# 返回一个随机浮点值
select RAND();

在这里插入图片描述

• 舍弃到⼩数点后6位

# 舍弃到小数点后6位
select ROUND(RAND(),6);

在这里插入图片描述

# 生成一个6位数的随机数
select ROUND(RAND(),6) * 1000000;

在这里插入图片描述

• 字符串的循环冗余校验

# 字符串的循环冗余校验
select CRC32('hello MySQL');

在这里插入图片描述

参考链接

https://dev.mysql.com/doc/refman/8.0/en/numeric-functions.html

其他常⽤函数

函数说明
version()显⽰当前数据库版本
database()显⽰当前正在使⽤的数据库
user()显⽰当前⽤户
md5(str)对⼀个字符串进⾏md5摘要,摘要后得到⼀个32位字符串
ifnull(val1, val2)如果val1为NULL,返回val2,否则返回 val1

示例

• 显示当前数据库版本

# 显示当前数据库版本
select version();

在这里插入图片描述
• 显⽰当前正在使⽤的数据库

# 显示当前正在使用的数据库
# 没有选择数据库时
select database();# 选择数据库
use java03;# 选择数据库后
select database();

在这里插入图片描述

• 显⽰当前⽤户

# 显示当前用户
select user();

在这里插入图片描述
• 对⼀个字符串进⾏md5加密

# 对一个字符串进行md5加密
select MD5('hello world');

在这里插入图片描述
• ifnull函数

# ifnull函数
# 第一个参数不为NULL, 返回第一个参数的值
select IFNULL('database','MySQL');# 第一个参数为NULL, 返回第二个参数的值
select IFNULL(NULL,'MySQL');

在这里插入图片描述


关于这篇文章的内容先了解到这里,希望这篇文章对大家有帮助,谢谢大家的阅读!!!

相关文章:

数据库中的增删改查操作、聚合函数、内置函数、分组查询

数据库中的增删改查操作、聚合函数、内置函数、分组查询 CRUD简介Create 新增语法示例单⾏数据全列插⼊单⾏数据指定列插⼊多⾏数据指定列插⼊ Retrieve 检索语法⽰例构造数据 Select全列查询指定列查询查询字段为表达式为查询结果指定别名语法⽰例 结果去重查询 Order by 排序…...

递归------深度优先搜索

深度优先搜索&#xff08;Depth-First Search&#xff0c;简称DFS&#xff09;是一种用于遍历或搜索树或图的算法。它从一个顶点开始&#xff0c;尽可能深地搜索树的分支。深度优先搜索沿着一条路径深入&#xff0c;直到无法继续为止&#xff0c;然后回溯并尝试其他路径。这种搜…...

三十一、构建完善微服务——API 网关

一、API 网关基础 系统拆分为微服务后&#xff0c;内部的微服务之间是互联互通的&#xff0c;相互之间的访问都是点对点的。如果外部系统想调用系统的某个功能&#xff0c;也采取点对点的方式&#xff0c;则外部系统会非常“头大”。因为在外部系统看来&#xff0c;它不需要也没…...

【大语言模型】ACL2024论文-20 SCIMON:面向新颖性的科学启示机器优化

【大语言模型】ACL2024论文-20 SCIMON&#xff1a;面向新颖性的科学启示机器优化 目录 文章目录 【大语言模型】ACL2024论文-20 SCIMON&#xff1a;面向新颖性的科学启示机器优化目录摘要研究背景问题与挑战如何解决创新点算法模型实验效果推荐阅读指数&#xff1a;★★★★☆ …...

GRU (门控循环单元 - 基于RNN - 简化LSTM又快又好 - 体现注意力的思想) + 代码实现 —— 笔记3.5《动手学深度学习》

目录 0. 前言 1. 门控隐状态 1.1 重置门和更新门 1.2 候选隐状态 1.3 隐状态 2. 从零开始实现 2.1 初始化模型参数 2.2 定义模型 2.3 训练与预测 3 简洁实现 4. 小结 0. 前言 课程全部代码&#xff08;pytorch版&#xff09;已上传到附件看懂上一篇RNN的所有细节&am…...

C++头文件大全(要是还有请帮忙)

以下是 C 中常见的各类头文件分类列举&#xff08;但实际远不止这些&#xff0c;随着标准库扩充及第三方库使用会有更多&#xff09;&#xff1a; 输入 / 输出流相关头文件 <iostream>&#xff1a;用于标准输入输出&#xff0c;定义了 cin、cout 等对象。<fstream>…...

免费好用的静态网页托管平台全面对比介绍

5个免费好用的静态网页托管平台全面对比 前言 作为一名前端开发者&#xff0c;经常会遇到需要部署静态网页的场景。无论是个人项目展示、简单的游戏demo还是作品集网站&#xff0c;选择一个合适的托管平台都很重要。本文将详细介绍5个免费的静态网页托管平台&#xff0c;帮助…...

【电路笔记 TMS320F28335DSP】开发环境 CCSTUDIO IDE配置+工程配置

下载 CCSTUDIO IDE 安装 CCSTUDIO IDE 直接点击下一步即可 controlSUITE™&#xff08;可选&#xff09; controlSUITE™ 软件套件&#xff1a;C2000™ 微控制器的必备软件和开发工具CCS 的 controlSUITE™ 是 Texas Instruments (TI) 提供的一个综合软件平台&…...

org.apache.log4j的日志记录级别和基础使用Demo

org.apache.log4j的日志记录级别和基础使用Demo&#xff0c;本次案例展示&#xff0c;使用是的maven项目&#xff0c;搭建的一个简单的爬虫案例。里面采用了大家熟悉的日志记录插件&#xff0c;log4j。来自apache公司的开源插件。 package com.qian.test;import org.apache.log…...

设计LRU缓存

LRU缓存 LRU缓存的实现思路LRU缓存的操作C11 STL实现LRU缓存自行设计双向链表 哈希表 LRU&#xff08;Least Recently Used&#xff0c;最近最少使用&#xff09;缓存是一种常见的缓存淘汰算法&#xff0c;其基本思想是&#xff1a;当缓存空间已满时&#xff0c;移除最近最少使…...

shell(7)forwhile

for循环&#xff1a; for i in seq 1 100 do echo $i donefor i in seq 1 100 do 部分&#xff1a; for 是 bash 中的循环关键字&#xff0c;用于开启一个循环结构。 i 是定义的循环变量&#xff0c;在每次循环过程中&#xff0c;它会被赋予不同的值。 seq 1 100 这部分&a…...

VSCode打开c#项目报错:DotnetAcquisitionTimeoutError

VSCode打开c#项目&#xff0c;会自动下载.NET环境&#xff0c;下载不了报超时&#xff0c;详情如下&#xff1a; ms-dotnettools.csharp tried to install .NET 8.0.11~x64 but that install had already been requested. No downloads or changes were made. ms-dotnettools.…...

《生成式 AI》课程 作业6 大语言模型(LLM)的训练微调 Fine Tuning -- part1

资料来自李宏毅老师《生成式 AI》课程&#xff0c;如有侵权请通知下线 Introduction to Generative AI 2024 Spring 该文档主要介绍了国立台湾大学&#xff08;NTU&#xff09;2024 年春季 “生成式人工智能&#xff08;GenAI&#xff09;” 课程的作业 5&#xff08;GenAI HW…...

SQLynx让数据库变得简单!

SQLynx让数据库管理和开发变得更简单&#xff0c;SQLynx是一款旨在简化飞客使用体验的创新型工具&#xff0c;它为数据库管理者、数据库分析师和开发人员提供了一个直观、易用、高效的平台&#xff0c;首先&#xff0c;SQLynx拥有直观友好的用户界面。无论您是新建还是导表&…...

#Uniapp篇:变量v-if 和 v-show 区别.sync 修饰符宽屏适配指南Pinia内置了

let that this 如果在某些methods中this被指向了其他内容&#xff0c;则需要提前把this赋值给另一个变量&#xff0c;比如let that this。 <script>export default {data() {return {connectedWifi:""}},methods: {buttonClick: function () {const that …...

EMD-KPCA-Transformer多变量回归预测!分解+降维+预测!多重创新!直接写核心!

EMD-KPCA-Transformer多变量回归预测&#xff01;分解降维预测&#xff01;多重创新&#xff01;直接写核心&#xff01; 目录 EMD-KPCA-Transformer多变量回归预测&#xff01;分解降维预测&#xff01;多重创新&#xff01;直接写核心&#xff01;效果一览基本介绍程序设计参…...

【数据结构】二叉树(2)

目录 1. 二叉树的遍历 前序遍历 中序遍历 后序遍历 2. 计算二叉树中的节点个数 3. 计算二叉树中叶子节点个数 4. 计算二叉树的深度 5. 计算二叉树第k层节点个数 6. 二叉树基础练习 7. 二叉树的创建 8. 二叉树的销毁 9. 层序遍历 10. 判断二叉树是否为完全二叉树 1…...

常用服务器运维软件之 WGCLOUD(国产)介绍

WGCLOUD是一款免费开源的运维监控软件&#xff0c;轻量高效&#xff0c;部署方便&#xff0c;上手简单&#xff0c;界面简单流畅 WGCLOUD是国产运维软件&#xff0c;可以适配大部分的信创环境&#xff0c;比如麒麟、统信等操作系统 WGCLOUD具体支持监控的操作系统如下&#x…...

shell

第四章 shell中的变量 4.1 系统变量 1.常用系统变量 $HOME ,$PWD,$SHELL ,$USER 4.2 自定义变量 1.变量值&#xff08;等号两边没有空格&#xff09; 2.撤销变量&#xff1a;unset变量 3.声明静态变量&#xff1a;readonly 变量&#xff0c;注意&#xff1a;不能unset 4.变…...

Target-absent Human Attention

Abstract 预测人类注视行为对于构建能够预测用户注意力的人机交互系统非常重要。已经开发出计算机视觉模型来预测人们在搜索目标物体时的注视点。但当目标不存在于图像中时,又该如何处理呢?同样重要的是要了解当人们找不到目标时,他们如何进行搜索,以及何时停止搜索。在本文…...

Objective-C 1.0和2.0有什么区别?

Objective-C ObjC比较小众&#xff0c;在1980年左右由Stepstone公司的Brad Cox和Tom Love发明。后来NeXT公司获得ObjC语言使用权&#xff0c;再后来到1996年NeXT被苹果公司收购也变成苹果公司使用&#xff0c;Mac市场占有率本身就不高&#xff0c;ObjC没有太多程序员。在移动互…...

06 —— Webpack优化—压缩过程

css代码提取后想要压缩 —— 使用css-minimizer-webpack-plugin插件 下载 css-minimizer-webpack-plugin 本地软件包 npm install css-minimizer-webpack-plugin --save-dev 配置 webpack.config.js 让webpack拥有该功能 const CssMinimizerPlugin require(css-minimizer-…...

【探寻密码的奥秘】-000:密码相关概念定义及介绍(持续更新~~)

密码相关概念 1、密码学 1、密码学 密码学是研究密码与密码活动本质和规律&#xff0c;以及指导密码实践的科学&#xff0c;主要探索密码编码和密码分析的一般规律&#xff0c;它是一门结合数学、计算机科学、信息通信系统等多门学科为一体的综合性学科。 密码学的常见应用场景…...

大模型(LLMs)推理篇

大模型&#xff08;LLMs&#xff09;推理篇 1. 为什么大模型推理时显存涨的那么多还一直占着&#xff1f; 首先&#xff0c;序列太长了&#xff0c;有很多Q/K/V&#xff1b;其次&#xff0c;因为是逐个预测next token&#xff0c;每次要缓存K/V加速解码。 大模型在gpu和cpu上…...

算法学习笔记(十):位运算、数论等

一.位运算基础 集合与集合之间的位运算 集合和元素 常用函数 1.使两个整数相等的位更改次数 给你两个正帧数 n 和 k&#xff0c;你可以选择 n 的二进制表示 中任意一个值为 1 的位&#xff0c; 并将其改为0&#xff0c;返回使得 n 等于 k 所需要的更改次数&#xff0c;如无法实…...

深度学习:神经网络中线性层的使用

深度学习&#xff1a;神经网络中线性层的使用 在神经网络中&#xff0c;线性层&#xff08;也称为全连接层或密集层&#xff09;是基础组件之一&#xff0c;用于执行输入数据的线性变换。通过这种变换&#xff0c;线性层可以重新组合输入数据的特征&#xff0c;并将其映射到新…...

Robot | 用 RDK 做一个小型机器人(更新中)

目录 前言架构图开发过程摄像头模型转换准备校准数据使用 hb_mapper makertbin 工具转换模型 底版开发 结语 前言 最近想开发一个小型机器人&#xff0c;碰巧看到了 RDK x5 发布了&#xff0c;参数对于我来说非常合适&#xff0c;就买了一块回来玩。 外设也是非常丰富&#xf…...

数据结构与算法——1120——时间空间效率问题求边界值

目录 1、效率问题 1、时间复杂度 1、O(1) 2、O(n) 3、O(n) 或O(n*log2n)——n倍的log以2为底n的对数 例题 4、O(n) 2、空间复杂度 3、数组和链表 2、面试题之求边界值 题目 解答 &#xff08;1&#xff09;-i &#xff08;2&#xff09;~i &#xff08;3&#x…...

HTML通过JavaScript获取访问连接,IP和端口

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>Get IP Address</title> <script> function displayURL() { var url window.location.href; // 获取当…...

TCP vs UDP:如何选择适合的网络传输协议?

在网络通信中&#xff0c;TCP&#xff08;Transmission Control Protocol&#xff09;和UDP&#xff08;User Datagram Protocol&#xff09;是两种非常重要的传输层协议。它们各有特点&#xff0c;适用于不同类型的应用场景。本文将详细探讨TCP和UDP协议的结构、优缺点及应用&…...

学习QT第二天

QT6示例运行 运行一个Widgets程序运行一个QT Quick示例 工作太忙了&#xff0c;难得抽空学点东西。-_-||| 博客中有错误的地方&#xff0c;请各位道友及时指正&#xff0c;感谢&#xff01; 运行一个Widgets程序 在QT Creator的欢迎界面中&#xff0c;点击左侧的示例&#xf…...

递归算法专题一>Pow(x, n)

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; public double myPow(double x, int n) {return n < 0 ? 1.0 / pow(x,-n) : pow(x,n); }private double pow(double x, int n){if(n 0) return 1.0;double tmp pow(x,n / 2);return n % 2 0 ? tmp * tmp : tmp …...

利用Python爬虫获取商品评论:技术与实践

在当今这个信息爆炸的时代&#xff0c;互联网上充斥着海量的数据。对于电商平台来说&#xff0c;用户评论是了解消费者喜好、优化产品策略的重要依据。Python作为一种强大的编程语言&#xff0c;其丰富的库支持使得爬虫技术成为获取这些数据的有效手段。本文将详细介绍如何使用…...

python之使用django框架开发web项目

本问将对django框架在python的web项目中的使用进行介绍,有不对之处,烦请指正。 首先使用创建一个django工程(本示例中使用pycharm2024+python3.12),名称和项目保存路径根据自己的需要自行修改,新手直接默认本机环境就好(关于conda将会另开一篇进行讲解。),最后点击cre…...

当产业经济插上“数字羽翼”,魔珐有言AIGC“3D视频创作大赛”成功举办

随着AI技术的飞速发展&#xff0c;3D数字人技术已成为驱动各行各业转型升级的重要力量。在这一背景下&#xff0c;2024山东3D数字人视频创作大赛应运而生&#xff0c;并在一番激烈的角逐后圆满落幕&#xff0c;为科技与创意的交融写下浓墨重彩的一笔。 11月20日&#xff0c;一…...

设计模式之策略模式

背景&#xff1a;导入功能需要做成根据编码code或者名称实现不同的导入逻辑&#xff0c;编码和名称都是可配置的&#xff0c;未知的变化&#xff0c;这里要写通用的导入、校验和具体的导入、校验。至此我想到采用设计模式之策略模式工厂模式实现此需求。若有不妥还望指正。 自…...

/etc/sudoers 文件格式解读

文章目录 例如 /etc/sudoers 文件中存在这样一行&#xff1a; ubuntu ALL(ALL:ALL) NOPASSWD: ALL 解释如下&#xff1a; 1. 第一个表示用户名&#xff0c;这意味着此行规则适用于名为 ubuntu 的用户。 2. 接下来等号左边的 ALL 表示允许从任何主机登录当前的用户账户&#xf…...

Linux虚拟机网络配置

Linux固定IP 跳转到 cd /etc/sysconfig/network-scripts/ 打开文件并编辑 vim ifcfg-ens33 增加或修改选中内容 重启网卡 systemctl restart network ifconfig -a 查看ip已固定 虚拟机网络编辑器调整 子网IP进行修改&#xff0c;例如本机IP修改为10.212.197.34 此处就修改…...

C++模版特化和偏特化

什么是模版特化 特化的含义&#xff1a;所谓特化&#xff0c;就是将泛型搞得具体化一些&#xff0c;从字面上来解释&#xff0c;就是为已有的模板参数进行一些使其特殊化的指定&#xff0c;使得以前不受任何约束的模板参数&#xff0c;或受到特定的修饰&#xff08;例如const或…...

17. 指针类型和步长概念问题

1. 项目场景&#xff1a; ➣ Jack Qiao对米粒说&#xff1a;“今天有道友遇到一个问题&#xff0c;举个栗子数组 arr[5] { 0 };道友发现&arr[0] 1与&arr 1打印出来的地址竟然不同。”米粒测试后果然是这样。 2. 问题描述 ☑ 举个栗子&#xff1a;数组 arr[5] { 0…...

如何自动下载和更新冰狐智能辅助?

冰狐智能辅助的版本更新非常快&#xff0c;如果设备多的话每次手工更新会非常麻烦&#xff0c;现在分享一种免费的自动下载和安装冰狐智能辅助的方法。 一、安装迅雷浏览器 安装迅雷浏览器1.19.0.4280版本&#xff0c;浏览器用于打开冰狐的官网&#xff0c;以便于从官网下载a…...

C# 数据结构之【队列】C#队列

1. 描述 队列&#xff1a;队列遵循先进先出&#xff08;FIFO&#xff09;原则&#xff0c;在一端进行插入操作&#xff0c;在另一端进行删除操作。 2. 应用示例 using System;namespace DataStructure {class Program{static async Task Main(string[] args){// 创建一个队列…...

Java-05 深入浅出 MyBatis - 配置深入 动态 SQL 参数、循环、片段

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大数据篇正在更新&#xff01;https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了&#xff1a; MyBatis&#xff…...

HTML+CSS网页模板,左侧导航,右侧内容,顶部LOGO

网页顶部是网站名称和LOGO&#xff0c;左侧是菜单导航&#xff0c;点击菜单&#xff0c;右侧显示内容。HTMLCSS代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport"…...

Redis的基本使用命令(GET,SET,KEYS,EXISTS,DEL,EXPIRE,TTL,TYPE)

目录 SET GET KEYS EXISTS DEL EXPIRE TTL redis中的过期策略是怎么实现的&#xff08;面试&#xff09; 上文介绍reids的安装以及基本概念&#xff0c;本章节主要介绍 Redis的基本使用命令的使用 Redis 是一个基于键值对&#xff08;KEY - VALUE&#xff09;存储的…...

Spring AOP

目录 1.AOP概述 2.Spring AOP快速实现 3.Spring AOP核⼼概念 ​编辑 3.1切点(Pointcut) 3.2连接点(Join Point) 3.3通知(Advice) 3.4切⾯(Aspect) 4.通知类型 5.PointCut 6.切⾯优先级 Order 7.annotation 1.AOP概述 &#xff08;1&#xff09;什么是AOP&#xf…...

SIMD AVX2 向量计算

_mm256_fmadd_ps: 能够在单个操作中执行乘法和加法&#xff0c;从而提高浮点计算的精度和性能。_mm256_sub_ps : Intel Advanced Vector Extensions (AVX) 指令集中用于从两个 AVX 寄存器中逐元素进行单精度浮点数减法的内联函数。这个函数允许同时对 8 个单精度浮点数进行减法…...

clipboard

clipboard 现代复制到剪贴板。无闪光。只有 3kb 的 gzip 压缩。 安装 npm install clipboard --save第三方cdn提供商 <script src"https://cdn.jsdelivr.net/npm/clipboard2.0.11/dist/clipboard.min.js"></script>使用 data-clipboard-target"…...

【JavaEE进阶】 JavaScript

本节⽬标 了解什么是JavaScript, 学习JavaScript的常⻅操作, 以及使⽤JQuery完成简单的⻚⾯元素操作. 一. 初识 JavaScript 1.JavaScript 是什么 JavaScript (简称 JS), 是⼀个脚本语⾔, 解释型或即时编译型的编程语⾔. 虽然它是作为开发Web⻚⾯的脚本语⾔⽽出名&#xff0c;…...

python程序的编写以及发布(形象类比)

最近重新接触python&#xff0c;本人之前对于python的虚拟环境&#xff0c;安装包比较比较迷惑&#xff0c;这里给出一个具象的理解。可以将 Python 程序运行的过程类比成一次 做菜的过程&#xff0c;从准备食材到最后出锅。以下是具体的类比步骤&#xff1a; 1. 安装 Python 环…...