SQL复习
SQL复习
MySQL
MySQL
MySQL有什么特点?
MySQL 不支持全外连接。
安装
数据类型
MySQL中的数据类型分为哪些?
MySQL中的数据类型主要分为三大类:数值类型、字符串类型、日期时间类型。
其中,
数值类型又分为七种:TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL。
字符串类型分为五种:CHAR、VARCHAR、BLOB、TEXT、LONGTEXT。
日期时间类型分为五种:DATE、TIME、YEAR、DATETIME、TIMESTAMP。
数值类型中,TINYINT的大小是多少?SMALLINT的大小是多少?INT/INTEGER的大小是多少?BIGINT的大小是多少?
在MySQL的数值类型中,TINYINT、SMALLINT、INT、BIGINT四者之间的大小排序是:TINYINT<SMALLINT<INT<BIGINT。
且按照2的整数幂递增,分别对应1bytes、2bytes、4bytes、8bytes。
数值类型 | 大小 |
---|---|
TINYINT | 1bytes |
SMALLINT | 2bytes |
INT/INTEGER | 4bytes |
BIGINT/Long | 8bytes |
数值类型中,FLOAT、DOUBLE的大小分别是多少?
两者都是浮点数值,前者是单精度浮点数,后者是双精度浮点数。
数值类型 | 大小 |
---|---|
FLOAT | 4bytes |
DOUBLE | 8bytes |
字符串类型都有哪些?
字符串类型包括:CHAR、VARCHAR、BLOB、TEXT、LONGTEXT。
CHAR和VARCHAR有什么区别?CHAR的大小是多少?VARCHAR的大小是多少?
CHAR是定长字符串,VARCHAR是变长字符串。
但两者在使用时都需要指定长度。
字符串类型 | 大小 |
---|---|
CHAR | 0-255bytes |
VARCHAR | 0-65535bytes |
BLOB常用于什么场景?什么情况下会使用BLOB?
BLOB是二进制形式的长文本数据,所以经常用于图片数据等需要用二进制保存的数据。
日期时间类型分为哪几种?
日期时间类型分为:DATE、TIME、YEAR、DATETIME、TIMESTAMP。
DATE类型、TIME类型、DATETIME类型、TIMESTAMP类型的数据分别是什么格式?
日期时间类型 | 格式 |
---|---|
DATE | YYYY-MM-DD |
DATETIME | YYYY-MM-DD HH:MM:SS |
TIME | HH:MM:SS |
TIMESTAMP | YYYY-MM-DD |
SQL介绍
SQL
SQL的全拼是什么?
SQL全拼:Structured Query Language,也叫结构化查询语言。
SQL92和SQL99有什么区别呢?
SQL92和SQL99分别代表了92年和99年颁布的SQL标准。
在 SQL92 中采用(+)代表从表所在的位置,而且在SQL92 中,只有左外连接和右外连接,没有全外连接。
LEFT JOIN 和 RIGHT JOIN 只存在于 SQL99 及以后的标准中,在 SQL92 中不存在,只能用(+)表示。
SQL99 的外连接有哪些形式?
SQL99 的外连接包括了三种形式:
- 左外连接:LEFT JOIN 或 LEFT OUTER JOIN
- 右外连接:RIGHT JOIN 或 RIGHT OUTER JOIN
- 全外连接:FULL JOIN 或 FULL OUTER JOIN
SQL语言按照功能划分为哪四部分?它们分别是什么作用?
SQL语言按照功能划分为DDL、DML、DCL、DQL四部分。
DDL:Data Definition Language,数据定义语言。用于定义数据库对象,包括数据库、数据表和列。
DML:Data Manipulation Language,数据操作语言。用于增加、删除、修改数据表中的记录。
DCL:Data Control Language,数据控制语言。用于定义访问权限和安全级别。
DQL:Data Query Language,数据查询语言。用于查询想要的记录。
什么是ER图?
ER图即Entity Relationship Diagram,也叫实体-关系图。是用于描述现实世界的概念模型,主要包含三个要素:实体、属性、关系。
实体:我们要管理的对象;
属性:每个实体的属性;
关系:对象之间的关系。
SQL的单行注释怎么写?多行注释怎么写?
-- 单行注释
#单行注释
/*
多行注释
*/
SELECT、FROM、WHERE、HAVING、ORDER BY、LIMIT、GROUP BY七个关键字之间的执行顺序是什么?
执行顺序是:FROM→ WHERE →GROUP BY → HAVING→SELECT→ORDER BY→LIMIT。
为表添加了别名之后,还能使用原来的表名吗?
一旦设置别名,就不能再直接使用表名了。
int(11)
中的11
是什么意义?
int
代表整数类型,11
代表显示长度为11位,即最大有效显示长度,与类型包含的数值范围大小无关。
varchar(255)
中的255
是什么含义?
255
表示可变字符串类型的最大长度为255。
DCL
DCL是?作用是什么?主要关键字有哪些?
DCL(Data Control Language),是数据库控制语言。
主要用于管理数据库用户、控制用户数据库访问权限。
主要关键字包括:GRANT、REVOKE等。
如何查询MySQL中的所有用户?重点
SELECT * FROM mysql.user;
如何创建用户?重点
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
如何修改用户密码?重点
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ;
如何删除用户?重点
DROP USER '用户名'@'主机名' ;
如何查询用户的权限?重点
SHOW GRANTS FOR '用户名'@'主机名' ;
如何授予用户权限?重点
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
如何撤销用户权限?重点
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
CREATE USER 'itsy'@'localhost' IDENTIFIED BY '123456';
#以上语句的作用是什么?
创建用户itsy, 只能够在当前主机localhost访问, 密码123456。
CREATE USER 'sycoder'@'%' IDENTIFIED BY '123456';
#以上语句的作用是什么?
创建用户sycoder, 可以在任意主机访问该数据库, 密码123456。
ALTER USER 'sycoder'@'%' IDENTIFIED WITH mysql_native_password BY '111111' ;
#以上语句的作用是什么?
修改用户sycoder的访问密码为111111。
DROP USER 'itsy'@'localhost';
#以上语句的作用是什么?
删除 itsy@localhost 用户。
DDL
什么是DDL?DDL的作用是什么?主要关键字包括哪些?
DDL全拼为Data Definition Language,也就是数据定义语言。
用于定义数据库对象,包括数据库、数据表和列。
主要关键字包括:CREATE、DROP、USE、SHOW、ALTER、TRUNCATE等。
如何查看当前有哪些数据库?
SHOW databases;#查看哪些数据库
如何查询当前数据库?
SELECT database();
如何创建数据库?
create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序 规则 ] ;
如果创建的数据库已经存在,如何避免出现报错ERROR 1007
?
加上可选参数
if not exists
,可以解决这个问题
如何删除数据库?
drop database [ if exists ] 数据库名;
如果删除的数据库本身就不存在,如何避免报错?
加上参数
IF EXISTS
。
DROP DATABASE IF EXISTS itsy;
如何切换数据库?
use 数据库名;
如何查看当前数据库中的所有表?
show tables;
如何查看指定表的结构?
desc 表名;
如何查询指定表的建表语句?
show create table 表名;
如何创建表?
CREATE TABLE 表名( 字段1 字段1类型 [COMMENT 字段1注释 ],字段2 字段2类型 [COMMENT 字段2注释 ], 字段3 字段3类型 [COMMENT 字段3注释 ], ...... 字段n 字段n类型 [COMMENT 字段n注释 ] )
[ COMMENT 表注释 ];
如何向表中添加字段?
ALTER TABLE 表名 ADD 字段名 类型 (长度)[ COMMENT 注释 ] [ 约束 ];
如何修改字段的数据类型?
ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度);
如何修改字段名和字段类型?
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];
如何删除字段?
ALTER TABLE 表名 DROP 字段名;
如何修改表名?
ALTER TABLE 表名 RENAME TO 新表名;
如何删除表?
DROP TABLE [ IF EXISTS ] 表名;
如何删除指定表,并创建新表?
TRUNCATE TABLE 表名;
DML
什么是DML?DML的作用是什么?主要关键字是哪些?
DML是Data Manipulatioin Language,也叫数据操作语言。
主要用于对数据的增加、删除和修改。
主要关键字包括:INSERT、UPDATE、DELETE。
如何向指定的表中添加数据?
向指定的表中添加数据时,分为两种情况:
第一种:只给指定的字段添加数据(其它字段采用默认值)。
第二种:给全部字段添加数据。
当我们为全部字段赋值时,可以省去字段名的内容。
#给指定的字段添加数据:
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
#给全部字段添加数据:
INSERT INTO 表名 VALUES (值1, 值2, ...);
如何修改指定数据的字段内容?
UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [ WHERE 条件 ] ;
如何删除指定表中的指定数据?如果删除表中的数据时,没有添加WHERE关键字,会有什么后果?
如果米有WHERE关键字,会将表中的数据全部删除。
DELETE FROM 表名 [ WHERE 条件 ]
DQL
什么是DQL?DQL有什么作用?DQL的关键字有哪些?
DQL(Data Query Language),即数据库查询语言。
DQL主要用于数据的查询。
DQL的关键字包括:SELECT、WHERE、GROUP、ORDER BY、FROM、DISTINCT、HAVING、LIMIT。
为列添加别名使用什么关键字?
为列添加别名需要使用AS关键字,但其实AS关键字可以省略。
WHERE和HAVING的区别是什么?重点
两者的区别主要体现在两个方面:
- 两者执行时间不同:WHER在分组之前执行,不参与分组;HAVING在分组之后执行。
- 判断条件不同:WHERE不能对聚合函数进行判断,但是HAVING可以。
使用ORDER BY
对查询结果进行排序时,如果不指定排序方式,则默认排序方式是什么?
ORDER BY的排序方式有两种,DESC和ASC。
默认的排序方式是ASC,也就是升序排序。
LIMIT
的作用是什么?起始索引是从几开始的?
LIMIT用于分页查询。起始索引是从0开始的。
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;
LIMIT的起始索引什么情况下可以省略?
如果只查询第一页的数据,可以省略LIMIT的起始索引。
SELECT查询
在SELECT查询中,关键字的顺序是什么?
关键字的顺序是绝对不能颠倒的:
SELECT...FROM...WHERE...GROUP BY...HAVING...ORDER BY...
查询常数
为什么要对常数进行查询呢?
常数查询用于整合不同的数据源时,作为标记数据源来源的标记。如:
SELECT '王者荣耀' as platform,name FROM heros;
在这段SQL语句中,我们虚构了一个
platform
字段,并将其设置为固定值“王者荣耀”。所以查询结果中,将会增加一个字段
platform
,其内容均为“王者荣耀”。
使用常数查询时,有哪些需要注意的地方?
需要注意,如果常数是一个字符串,则必须使用单引号
‘’
,没有单引号的常数,会被SQL当作列名进行检查,从而造成“找不到列”的错误。但如果常数是一个数字,则可以直接写数字,不会造成报错。
去除重复行
去除重复行使用的关键字是什么?
去除重复行需要使用
DISTINCT
关键字。
DISTINCT
关键字的作用是什么?如何使用?
DISTINCT
用于去除查询结果中的重复数据,其去重的对象是所有的列。在SELECT关键字后,所有列名前使用。如:
SQL:SELECT DISTINCT attack_range FROM heros
如果DISTINCT的位置错误,则会造成报错。
排序
对查询结果进行排序时需要使用的关键字是什么?
使用ORDER BY对查询的结果进行排序。
ORDER BY语句有什么地方需要掌握?
ORDER BY有以下几处需要掌握:
- ORDER BY后可以有一个或多个列名。对多个列的排序会按照先后顺序进行。
- OREDR BY可以设置排序规则,ASC表示递增,DESC表示递减。默认按照ASC进行排序。
- ORDER BY可以对非选择列进行排序,即:即使SELECT后没有此列,也可以放在ORDER BY后参与排序。
- ORDER BY语句通常位于SELECT语句的最后一条子句,否则会报错。
如果我们需要对不同的列采用不同的排序规则(A列升序,B列降序),应该怎么写?
对不同的列进行排序时,可以直接在ORDER BY语句后的列名后增加排序规则。
如:
SQL:SELECT name, hp_max FROM heros ORDER BY mp_max, hp_max DESC
此时,查询结果将会按照mp_max升序,hp_max降序的方式排序。
约束返回结果数
如何约束返回结果的数量?
在MySQL中,使用LIMIT关键字来约束返回结果的数量。
注意,在不同的DBMS中,使用的关键字是不同的。
约束返回结果有什么好处?
约束返回结果可以减少数据表的网络传输量,提升查询效率。避免全表扫描。
执行顺序
SQL中,SELECT语句的执行顺序是什么样的?重点
注意,在MySQL和Oracle中,SELECT的执行顺序基本相同。
FROM → WHERE → GROUP BY → HAVING → SELECT的字段 → DISTINCT → ORDER BY → LIMIT
具体如下:
SELECT DISTINCT player_id, player_name, count(*) as num #顺序5
FROM player JOIN team ON player.team_id = team.team_id #顺序1
WHERE height > 1.80 #顺序2
GROUP BY player.team_id #顺序3
HAVING num > 2 #顺序4
ORDER BY num DESC #顺序6
LIMIT 2 #顺序7
完整的 SELECT 语句内部的执行顺序是什么样的?重点
一条完整的 SELECT 语句内部的执行顺序是这样的:
- FROM 子句组装数据(包括通过 ON 进行连接);
- WHERE 子句进行条件筛选;
- GROUP BY 分组 ;
- 使用聚集函数进行计算;
- HAVING 筛选分组;
- 计算所有的表达式;
- SELECT 的字段;
- ORDER BY 排序;
- LIMIT 筛选。
SELECT *
SELECT *
有什么缺点?
使用
SELECT *
会增加数据库负担。在实际工作中,应尽量写出所需要的列名,生产环境下,尽量不要使用SELECT *
进行查询。
通配符
如何查询英雄中,包含“太”字的英雄都有哪些?
使用通配符查询。
SQL:SELECT name FROM heros WHERE name LIKE '%太%'
为什么要尽量少的使用通配符进行查询?
- 通配符需要消耗较长的时间来进行匹配。
- 如果LIKE检索的字段有索引,那么模糊查询时,索引可能失效。
太%
和%太
有什么区别?
- 首先两者最大的区别在于查询的对象不同,前者指以“太”开头的元素,后者指以“太”结尾的元素。
- 其次,当对应字段存在索引时,前者不会进行全表扫描,后者会进行全表扫描。
比较运算符
SQL中的比较运算符有哪些?
SQL中的运算符有10种:
>
、>=
、<
、<=
、=
、<>或!=
、BETWEEN AND
、IN()
、LIKE 占位符
、IS NULL
和IS NOT NULL
。
BETWEEN AND
包含最大值和最小值吗?
BETWEEN AND
包含最大值和最小值。
逻辑运算符
SQL中的逻辑运算符有哪些?
SQL中的逻辑运算符有四种:IN、AND或
&&
、OR或||
、NOT或!
。
当 WHERE 子句中同时存在 OR 和 AND 的时候,哪个优先级会更高?
当 WHERE 子句中同时存在 OR 和 AND 的时候,AND 执行的优先级会更高,即: SQL 会优先处理 AND 操作符,然后再处理 OR 操作符。
所以当WHERE子句中同时出现AND和OR的时候,一定要注意执行的先后顺序。
分组
GROUP BY是什么?有什么地方需要注意?
GROUP BY用于对查询到的数据进行分组。使用GROUP BY进行分组时,字段的值为NULL的数据也会被分为一组。
WHERE和HAVING的区别是什么?
- WHERE 是用于过滤数据行,而 HAVING 则用于分组。
- HAVING一般和GROUP BY组合使用。
DBMS
DBMS
常见的DBMS有哪些?哪些是关系型数据库?哪些是非关系型数据库?重点
常见的DBMS有MySQL、SQL Server、Redis、Elasticsearch、DB2和MongoDB。
关系型数据库:Oracle、MySQL、SQL Server、DB2。
非关系型数据库:MongoDB、Redis、Elasticsearch。
其中,MongoDB是文档型数据库,Redis是键值型数据库,Elasticsearch是搜索引擎。
DBMS是什么?
DBMS即DataBase Management System,也叫数据库管理系统。
DBS和DBMS哪一个概念更大?重点
DBS即DataBase System,也叫数据库系统,包括了数据库、数据库管理系统以及数据库管理人员DBA。
所以DBS是比DBMS更大的概念。
NoSQL数据库有哪些类型?重点
NoSQL类型众多,包括:键值型数据库、搜索引擎、文档型数据库、列存储和图型数据库等。
键值型数据库的优缺点是什么?重点
键值型数据库常用于内容缓存。
优点:查询速度快。
缺点:无法自由使用条件过滤。
如果不知道数据的键,就需要遍历所有的键来查询。
Redis是最流行的键值型数据库。
什么是文档型数据库?
文档型数据库将文档作为处理信息的基本单位,一个文档就相当于一条记录。MongoDB是最流行的文档型数据库。
什么是搜索引擎?
搜索引擎的优势在于采用了全文搜索的技术,相对关系型数据库,有更高的全文检索效率。
什么是列存储?
“列式存储”式相对于“行式存储”而言的,常见的Oracle、MySQL、SQL Server等都是“行式存储数据库”,而列式存储强调“将数据按照列存储到数据库中”。
列存储的优势在于大大降低系统的I/O,适用于分布式文件系统。
为什么列存储能降低系统的I/O?
因为采用列存储时,相邻数据的数据类型是相同的,这就为压缩提供了方便。压缩之后,自然也就可以降低系统的I/O。
什么是图型数据库?
利用图的数据结构实现了实体之间的关系,数据模型主要以节点和边(也叫关系)来实现,优势在于能高效地解决复杂的关系问题。
Oracle
Oracle
Oracle通过什么来判断是否存在缓存和执行计划,从而决定使用硬解析还是软解析的?
Oracle通过共享池来判断。
Oracle中的SQL是如何执行的?
Oracle中的SQL的执行分为六个步骤:
语法检查→语义检查→权限检查→共享池检查→优化器→执行器
什么是语法检查?什么是语义检查?
语法检查指:检查SQL的拼写是否正确,当SQL的拼写有问题时,Oracle会报语法错误。
语义检查指:检查SQL中的访问对象是否存在。
语法检查和语义检查共同保证SQL语句没有错误。
什么是权限检查?
权限检查指:检查用户是否具备访问该数据的权限。
什么是共享池检查?
共享池(Shared Pool)是一块内存池,主要用于缓存SQL语句和该SQL语句的执行计划。
Oracle通过检查共享池中是否存在SQL语句的执行计划,来判断进行软解析还是硬解析。
具体的流程是:Oracle首先对SQL语句进行Hash运算,根据得出的Hash值在库缓存(Library Cache)中查找,如果存在该SQL语句的执行计划,就按既有的执行计划执行,跳过优化器环节,直接进入执行器环节,这就是软解析;如果不存在该SQL语句的执行计划,就进入优化器环节,创建该SQL语句的解析树,生成执行计划。
什么是优化器?什么是执行器?
优化器:会进行硬解析,创建解析树,生成执行计划。
执行器:SQL语句的具体执行位置。
什么是硬解析?什么是软解析?
硬解析和软解析离不开共享池。
对于一个SQL语句,Oracle会先计算该SQL语句的Hash值,根据此Hash值,判断共享池中是否有对应的执行计划。如果有,就会执行软解析;相反,如果没有,就会进行硬解析。
软解析即利用共享池中的现有的执行计划执行SQL语句;
硬解析指共享池的缓存中,没有SQL语句的执行计划,需要利用优化器创建解析树对SQL语句进行解析,然后生成执行计划。
库缓存区的作用是什么?
库缓存区主要用于缓存SQL语句和执行计划。
数据字典缓冲区的作用是什么?
数据字典缓冲区用于Oracle中的对象定义,如:表、视图、索引等对象。
对SQL语句进行解析时,需要从数据字典缓冲区中获取。
绑定变量
Oracle中的绑定变量有什么作用?有什么弊端?
绑定变量可以让我们减少硬解析,减少优化器的解析工作量。
但绑定变量本质是动态SQL的方式,参数的变化会对SQL执行的效率造成影响,同时,绑定变量也会对SQL优化造成一定的影响。
MySQL
如何检查你本机有没有安装MySQL?
待定
my.ini文件有什么作用?
my.ini文件用于对MySQL进行配置,如:修改默认存储引擎、修改默认事务隔离级别等。
MySQL中的SQL是如何执行的?SQL语句在MySQL中的执行流程是什么?
在MySQL中,SQL语句是在mysqld中的SQL层执行的,具体流程为:
SQL语句→查询缓存→解析器→优化器→执行器。
MySQl的架构是什么?
MySQL采用的是C/S架构,即:Client/Server。
服务器端使用的是mysqld。
mysqld的结构是什么样的?
mysqld分为三层结构:连接层、SQL层、存储引擎层。
MySQL和Oracle的区别是什么?
MySQL中的存储引擎采用了插件的形式,每种存储引擎都对应一种数据库应用环境。且允许开发人员设置自己的存储引擎。
MySQL中,常用的存储引擎有哪些?
MySQL中常用的存储引擎有:InnoDB、MyISAM、Memory、NDB、Archive等。
mysqld
连接层的作用是什么?
连接层负责建立客户端和服务器端的连接。
连接建立后,客户端会发送SQL到服务器端。
SQL层的作用是什么?
SQL层负责对SQL语句进行查询处理。
存储引擎层的作用是什么?
存储引擎层负责与数据库打交道,负责数据的存储和读取。
SQL层的结构是什么样的?
SQL层分为四部分:查询缓存、解析器、优化器、执行器。
为什么MySQL8.0之后,抛弃了查询缓存的功能?
抛弃的原因主要在于查询缓存的效率不高。
查询缓存的作用是什么?
查询缓存会保存已经之前查询过的SQL语句,当这条SQL语句再次出现时,服务器端就会直接将结果返回给客户端;如果查询缓存中没有这条SQL语句,就会进入解析器阶段。
Navicat
SQL函数
SQL函数
为什么不建议使用SQL函数?
因为不同的DBMS之间的差异很大,大部分DBMS都会有属于自己的SQL函数,这导致采用SQL函数的代码的可移植性很差。
聚合函数
什么是聚合函数?常用的聚合函数有哪些?
聚合函数也叫聚集函数,指用于对一组数据进行汇总的函数。参数为一组数据的集合,返回值为单个值。
常用的聚合函数有五个:COUNT、MAX、MIN、AVG、SUM。
WHERE、聚合函数、HAVING三者之间的执行顺序是什么?
WHERE→聚合函数→HAVING。
COUNT(*)和COUNT(字段)有什么区别?
- 前者只是统计数据行,不论该字段的值是否为NULL;
- 后者会忽略字段的值为NULL的数据。
当MAX或MIN函数的参数为字符串时,如何计算最大值或最小值?
MAX 和 MIN 函数用于字符串类型数据的统计时,如果是英文字母,则按照 A—Z 的顺序排列,越往后,数值越大。如果是汉字则按照全拼拼音进行排列,越靠后,值越大。
需要说明,我们需要先把 name 字段(汉字类型)统一转化为 gbk 类型,使用CONVERT(name USING gbk),然后再使用 MIN 和 MAX 取最小值和最大值。
数值函数
常用的数值函数有哪些?
常用的数值函数有:ABS、SIGN、SQRT、LEAST、MOD、ROUND。
ROUND函数有什么作用?
ROUND函数可以对数据进行四舍五入,它有两个参数,分别表示需要处理的数据和四舍五入的位数。
SELECT ABS(-2)
的运行结果是什么?
运行结果为 2。
SELECT MOD(101,3)
的运行结果是什么?
运行结果 2。
SELECT ROUND(37.25,1)
的运行结果是什么?
运行结果 37.3。
字符串函数
常用的字符串函数有哪些?
常用的字符串函数有:CONCAT、LENGTH、CHAR_LENGTH、LOWER、UPPER、SUBSTRING、REPLACE。
LEENGTH()
和CHAR_LENGTH()
的区别是什么?
- 两个函数的共同点都是计算字段的长度。
- 在
LENGTH()
中,一个汉字算作三个字符,数字和字母都算作一个字符。- 在
CHAR_LENGTH()
中,汉字、数字、字母,都算作一个字符。
SELECT CONCAT('abc', 123)
的运行结果是什么?
运行结果为 abc123。
SELECT LENGTH('你好')
的运行结果是什么?
运行结果为 6。
SELECT CHAR_LENGTH('你好')
的运行结果是什么?
运行结果为 2。
SELECT LOWER('ABC')
的运行结果是什么?
运行结果为 abc。
SELECT REPLACE('fabcd', 'abc', 123)
的运行结果是什么?
运行结果为 f123d。
SELECT SUBSTRING('fabcd', 1,3)
的运行结果是什么?
运行结果为 fab。
日期函数
常用的日期函数有哪些?
常用的日期函数有:YEAR、HOUR、QUARTER。
QUARTER函数的作用是什么?
QUARTER函数可以返回日期对应的季度,范围为1~4。
为什么对日期进行比较时,不能直接使用日期字符串?
我们一般使用DATE函数来对日期进行比较。
一般情况下,我们无法确认birthdate的数据类型是字符串,还是datetime类型,所以,使用DATE函数是比较安全的。
SELECT CURRENT_DATE()
的运行结果是什么?
运行结果为 2019-04-03。
SELECT CURRENT_TIME()
的运行结果是什么?
运行结果为 21:26:34。
SELECT CURRENT_TIMESTAMP()
的运行结果是什么?
运行结果为 2019-04-03 21:26:34。
SELECT EXTRACT(YEAR FROM '2019-04-03')
的运行结果是什么?
运行结果为 2019。
SELECT DATE('2019-04-01 12:00:05')
的运行结果是什么?
运行结果为 2019-04-01。
流程函数
常见的流程函数有哪些?
常见的流程函数有:IF、IFNULL。
加密解密函数
常见的加密解密函数有哪些?
常见的加密解密函数有:PASSWORD、MD5、SHA、ENCODE、DECODE。
转换函数
什么是转换函数?常见的转换函数有哪些?
转换函数用于转换数据之间的类型。
常见的转换函数有:CAST、COALESCE。
CAST函数的作用是什么?它的参数是什么?
CAST用于数据类型转换,其参数是一个表达式。
这个表达式通过AS关键字分割了两个参数,分别表示原始数据类型和目标数据类型。
COALESCE函数的作用是什么?
返回第一个非空数值。
SELECT CAST(123.123 AS INT)
的运行结果是什么?为什么?
运行结果会报错。
CAST 函数在转换数据类型的时候,不会四舍五入,如果原数值有小数,那么转换为整数类型的时候就会报错。
SELECT CAST(123.123 AS DECIMAL(8,2))
的运行结果是什么?DECIMAL(8,2)
是什么含义?
运行结果为 123.12。
DECIMAL(8,2)
中,8代表整数部分和小数部分加起来最大的位数,2代表小数的位数。即:精度为8位,小数位数为2位的数据类型。
SELECT COALESCE(null,1,2)
的运行结果是什么?
运行结果为 1。
约束
常见的约束有哪些?
常见的约束有六种:非空约束、唯一约束、主键约束、默认约束、外键约束、检查约束。
六种常见约束对应的关键字分别是什么?
约束 | 关键字 |
---|---|
非空约束 | NOT NULL |
唯一约束 | UNIQUE |
主键约束 | PRIMARY KEY |
外键约束 | FOREIGN KEY |
默认约束 | DEFAULT |
检查约束 | CHECK |
主键约束的作用是什么?
主键约束的作用是唯一标识一条记录,不能重复,不能为空。即:UNIQUE+NOT NULL。
一个数据表的主键只能有一个,但是,主键可以是一个字段,也可以是多个字段组合。
外键约束的作用是什么?
外键约束确保了表与表之间引用的完整性。一个表中的外键,对应另一张表中的主键。
普通索引和唯一性约束有什么区别?
唯一性约束相当于创建了一个约束和普通索引(NORMAL INDEX),普通索引只是提升数据的检索速度,不是对字段的唯一性约束。
多表查询
多表查询
多表查询分为哪几类?
多表查询分为四类:内连接查询、外连接查询、自连接查询、联合查询。
内连接查询
内连接查询分为哪几类?
内连接查询分为两类:隐式内连接查询和显式内连接查询。
什么是隐式内连接查询?
SELECT 字段列表 FROM 表1 , 表2 WHERE 条件 ... ;
什么是显式内连接查询?
SELECT 字段列表 FROM 表1 [ INNER ] JOIN 表2 ON 连接条件 ... ;
#INNER可以省略
外连接查询
外连接查询分为哪几类?
外连接查询分为两类:左外连接和右外连接。
什么是左外连接?
SELECT 字段列表 FROM 表1 LEFT [ OUTER ] JOIN 表2 ON 条件 ... ;
什么是右外连接?
SELECT 字段列表 FROM 表1 RIGHT [ OUTER ] JOIN 表2 ON 条件 ... ;
现有表1、表2,两张表,C是它们的交集,A、B分别是两表不相交的部分数据,则表1左外连接表2时,查询结果是什么?表1右外连接表2的结果是什么?
左外连接会将左表的全部数据以及两表相交的部分数据查询出来作为结果。
所以表1左外连接表2的结果是A+C。
同理可知,表1右外连接表2的结果是C+B。
自连接查询
什么是自连接?
SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件 ... ;
联合查询
什么是联合查询?
SELECT 字段列表 FROM 表名 ...
UNION [ALL]
SELECT 字段列表 FROM 表名 ...
子查询
标量子查询、列子查询、行子查询、表子查询的区别是什么?
子查询分为:标量子查询、列子查询、行子查询、表子查询。
它们的分类依据是查询结果的格式。
即:
标量子查询的结果是单个值;
列子查询的结果是一列数据;
列行子查询的结果是一行数据;
表子查询的结果是多行多列的表。
子查询相关的常用的关键字有哪些?
子查询常用的关键字有:IN、NOT IN、ANY、SOME、ALL。
关联子查询和非关联子查询的区别是什么?
关联子查询和非关联子查询的区别在于是否执行多次子查询。
非关联子查询:子查询从数据表中查询了数据结果,这个数据结果只执行一次,然后这个数据结果作为主查询的条件进行执行。
关联子查询:子查询需要执行多次,即采用循环的方式,先从外部查询开始,每次都传入子查询进行查询,然后再将结果反馈给外部。
什么是存在性检测子查询?
使用EXISTS关键字的子查询即为存在性检测子查询。
什么是集合比较子查询?
存储引擎
MySQL中,常用的存储引擎有哪些?
MySQL中常用的存储引擎有:InnoDB、MyISAM、Memory、NDB、Archive等。
InnoDB的特点是什么?
InnoDB是MySQL5.5版本之后的默认引擎。
最大的特点有三个:
- 支持事务、
- 支持行级锁定(提高并发性能)、
- 支持外键约束。
MyISAM的特点是什么?
MyISAM是MySQL5.5之前的默认存储引擎,特点是:不支持事务,不支持外键,但是速度快且占用的内存少。
Memory的特点是什么?
Memory的特点是:使用系统内存作为存储介质,可以得到更快的响应速度。但是,如果mysqld进程崩溃,则会导致所有数据丢失,所以要慎重使用Memory作为存储引擎。
NDB的特点是什么?
NDB主要用于MySQL Cluster分布式集群环境。
Archive的特点是什么?
Archive有很好的压缩机制,用于文件归档,在请求写入时,会进行压缩,常用来作为仓库。
如何查看当前 MySQL 支持的存储引擎都有哪些?
通过 SHOW ENGINES 命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。
连接
内连接:将多个表之间满足连接条件的数据行查询出来。它包括了等值连接、非等值连接和自连接。外连接:会返回一个表中的所有记录,以及另一个表中匹配的行。它包括了左外连接、右外连接和全连接。交叉连接:也称为笛卡尔积,返回左表中每一行与右表中每一行的组合。在 SQL99 中使用的 CROSS JOIN。
NATURAL JOIN
CROSS JOIN
ON 连接
USING 连接
SQL92和SQL99中的连接有什么区别?
在 SQL92 中采用(+)代表从表所在的位置,而且在SQL92 中,只有左外连接和右外连接,没有全外连接。
LEFT JOIN 和 RIGHT JOIN 只存在于 SQL99 及以后的标准中,在 SQL92 中不存在,只能用(+)表示。
SQL99 的外连接有哪些形式?
SQL99 的外连接包括了三种形式:
- 左外连接:LEFT JOIN 或 LEFT OUTER JOIN
- 右外连接:RIGHT JOIN 或 RIGHT OUTER JOIN
- 全外连接:FULL JOIN 或 FULL OUTER JOIN
不同 DBMS 中使用连接需要注意的地方有哪些?
- 不是所有的 DBMS 都支持全外连接
- Oracle 没有表别名 AS
- SQLite 的外连接只有左连接
关于连接的性能问题有哪些需要注意?
- 控制连接表的数量
- 在连接时不要忘记 WHERE 语句
- 使用自连接而不是子查询
为什么要使用自连接而不是子查询?
因为子查询的判断对象是未知的数据表;自连接的判断对象是已知的数据表,
所以大部分 DBMS 中都对自连接处理进行了优化,在许多 DBMS 的处理过程中,对于自连接的处理速度要比子查询快得多。
事务
事务
MySQL 5.5 版本之前,默认的存储引擎是什么?为什么要改变默认的存储引擎?
MySQL 5.5 版本之前,默认的存储引擎是MyISAM。在 5.5 版本之后默认存储引擎是 InnoDB。
InnoDB 取代 MyISAM 的重要原因,是因为InnoDB 支持事务,而MyISAM不支持事务。
事务的英文是什么?
事务的英文是transaction。
事务的特性是什么?
事务的特性:ACID
- A:原子性(Atomicity),事务是不可分割的,它是进行数据处理操作的基本单位。
- C:一致性(Consistency),数据库在进行事务操作后,会由原来的一致状态,变成另一种一致的状态。当事务提交后,或者当事务发生回滚后,数据库的完整性约束不能被破坏。
- I:隔离性(Isolation),每个事务都是彼此独立的,不会受到其他事务的执行影响。一个事务在提交之前,对其他事务都是不可见的。
- D:持久性(Durability),事务提交之后对数据的修改是持久性的,即使在系统出故障比如系统崩溃或者存储介质发生故障,数据的修改依然是有效的。
事务的常用控制语句都有哪些?
- START TRANSACTION 或者 BEGIN,作用是显式开启一个事务。
- COMMIT:提交事务。当提交事务后,对数据库的修改是永久性的。
- ROLLBACK 或者 ROLLBACK TO [SAVEPOINT],意为回滚事务。意思是撤销正在进行的所有没有提交的修改,或者将事务回滚到某个保存点。
- SAVEPOINT:在事务中创建保存点,方便后续针对保存点进行回滚。一个事务中可以存在多个保存点。
- RELEASE SAVEPOINT:删除某个保存点。
- SET TRANSACTION,设置事务的隔离级别。
使用事务的方式有哪些?有什么区别?
使用事务有两种方式:隐式事务和显式事务。
- 隐式事务:实际上就是自动提交。
- 显式事务:需要手写 COMMIT 命令提交事务。
Oracle默认的事务使用方式是哪一种?MySQL默认的事务使用方式是哪一种?如何设置MySQL的事务提交方式?
Oracle默认的事务使用方式是显式事务,即不自动提交,需要手动写COMMIT命令来提交事务
MySQL默认的事务使用方式是隐式事务,即:自动提交。
如果要改变MySQL的事务提交方式,需要配置MySQL的参数:
mysql> set autocommit =0; //关闭自动提交
mysql> set autocommit =1; //开启自动提交
事务相关参数
autocommit参数的作用有哪些?set autocommit =1;
有什么作用?
MySQL 中,autocommit的默认值是0,。
autocommit参数有 2 种取值:
- autocommit=0 时,不论是否采用 START TRANSACTION 或者 BEGIN 的方式来开启事务,都需要用 COMMIT 进行提交,使用 ROLLBACK 对事务进行回滚。
- autocommit=1 时,每条 SQL 语句都会自动进行提交。
所以,
set autocommit =1;
的作用是设置事务的默认提交方式为自动提交。
completion_type 参数的作用有哪些?SET @@completion_type = 1;
有什么作用?
MySQL 中,completion_type 的默认值是0。
completion_type 参数有 3 种取值:
- completion=0:默认情况。当我们执行 COMMIT 的时候会提交事务,在执行下一个事务时,还需要我们使用 START TRANSACTION 或者 BEGIN 来开启。
- completion=1:当我们提交事务后,相当于执行了 COMMIT AND CHAIN,开启一个链式事务,即当我们提交事务之后,会自动开启一个相同隔离级别的事务。
- completion=2:也就是 COMMIT=COMMIT AND RELEASE,当我们提交后,会自动与服务器断开连接。
所以
SET @@completion_type = 1;
的作用是开启链式事务,即:提交了事务之后,自动开启一个隔离级别相同的新事务。
事务隔离
事务并发处理可能存在的三种异常是什么?
事务并发处理可能存在的三种异常:
- 脏读(Dirty Read)
- 不可重复读(Nonrepeatable Read)
- 幻读(Phantom Read)
四种事务隔离的级别分别是什么?
四种事务隔离的级别分别是:
- 读未提交(READ UNCOMMITTED)
- 读已提交(READ COMMITTED)
- 可重复读(REPEATABLE READ)
- 串行化(SERIALIZABLE)
脏读(Dirty Read)是什么?
读到了其他事务还没有提交的数据。
不可重复读(Nonrepeatable Read)是什么?
对某数据进行读取时,由于有其他事务对这个数据同时进行了修改或删除,导致两次读取的结果不同。
幻读(Phantom Read)是什么?
当事务A根据指定查询条件对某数据多次进行读取时,由于有其他事务更改了符合查询条件的数据,导致事务A多次得到的数据的数量不同。
四种隔离级别之间的高低关系是什么?
串行化 > 可重复读 > 读已提交 > 读未提交。
读已提交能解决哪些并发处理异常?
读已提交只能解决脏读的问题,无法解决不可重复度和幻读。
读未提交能解决哪些并发处理异常?
读未提交不能解决任何并发处理异常。
可重复读能解决哪些并发处理异常?
可重复读可以解决脏读和不可重复读问题,不能解决幻读问题。
回滚日志和重做日志(这似乎属于MySQL)
持久性是通过事务日志来保证的。当我们通过事务对数据进行修改的时候,首先会将数据库的变化信息记录到重做日志中,然后再对数据库中对应的行进行修改。这样做的好处是,即使数据库系统崩溃,数据库重启后也能找到没有更新到数据库系统中的重做日志,重新执行,从而使事务具有持久性。
索引
SQL优化
对数据库进行调优时,都有哪些维度可以选择?
对数据库调优时,可以从以下几个角度入手:
- 选择合适的DBMS
- 优化表设计
- 优化逻辑查询
- 优化物理查询
- 使用Redis或Memcached作为缓存
- 库级优化
拓展
视图
存储过程
游标
SQL语句练习
查询比平均薪资高的员工信息
select * from emp where salary > (select avg(salary) from emp)
查询低于本部门平均工资的员工信息
SELECT * FROM emp e1 where e1.salary < (select avg(e2.salary) from emp e2 where e1.dept_id = e2.dept_id )
查询 “研发部” 员工的平均工资
SELECT avg(salary)
FROM emp
where dept_id = (SELECT id from dept where name = '研发部')
查询拥有员工的部门ID、部门名称
SELECT distinct d.id ,d.name
FROM emp e join dept d on e.dept_id = d.id
查询所有年龄大于40岁的员工, 及其归属的部门名称; 如果员工没有分配部门, 也需要展示出来
SELECT e.*,d.name '部门名称'
FROM emp e left join dept d on e.dept_id = d.id
where e.age > 40
查询所有员工的工资等级
SELECT e.* ,s.id '薪资等级'
FROM emp e left join salgrade s on e.salary > s.losal and e.salary <= s.hisal
查询主要定位或者次要定位是法师或是射手的英雄,同时英雄的上线时间不在 2016-01-01 到 2017-01-01 之间。
SQL:
SELECT name, role_main, role_assist, hp_max, mp_max, birthdate
FROM heros
WHERE (role_main IN ('法师', '射手') OR role_assist IN ('法师', '射手'))
AND DATE(birthdate) NOT BETWEEN '2016-01-01' AND '2017-01-01'
ORDER BY (hp_max + mp_max) DESC
查询英雄最大生命值的最大值:
SQL:SELECT MAX(hp_max) FROM heros;
查询英雄的名字,以及他们的名字字数:
SQL:SELECT CHAR_LENGTH(name), name FROM heros
查询英雄上线日期(对应字段 birthdate)的年份,只显示有上线日期的英雄即可(有些英雄没有上线日期的数据,不需要显示):
SQL: SELECT name, EXTRACT(YEAR FROM birthdate) AS birthdate FROM heros WHERE birthdate is NOT NULL
#或
SQL: SELECT name, YEAR(birthdate) AS birthdate FROM heros WHERE birthdate is NOT NULL
查询在 2016 年 10 月 1 日之后上线的所有英雄:
SQL: SELECT * FROM heros WHERE DATE(birthdate)>'2016-10-01'
查询不同的生命最大值的英雄数量是多少:
SQL: SELECT COUNT(DISTINCT hp_max) FROM heros
统计不同生命最大值英雄的平均生命最大值,保留小数点后两位:
SQL: SELECT ROUND(AVG(DISTINCT hp_max), 2) FROM heros
相关文章:
SQL复习
SQL复习 MySQL MySQL MySQL有什么特点? MySQL 不支持全外连接。 安装 数据类型 MySQL中的数据类型分为哪些? MySQL中的数据类型主要分为三大类:数值类型、字符串类型、日期时间类型。 其中, 数值类型又分为七种:T…...
红队视角出发的k8s敏感信息收集——日志与监控系统
针对 Kubernetes 日志与监控系统 的详细攻击视角分析,聚焦 集群审计日志 和 Prometheus/Grafana 暴露 的潜在风险及利用方法 攻击链示例 1. 攻击者通过容器逃逸进入 Pod → 2. 发现未认证的 Prometheus 服务 → 3. 查询环境变量标签获取数据库密码 → 4. 通过审…...
Flask中获取请求参数的一些方式总结
在 Flask 中,可以从 request 对象中获取各种类型的参数。以下是全面整理的获取参数的方式及示例代码。 1. 获取 URL 查询参数(Query String Parameters) URL 中的查询参数通过 ?keyvalue&key2value2 的形式传递,使用 reques…...
架构——LVS负载均衡主要模式及其原理、服务水平、优缺点
LVS(Linux Virtual Server)是一款高性能的开源负载均衡软件,支持多种负载均衡模式。以下是其主要模式及其原理、服务水平、优缺点: 1. NAT 模式(Network Address Translation) 原理: 请求流程…...
【漫话机器学习系列】093.代价函数和损失函数(Cost and Loss Functions)
代价函数和损失函数(Cost and Loss Functions)详解 1. 引言 在机器学习和深度学习领域,代价函数(Cost Function)和损失函数(Loss Function)是核心概念,它们决定了模型的优化方向。…...
Android 13 上通过修改 AOSP 拦截 SystemUI 音量调节事件
定位关键代码SystemUI 的音量调节逻辑主要集中在以下类中: VolumeDialogController.java:负责与 AudioService 交互。 VolumeDialogImpl.java:处理 UI 交互事件(如按钮点击)。 PhoneWindowManager.java:处理物理按键事件(如音量键)。 拦截音量调节事件 以 VolumeDialog…...
SQL与数据库程序设计
1.1986年,10月美国国家标准局颁布了SQL语言的美国标准,称为SQL86 2.SQL(Structured Query Language)又称为结构化查询语言 3.建立索引的主要目的是加快查找的速度 4.在基本表上建立一个或者多个索引 5. 一个基本表是最多只能建立一个聚簇索引 6.CAL…...

大模型Deepseek的使用_基于阿里云百炼和Chatbox
目录 前言1. 云服务商2. ChatBox参考 前言 上篇博文中探索了(本地)部署大语言模型,适合微调、数据高隐私性等场景。随着Deepseek-R1的发布,大语言模型的可及性得到极大提升,应用场景不断增加,对高可用的方…...
AlmaLinux9.5安装samba实现与Windows文件共享 笔记250214
Fedora41安装samba实现与Windows文件共享 笔记241202 步骤: 安装samba, 并启用 smb , nmb 服务 切换阿里源(可选) ### 备份 /etc/yum.repos.d 文件夹 tempUri/etc/yum.repos.d ; sudo cp -a $tempUri $tempUri.$(date %0y%0m%0d%0H%0M%0Sns%0N).bak sed -e s|^mirrorli…...
二〇二四年终总结
写在前面 简单总结一下告诉自己,曾经活着 不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树 原本应该 24 年年中的时候写 23 年年终的总结,但是一直拖着&…...

学习sql的资源:sql练习平台;在线编辑器,免费sql教程,免费sql书籍
sql练习平台 LeetCode力扣(部分免费) 题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台 HackerRank 解决 SQL |黑客排名 SQLPad SQL、Python 和 R 面试问题 StrataScratch StrataScratch - Analytical Questions 数据雷mur Free SQL Tutorial for Data Analysts …...

宝塔和docker的区别
宝塔面板 vs Docker:区别、场景与互补使用指南 eepseek回答宝塔和docker的区别 好的,我现在需要回答用户关于宝塔面板和Docker之间的区别的问题。首先,我需要明确这两个工具各自的定义、功能以及它们适用的场景,这样才能准确比较…...
机器学习--实现多元线性回归
机器学习—实现多元线性回归 本节顺延机器学习--线性回归中的内容,进一步讨论多元函数的回归问题 y ′ h ( x ) w ⊤ ∙ x b y^{\prime}h(x)w^\top\bullet xb y′h(x)w⊤∙xb 其中, w T ⋅ x 就是 W 1 X 1 w 2 X 2 w 3 X 3 ⋯ w N X N \text{其中,}w^\math…...
【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter2-HTML 中的 JavaScript
二、HTML 中的 JavaScript 将 JavaScript 插入 HTML 的主要方法是使用<script>元素。 <script>元素有下列 8 个属性。 async:可选。表示应该立即开始下载脚本,但不能阻止其他页面动作,比如下载资源或等待其他脚本加载。只对外部…...
【人工智能】释放数据潜能:使用Featuretools进行自动化特征工程
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 特征工程是机器学习流程中至关重要的一步,它直接影响模型的性能。然而,手动特征工程既耗时又需要领域专业知识。Featuretools是一个强大的…...
算法——对比A*算法与IDA*算法
A*算法与IDA*算法详细解析 1. A*算法 核心思想: A*算法是一种启发式搜索算法,结合了Dijkstra算法的最短路径保证和贪心最佳优先搜索的高效导向性。其核心是评估函数 ( f(n) g(n) h(n) ),其中: ( g(n) ): 从起点到当前节点 ( …...
GitLab CI/CD 的配置详解:从零开始使用 .gitlab-ci.yml 文件
在现代软件开发中,CI/CD(持续集成与持续部署)已成为提高开发效率和代码质量的核心实践。GitLab CI/CD 提供了强大的功能,帮助开发者自动化构建、测试和部署应用程序。而 .gitlab-ci.yml 文件是 GitLab CI/CD 配置的关键所在&#…...

python语言进阶之函数
目录 前言 函数的创建和调用 函数创建 调用函数 参数传递 形式参数和实际参数 位置参数 数量必须与定义时一致 位置必须与定义时一致 关键字参数 为参数设置默认值 可变参数 **parameter 返回值 变量的作用域 局部变量 全局变量 匿名函数 前言 提到函数&…...

网络安全等级保护基本要求、测评要求、高风险判定指引综合梳理
网络安全等级保护基本要求、测评要求、高风险判定指引综合梳理 等级保护基本要求、测评要求、高风险判定指引综合梳理测评要求思维导图二级三级 花了些时间把网络安全等级保护涉及的以下三份标准文件进行了整理,以表格的形式进行展现,能帮助初学者更加直…...
JSON入门略要
JavaScript对象表示法(JavaScript Object Notation,JSON)已经成为RESTful接口设计中的事实标准。 JSON数据格式使得应用程序可以通过RESTful API等方式在网络上进行数据通信。 REST: 表现层状态转化(REpresentation State Transf…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...