SQL基础语法介绍-基于MySQL
文章目录
- 一、SQL分类
- 二、SQL语法
- 1.数据库字段类型
- 1.1.数值类型
- 1.2 字符类型
- 1.3 日期类型
- 2.字段约束
- 2.1约束介绍
- 2.2 非空约束(not null)
- 2.3 唯一约束(unique)
- 2.4 主键约束(primary key)
- 2.5 自增长主键
- 2.6 联合主键
- 3.**DDL 数据定义语言**
- 3.1 对库的操作:
- 3.2 对表的操作
- 4.DML 数据操纵语言
- 4.1 增 insert
- 4.2 删 delete
- 4.3 改 update
- 5.DQL数据查询语言
- 5.1 基础查询 select
- 5.2 where 子句
- 5.2.1**条件关系运算符**
- 5.2.2条件逻辑运算符
- 5.2.3 LIKE 模糊查询
- 5.3 查询结果处理
- 5.3.1 计算列
- 5.3.2 字段别名
- 5.3.3 去重
- 5.4 order by 排序
- 5.5 聚合函数
- 5.6分组查询
- 5.7 分页查询 limit
- 三、数据表的关联关系
- 1.关联关系介绍
- 2.外键约束
- 3.外键约束-级联
一、SQL分类
根据不同SQL指令对数据库操作的不同,可以将SQL指令分为以下四类:
-
DDL Data Defintion Language 数据定义语言
- 用于对数据库对象(数据库,数据表,视图,索引)的增删改操作
-
DML Data Manipulation Language 数据操作语言
- 用于对数据表中的数据的增删改操作
-
DQL Data Query Language 数据查询语言
- 用于对数据库表中的数据的查询操作
-
DCL Data Control Language 数据控制语言
- 用于事务管理等控制性操作
二、SQL语法
1.数据库字段类型
数据库表中数据列支持的数据存储类型
1.1.数值类型
类型 | 内存空间 | 范围 | 说明 |
---|---|---|---|
tinyint | 1byte | 有符号-128~127 无符号 0~255 | 特小型整数(年龄) |
smallint | 2byte(16bit) | 有符号-32768~32767 无符号 0~65535 | 小型整数 |
mediumint | 3byte | 有符号-231~231-1 无符号 0~2^31-1 | 中型整数 |
int/integer | 4byte | 整数 | |
bigint | 8byte | 大型整数 | |
float | 4byte | 单精度 | |
double | 8byte | 双精度 | |
decimal | 第一个参数*2 | decimal(10,2)数值位10位,小数位有两位 | |
1.2 字符类型
存储字符序列的类型
类型 | 长度 | 说明 |
---|---|---|
char | 0~255字节 | 定长字符串,最多存放255个字节;char(n),自动补齐位数 |
varchar | 0~65536字节 | 可变长度字符串,一个汉字占用两个字节 |
tinyblob | 0~255字节 | 存储二进制字符串 |
blob | 0~65535字节 | 存储二进制字符串(图片,音频) |
mediumblob | 0~1677215字节 | 存储二进制字符串 |
longblob | 0~4294967295 | 存储二进制字符串 |
tinytext | 0~255 | 文本数据(字符串) |
text | 0~65535 | 文本数据(字符串) |
mediumtext | 0~1677215 | 文本数据(字符串) |
longtext | 0~4294967295 | 文本数据(字符串) |
1.3 日期类型
数据库日期类型
类型 | 格式 | 说明 |
---|---|---|
date | 2024-01-01 | 日期,存放 年-月-日 |
time | 18:01:10 | 时间,存放 时分秒 |
year | 2024 | 年份 |
datetime | 2024-01-08 18:01:18 | 年月日,时分秒 |
timestamp | 20240108 180118 | 年月日时分秒(时间戳) |
2.字段约束
2.1约束介绍
在创建表时,对表中指定数据列的数据的限制性约束,其目的:
- 保证数据有效性
- 保证数据完整性
- 保证数据正确性
常见的SQL语法约束;
- 非空约束(not null):限制此列值必须提供,不能为null
- 唯一约束(unique):此列的值需要具有唯一性,不能重复
- 主键约束(primary key):非空+唯一,能够唯一标识数据表中的一条数据
- 外键约束(foreign key):建立不同表之间的关联关系
2.2 非空约束(not null)
限制数据表中此列的值必须提供
create table `students`(`stu_num` char(8) not null unique,`stu_name` varchar(20) not null ##非空);
2.3 唯一约束(unique)
在表中的多条数据,此列的值不能重复
create table `students`(`stu_num` char(8) not null,`stu_tel` char(11) unique ##唯一约束);
2.4 主键约束(primary key)
主键是数据表中记录的唯一标识(非空+唯一)
一张数据表中只能有**
一个主键
**,但是主键是可以一个字段,也可以是多个字段组合的联合主键
##方式一 主键声明
create table `students`(`stu_num` char(8) primary key, ##主键约束`stu_tel` char(11) unique );
##方法二 主键声明
create table `students`(`stu_num` char(8), `stu_tel` char(11) unique,primary key(`stu_num`); ##主键约束);
##方式三 在已有的数据表中增加主键约束
alter table students add primary key(stu_num);
删除主键约束
alter table students drop primary key;
2.5 自增长主键
自增长主键设置以后,新增数据时,主键数据自动增长填充,无需提供数据。
create table `students`(`stu_id` int primary key auto_increment,`stu_num` char(8), `stu_tel` char(11) unique;);
注意:
自增长主键的字段类型需要时int类型
自增长主键从1开始,每增加一天数据,主键+1;如果中间有行数据被删除,自增长主键只会继续新增,不会重复新增,也就是生成过的主键值,即使删除了,也不会重复生成。
(自增长主键只保证唯一性,不保证连续性)
2.6 联合主键
联合主键:将数据表中的多列组合在一起设置为的主键
create table `students`(`stu_num` char(8), `stu_tel` char(11) unique,primary key(`stu_num`,`stu_tel`); ##联合主键);
实际业务开发中,联合主键的使用并不多,如果数据表中没有明确的主键值,可以额外增加一个ID字段作为主键。
3.DDL 数据定义语言
3.1 对库的操作:
对数据库的增删改查操作
创建数据库
create database 库名;
create database db_test;## 优化:创建数据库,增加判断数据库是否存在 is not exists
create database if not exists db_test;## 优化:增加数据库字符集设置
create database if not exists ba_test character set utf8;
查询数据库
查询所有数据库
show databases;
# #查询全部数据库
show databases;## 查询指定数据库的创建SQL指令
show create database db_test;
修改数据库
修改数据库字符集
alter database 库名 character set 字符编码集;
alter database db_test character set gbk;##查询字符集修改是否成功
show create database db_test;
删除数据库
删除数据库,同时对数据库中的表,数据同步删除
drop database 库名;
drop database db_test;## 优化:判断是否存在数据库,再进行删除
drop database if exists db_test;
3.2 对表的操作
创建数据库表
使用create table 表名(字段名 字段类型(长度),是否为空,是否唯一);
create table `students`(`stu_num` char(8) not null unique,`stu_name` varchar(20) not null,`stu_denger` char(2) not null,`stu_age` int not null,`stu_tel` char(11) not null unique,`stu_qq` varchar(11) unique);
查询数据库表
查询数据库向下所有的表
show tables;
show tables;
查询表结构
desc 表名;
desc students;
删除数据表
drop table students;
## 增加判断,存在再删除
drop table if exists students;
修改数据表
修改表名 alter table 表名 rename to 新表名;
alter table students rename to stud;
修改数据库表字符集 表字符集默认与数据库字符集一致
alter table 表名 character set 字符集编码
alter table students character set gbk;
新增表字段
alter table 表名 add 新增字段名(字段长度);
alter table students add stu_remark varchar(200);
修改表的字段名和字段类型
alter table
change
;
alter table students change stu_remark stu_desc text;
修改字段类型
alter table
modify
;
删除表字段
alter table
drop
;
alter table students drop stu_desc;
4.DML 数据操纵语言
4.1 增 insert
用于完成对数据表中数据的操作
insert into (columnName1,columnName2…) values(value1,value2…);
INSERT into students(stu_num,stu_name,stu_denger,stu_age,stu_tel,stu_qq) values(`1`,`小明`,`男`,`18`,`13600000002`,`578767873`);
4.2 删 delete
删除数据表中符合条件的数据
delete from where conditions;
DELETE from students where stu_num = 2;
注意:
- delete 语句是删除数据库表中的数据,如果不加where条件,将会删除整表数据,但表依然存在,表结构依然存在。
- drop table 是从数据库删除数据表,表结构删除,数据库中不在存此数据表。
- drop database 是直接删除此数据库。
4.3 改 update
对数据库表中已存在的数据进行修改操作
update set columnName = value where conditions;
UPDATE students SET stu_name = "蔡文姬" WHERE stu_num = 1;
注意:update操作,一定要注意where条件的设定,如果不加where条件,将进行全表修改。
5.DQL数据查询语言
从数据库表中提取满足条件的记录
- 单表查询
- 多表联合查询
5.1 基础查询 select
SELECT stu_name from ; #查询展示指定列信息
SELECT * from ; ##全表查询
SELECT * from where conditions; ##条件查询
SELECT stu_name from students; #查询展示学生姓名列信息
SELECT * from students;##全表查询
SELECT * from students where stu_num = 1;##条件查询,查询学号为1的学生信息
5.2 where 子句
用where子句,加上查询条件,筛选所需要的数据;
5.2.1条件关系运算符
## 等于 =
select * from students where stu_num = 1;## 不等于 != <>
select * from students where stu_num != 1;
select * from students where stu_num <> 1;## 大于 >
select * from students where stu_age > 18;## 小于 <
select * from students where stu_age < 18;## 大于等于 >=
select * from students where stu_age >= 18;## 小于等于 <=
select * from students where stu_age <= 18;## 区间查询 between...and
select * from students where stu_age between 16 and 20;
5.2.2条件逻辑运算符
在where子句中,可以将多个条件通过逻辑运算(and or not)进行连接,通过多条件筛选需要的数据。
## and并且 多条件联合查询,同时满足的结果
select * from students where stu_denger = `男` and stu_age > 18;## or 或者 多条件联合查询,至少满足其中一个条件的结果
select * from students where stu_denger = `女` or stu_age > 18;## not 取反
select * from students where stu_age not between 16 and 20;##年龄不在16~20之间的数据
5.2.3 LIKE 模糊查询
通过like关键字来实现模糊查询
select * from where columnName like ‘reg’;
- 在like关键字后面的 reg表达式中
- %,表示任意多个字符,
- %a% 表示字段里面包含a的所有字段;
- a% 表示第一个字母为a的字段;
- %a 表示最后一个字母为a的字段;
- _ ,表示任意一个字符,**_a%**表示第二个字母为a的所有字段;
## 查询学生手机号码中包含8的数据 %8%
select * from students where stu_tel like `%8%;## 查询学生手机号码中136开头的数据 136%
select * from students where stu_tel like `136%`;## 查询学生手机号码中尾号是9的数据 %9
select * from students where stu_tel like `%9`;## 查询学生手机号码中第二位是3的数据 _3%
select * from students where stu_tel like `_3%`;
5.3 查询结果处理
5.3.1 计算列
对查询结果进行一定运算后展示
## 通过年龄,计算出生年份 (2024 - stu_age)
SELECT stu_name, (2024 - stu_age) as birthYear from students WHERE stu_num = 1;
5.3.2 字段别名
对查询字段进行别名展示,在查询字段用as 关键字取别名
SELECT stu_name as 学生姓名, (2024 - stu_age) as 学生出生年份 from students WHERE stu_num = 1;
5.3.3 去重
查询结果去重 distinct
## 查询表中年龄,并去重
SELECT DISTINCT stu_age from students ;
5.4 order by 排序
将查询的满足条件的记录,进行升序或降序的排列展示,
关键字 order by排序,
asc-升序(默认);
desc-降序
单字段排序
##年龄大于10岁的学生,按年龄由小到大的升序方式展示
SELECT * from students where stu_age >10 ORDER BY stu_age;##年龄大于10岁的学生,按年龄由大到小的降序方式展示
SELECT * from students where stu_age >10 ORDER BY stu_age desc;
多字段排序
## 多字段排序,先按性别降序排序,再按年龄升序排序
SELECT * from students where stu_age >10 ORDER BY stu_denger DESC,stu_age ASC ;
5.5 聚合函数
SQL中提供了一些可以对查询记录进行计算的函数,统称聚合函数
- count()
- max()
- min()
- sum()
- avg()
- count() 统计函数,统计满足条件的指定字段值的个数
## 统计表中,数据总条数
SELECT COUNT(*) from students;## 统计表中,学号的总个数
SELECT COUNT(stu_num) from students;## 统计表中,男生的学号总个数
SELECT COUNT(stu_num) from students where stu_denger = '男';
- max() 展示查询数据的指定列的最大值
## 学生表中,最大年龄值
SELECT MAX(stu_age) from students;
- min() 展示查询数据的指定列的最小值
## 学生表中,最小年龄值
SELECT MIN(stu_age) from students;
- sum() 求和,满足查询条件的值的指定列的和
## 全部学生年龄的总和
SELECT sum(stu_age) from students;
- avg() 计算平均值,满足查询条件的值的指定列的平均值
## 全部学生年龄的平均值
SELECT avg(stu_age) from students;
5.6分组查询
将数据表中的数据按照分类进行分组查询
select 分组字段/聚合函数 from 表名 where 条件 group by 分组列名 having 条件
## 查询全部数据,以学生年龄分组
SELECT stu_name,stu_age FROM students GROUP BY stu_age;## 使用聚合函数count(),查询男女性别的各自总人数
SELECT stu_denger,COUNT(stu_denger) from students GROUP BY stu_denger;## 使用聚合函数avg(),查询男女生的平均年龄
SELECT stu_denger,AVG(stu_age) from students GROUP BY stu_denger;## 使用聚合函数,加having条件,查询性别男的,按年龄分组后,年龄大于18岁以上的人数,再按年龄升序排序展示
SELECT stu_age,COUNT(stu_num) from students where stu_denger = '男' GROUP BY stu_age HAVING stu_age > 18 ORDER BY stu_age;
分组查询执行顺序:
- 先执行where语句,按条件对数据表进行查询
- 再执行group,对按条件查询出来的数据进行分组
- 再执行having,对以上分组后的数据,进行条件查询
- 最后执行order by ,对以上结果进行排序
5.7 分页查询 limit
select ...
from ...
where ...
limit param1,param2
- param1 int :表示获取查询语句的结果中的第一条数据的索引(索引从0开始)
- param2 int : 表示获取查询记录的条数(如果剩下的数据条数<param2,则返回剩下的所有条数)
对学生表进行数据查询,总共8条数据,每页展示三条,一共三页
总记录数: count 8
每页显示书:pagesize 3
总页数:pageCount = count%pagesize ? count%pagesize : count%pagesize + 1
##分页查询,第一页
SELECT * from students LIMIT 0,3; (1-1)*3 (当前页码-1)*每页查询条数##分页查询,第二页
SELECT * from students LIMIT 3,3; (2-1)*3##分页查询,第三页
SELECT * from students LIMIT 6,3; (3-1)*3# 如果在一张数据表中:
# pageNum表示查询的页码
# pageSize表示每页查询的条数
# 通用非也语句如下:
select * from <tableName> where conditions limit (pageNum-1)*pageSize , pageSize;
三、数据表的关联关系
1.关联关系介绍
MySQL是关系型数据库,不仅可以存储数据,还可以维护数据与数据之间的关联关系,通过在数据表中添加字段来建立外键约束
数据与数据之间的关联关系分为四种:
- 一对一
- 一对多
- 多对一
- 多对多
2.外键约束
外键约束—将一个表添加外键约束,与另一张表的主键关联,这个外键约束列的数据,必须在关联的主键字段中存在
案例
新建班级表
CREATE TABLE `class` (`class_id` int NOT NULL,`class_name` varchar(255) NOT NULL,`class_remark` varchar(255) DEFAULT NULL,PRIMARY KEY (`class_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
新建学生表(在学生表中添加外键,与班级表的class_id主键关联)
CONSTRAINT FK_STUDENT_CLASS FOREIGN KEY (cid) REFERENCES class (class_id)
CREATE TABLE `students` (`stu_num` char(8) primary key,`stu_name` varchar(20) NOT NULL,`stu_denger` char(2) NOT NULL,`stu_age` int NOT NULL,`stu_tel` char(11) NOT NULL,`stu_qq` varchar(11) DEFAULT NULL,`cid` int DEFAULT NULL,CONSTRAINT FK_STUDENT_CLASS FOREIGN KEY (cid) REFERENCES class (class_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
3.外键约束-级联
主外键关联关系,在设置外键时,需要添加
级联修改(ON UPDATE CASCADE )
级联删除(ON DELETE CASCADE),
保证数据完整性和一致性
## 删除原有外键
alter table students drop foreign key FK_STUDENTS_CLASS##重新设置外键,添加级联修改和级联删除
alter table students add constraint FKSTUDENTS_CLASS foreign key(cid) references class (class_id) ON UPDATE CASCADE ON DELETE CASCADE;
按以上外键设置,增加级联修改和级联删除设置,class表中的class_id 如果修改/删除,students表中的外键cid会自动同步修改/删除。
相关文章:

SQL基础语法介绍-基于MySQL
文章目录 一、SQL分类二、SQL语法1.数据库字段类型1.1.数值类型1.2 字符类型1.3 日期类型 2.字段约束2.1约束介绍2.2 非空约束(not null)2.3 唯一约束(unique)2.4 主键约束(primary key)2.5 自增长主键2.6 …...

一分钟学习数据安全——数据安全风险的系统化应对思路
数据是组织的重要资产,未经授权的数据访问可能导致数据泄露、数据篡改、隐私侵犯和合规风险等问题。企业可以通过数据访问控制来提高信息系统在数据全生命周期管理中的安全性。企业可以引入IAM系统,来控制身份来管理权限。通过对用户访问权限的管理和合适…...
端口port常识
端口(Port)用于区分不同的服务或进程。在网络通信中,每个运行在计算机上的进程都会通过一个端口来与其他计算机上的进程进行通信。以下是一些关于端口和使用常识的信息: 端口号范围: 0-1023:这些被称为“知…...
【Oracle实战】文章导读
【Oracle基础】 【实战】Oracle基础之单机安装-01 Windows 2016 Oracle 11gR2【实战】Oracle基础之单机安装-02 Windows 2016 Oracle 12cR2【实战】Oracle基础之单机安装-03 CentOS 7.9 Oracle 11gR2【实战】Oracle基础之单机安装&#x…...

“人工智能+高职”:VR虚拟仿真实训室的发展前景
在当今科技日新月异的时代,人工智能(AI)与虚拟现实(VR)技术的融合正逐步改变着各行各业,教育领域也不例外。特别是在高等职业教育(简称“高职”)体系中,VR虚拟仿真实训室…...
c语言学习27宏定义条件编译
1类型重定义 typedef typedef关键字 属性:关键字 功能:将数据类型重新定义别名 (数据类型 别名) 格式:typedef数据类型名 别名; 例子:typedef unsigned char u8; 位置…...

理论结合实践:用Umami构建网站分析系统
个人博客地址(欢迎大家访问):理论结合实践:用Umami构建网站分析系统 1. 引言 网站统计分析是一种通过收集、处理和分析网站数据来评估网站性能、用户行为和流量来源的综合方法。通过分析用户访问模式、页面浏览量、访问时长、用户…...

Unreal从入门到精通之如何绘制用于VR的3DUI交互的手柄射线
文章目录 前言实现方式MenuLaser实现步骤1.Laser和Cursor2.移植函数3.启动逻辑4.检测射线和UI的碰撞5.激活手柄射线6.更新手柄射线位置7.隐藏手柄射线8.添加手柄的Trigger监听完整节点如下:效果图前言 之前我写过一篇文章《Unreal5从入门到精通之如何在VR中使用3DUI》,其中讲…...

移动充储机器人“小奥”的多场景应用(上)
在当前现代化城市交通体系中,移动充储机器人“小奥”发挥着至关重要的作用。该机器人不仅是一个简单的设备,而是一个集成了高科技的移动充电站,为新能源汽车提供了一种前所未有的便捷充电解决方案。该机器人配备了先进的电池管理系统…...

已解决wordpress提示正在执行例行维护,请一分钟后回来
今天打开网站时提示“正在执行例行维护,请一分钟后回来”,一分钟后还这样,刷新也没用,这究竟是怎么回事了? 问题原因 这是WordPress在更新,wordpress在升级程序、主题、插件时,都会先切换到维护模式&…...
DDR3脚位解析,class分类
SDQ{0-31}:数据信号,为输入/输出双向信号。 SA{0-15}:地址信号为输入信号。 SDQS{0-3}P/N:数据选通信号,数据可以通过DQS的上升沿与下降沿传输。在读模式时,DQS由存储器发给CPU,DQS与数据边沿对齐。在写模…...

【深度学习|目标跟踪】DeepSort 详解
DeepSort详解 1、Sort回顾2、DeepSort的状态向量3、DeepSort的外观特征4、DeepSort的track状态5、DeepSort的代价矩阵以及门控矩阵6、DeepSort的级联匹配 1、Sort回顾 查看这篇博客 2、DeepSort的状态向量 Sort中的卡尔曼滤波使用的目标的状态向量是一个7维的向量,…...

快速图像识别:落叶植物叶片分类
1.背景意义 研究背景与意义 随着全球生态环境的变化,植物的多样性及其在生态系统中的重要性日益受到关注。植物叶片的分类不仅是植物学研究的基础,也是生态监测、农业管理和生物多样性保护的重要环节。传统的植物分类方法依赖于人工观察和专家知识&…...
MTK Android12 user版本MtkLogger
目录 1.修改device/mediatek/system/common/device.mk 2.修改device/mediatek/system/common/mtklog/mtklog-config-bsp-eng.prop,修改为false是为了开机的时候不要自动启动 3.修改device/mediatek/vendor/common/device.mk 4.修改vendor/mediatek/proprietary/…...

Python数据结构day2
一、链表 1.1目的 解决顺序表存储数据有上限,并且插入和删除操作效率低的问题 1.2概念 链表:链式存储的线性表,使用随机物理内存存储逻辑上连续的数据 链表的组成:由一个个结点组成 结点:由数据域和链接域组成&a…...
后台通用tag面包屑
思路:要实现点击左侧菜单栏,页面跳转且显示面包屑(本文用的是TSVue3) 功能点: 最多显示5个标签超过5个时,自动移除最早的标签至少保留1个标签支持标签关闭功能 首先在store.ts 处理路由(点击过的路由,当前…...

oracle数据恢复—通过拼接数据库碎片的方式恢复Oracle数据的案例
Oracle数据库故障: 存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组…...
node.js fluent-ffmpeg 桌面推流
1,安装fluent-ffmpeg,npm install fluent-ffmpeg 2,推流代码: //stream.js const ffmpeg require(fluent-ffmpeg); const rtmpUrl "rtmp://localhost:1935/live/desktop"; //ffmpeg -f gdigrab -i desktop -vcode…...

AWS的流日志
文章目录 一、aws如何观察vpc的日志?二、aws观测其vpc的入口日志三、 具体配置3.1、配置你的存储神器 S33.2、建立子网的流日志 一、aws如何观察vpc的日志? 排查问题的时候除了去抓包看具体的端口信息的时候,还可以根据其所在的vpc的子网信息…...

大数据新视界 -- 大数据大厂之 Hive 数据导入:多源数据集成的策略与实战(上)(3/ 30)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

leetcode73-矩阵置零
leetcode 73 思路 记录 0 元素的位置:遍历整个矩阵,找出所有值为 0 的元素,并将它们的坐标记录在数组zeroPosition中置零操作:遍历记录的所有 0 元素位置,将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...