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…...
景联文科技:以精准标注赋能AI未来,打造高质量数据基石
在人工智能蓬勃发展的时代,数据已成为驱动技术革新的核心燃料,而高质量的数据标注则是让AI模型从“感知”走向“认知”的关键桥梁。作为深耕数据服务领域的创新者,景联文科技始终以“精准、高效、安全”为核心理念,为全球AI企业提…...
蓝桥杯(B组)-每日一题(阶乘求和)
题目 代码解析: #include<iostream> using namespace std;long long multiply(int x) {long long sum1;//定义longlong类型初始为1 for(int i1;i<x;i)sumsum*i;//每一项的阶乘 return sum;//将阶乘结果返回 }int main() {int n;cin>>n;long long r…...
大模型应用开发时如何调试提示词?
在编程领域,调试通常依赖于断点、堆栈跟踪和详细的错误信息。然而,在提示调试的上下文中,这些传统工具变得不再适用。提示调试更多地依赖于对任务的理解、对提示的精细调整,以及对结果的迭代优化。在本文,我们将深入探…...
国产编辑器EverEdit - 二进制模式下观察Window/Linux/MacOs换行符差异
1 换行符格式 1.1 应用场景 稍微了解计算机历史的人都知道, 计算机3大操作系统: Windows、Linux/Unix、MacOS,这3大系统对文本换行的定义各不相同,且互不相让,导致在文件的兼容性方面存在一些问题,比如它们…...
LockSupport
文章目录 SynchronizedJUCLockSupport详解 Synchronized package com.xd;public class SynchronizedDemo {//等待线程public void waitThread() { // 1.如果将synchronized (this){}注释,会抛出异常,因为wait和notify⼀定要在同步块或同步⽅法中synchronized (this) {try {Sys…...
Spark 和 Flink
Spark 和 Flink 都是目前流行的大数据处理引擎,但它们在架构设计、应用场景、性能和生态方面有较大区别。以下是详细对比: 1. 架构与核心概念 方面Apache SparkApache Flink计算模型微批(Micro-Batch)为主,但支持结构…...
maven——使用idea创建maven项目(文件夹上颜色)
把一开始灰色和相对于maven标准目录缺少的文件夹上色和新建: 在右边给叉掉文件夹就又全都变成灰色的了: 在这个地方也可以改: 使用骨架创建 不使用骨架创建...
DeepSeek教unity------UI框架
/****************************************************文件:BasePanel.cs作者:Edision日期:#CreateTime#功能:面板基类 *****************************************************/using UnityEngine;public class BasePanel : Mo…...
2025年2月16日笔记
问题:用普通二维数组输出1到12,每行输出一个数 解题思路: 1.因为要用到普通二维数组,所以要先想到如何写普通二维数组 普通二维数组的写法: int [行数][列数]{ {数字}, (大括号数字个数…...
[操作系统] 基础IO:系统文件I/O
在 Linux 操作系统中,文件 I/O(输入/输出)是程序与文件系统交互的基础。理解文件 I/O 的工作原理对于编写高效、可靠的程序至关重要。本文将深入探讨系统文件 I/O 的机制。 一种传递标志位的方法 在 Linux 中,文件的打开操作通常…...
CNN手写数字识别1——模型搭建与数据准备
模型搭建 我们这次使用LeNet模型,LeNet是一个经典的卷积神经网络(Convolutional Neural Network, CNN)架构,最初由Yann LeCun等人在1998年提出,用于手写数字识别任务 创建一个文件model.py。实现以下代码。 源码 #…...
基于Istio Ambient Mesh的无边车架构:实现零侵入式服务网格的云原生革命
引言:轻量化时代的服务通信进化论 当传统Sidecar模式面临内存开销暴增的困境,Istio社区推出的Ambient Mesh架构给出终极解决方案。某证券交易系统实测显示,采用该架构后服务延迟降低至1.7ms(降幅达73%),同…...
数位dp入门详解
1. 介绍 数位 d p dp dp一般出现在来求一个范围 [ a , b ] [a, b] [a,b]内满足条件的数有多少。数位 d p dp dp的解决比较公式化,考虑每一位对最终答案的影响。 2. 案例 Luogu P2602: 求给定范围 [ a , b ] [a,b] [a,b]各个数位 k k k出现了多少次。 …...
【黑马点评优化】2-Canel实现多级缓存(Redis+Caffeine)同步
【黑马点评优化】2-Canel实现多级缓存(RedisCaffeine)同步 0 背景1 配置MySQL1.1 开启MySQL的binlog功能1.1.1 找到mysql配置文件my.ini的位置1.1.2 开启binlog 1.2 创建canal用户 2 下载配置canal2.1 canal 1.1.5下载2.2 配置canal2.3 启动canal2.4 测试…...
牛顿法:用泰勒级数求解平方根的秘籍
目录 一、引言二、牛顿法的理论基础——泰勒级数三、牛顿法的原理与推导3.1 原理概述3.2 推导过程3.3 几何解释 四、牛顿法的应用场景4.1 数值计算4.2 优化问题 五、牛顿法求平方根的具体案例5.1 原理推导5.2 具体步骤5.3 代码实现(Python)5.4 示例计算过…...
四、敏捷方法论:敏捷开发中的关键实践
敏捷开发中的关键实践 在敏捷开发中,许多关键实践帮助团队提升效率、增强协作和确保高质量交付。通过合理运用这些实践,团队能够灵活应对需求变化、缩短交付周期,并持续优化工作流程。本文将详细介绍敏捷开发中的一些核心实践,包括用户故事、需求优先级排序、持续交付、持…...
基于Qt 和微信小程序的用户管理系统:WebSocket + SQLite 实现注册与登录
目录 一. 概要 二. 技术栈 三. 系统功能设计 3.1 功能模块 3.2 数据表设计 四. 具体实现 4.1 Qt 服务端 4.1.1 初始化 WebSocket 服务器 4.1.2 用户管理界面 4.2 微信小程序端 4.2.1 注册功能 4.2.2 登录功能 五. 运行效果 六. 源码下载 一. 概要 在物联网和智能设备…...
DeepSeek R1 与 OpenAI O1:机器学习模型的巅峰对决
我的个人主页 我的专栏:人工智能领域、java-数据结构、Javase、C语言,希望能帮助到大家!!!点赞👍收藏❤ 一、引言 在机器学习的广袤天地中,大型语言模型(LLM)无疑是最…...
【硬件设计细节】缓冲驱动器使用注意事项
一、缓冲驱动器核心功能与选型原则 信号增强与隔离 驱动能力匹配:根据负载电流需求选择缓冲器,例如CMOS缓冲器驱动能力通常为4-8mA,需搭配大电流负载时选用图腾柱输出或专用驱动芯片(如TI的SN74LVC系列)。电压域转换&…...
基于LVGL的简易聊天室
创建过程: 在GUI里配置好了一个大概的界面。聊天界面需要一个滑动页、一个输入框、一个文本框、一个发送按键。其中文本框属于滑动页,并且给发送按键添加上事件。 保存界面后,打开工程代码。 第一件事,是打开键盘使用的宏定义 随…...
DeepSeek 助力 Vue 开发:打造丝滑的开关切换(Switch)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
IDEA集成DeepSeek
引言 随着数据量的爆炸式增长,传统搜索技术已无法满足用户对精准、高效搜索的需求。 DeepSeek作为新一代智能搜索技术,凭借其强大的语义理解与深度学习能力,正在改变搜索领域的游戏规则。 对于 Java 开发者而言,将 DeepSeek 集成…...
pycharm社区版有个window和arm64版本,到底下载哪一个?还有pycharm官网
首先pycharm官网是这一个。我是在2025年2月16日9:57进入的网站。如果网站还没有更新的话,那么就往下滑一下找到 community Edition,这个就是社区版了免费的。PyCharm:适用于数据科学和 Web 开发的 Python IDE 适用于数据科学和 Web 开发的 Python IDE&am…...
LeetCode热题100- 缺失的第一个正数【JavaScript讲解】
题目: 解题一: 如果不考虑时间复杂度和空间复杂度的话,我们最先想到的办法是先将该数组进行排序和去重,将最初的res结果值设置为1;将然后进行遍历,如果第一项不为1,则返回1,否则根…...
基于矢量轨道角动量波的透射超表面设计
摘 要:针对轨道角动量(Orbital Angular Momentum,OAM)在无线通信系统中相位奇点的问题,提出了一种产生矢量OAM波的透射超表面。设计了一种超表面透射单元实现透射极化和相位的调控,并由此单元排布组成透射超表面。采用透射超表面调控透射电磁波…...
全方位探索DeepSeek
目录 前言1. DeepSeek的基础功能与应用场景2. 使用DeepSeek的多种方式2.1 通过Web界面快速体验2.2 调用API实现自动化处理2.3 集成到本地开发环境2.4 结合第三方工具扩展功能 3. 高效使用DeepSeek的进阶技巧3.1 参数调优与性能优化3.2 数据处理与结果分析 4. 实际案例分析与应用…...
详解Redis数据结构(附源码)
引言 只有弄明白Redis数据结构,才能理解它如此快速的原因,并不只是它存储于内存,本篇文章将拆开Redis数据结构分析它高效的原因 字符串(String) 基本概念:字符串是 Redis 中最基本的数据结构,…...
基于Flask的茶叶销售数据可视化分析系统设计与实现
【FLask】基于Flask的茶叶销售数据可视化分析系统设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统的创新之处在于系统不仅提供了基础的图表展示,如价格分布、付款分…...
基于推荐算法的在线课程推荐系统设计与实现
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
计时器任务实现(保存视频和图像)
下面是一个简单的计时器任务实现,可持续地每秒保存一幅图像,也可持续地每60秒保存一个视频,图像和视频均以当前时间命名: TimerTask类的实现如下: class TimerTask { public:TimerTask(const std::string& path):…...
FreeRTOS第3篇:链表的“精密齿轮”——列表与列表项
文章目录 1 列表与列表项:FreeRTOS的“排队系统”2 列表操作:FreeRTOS的“排队算法”3 列表的应用场景:FreeRTOS的“任务调度枢纽”4 源码级洞察:列表的“灵魂代码”5 实战:列表操作实验6 总结与思考引言:嵌入式系统的“任务候车厅” 想象你正在管理一座繁忙的火车站:乘…...
Linux(ubuntu)下载ollama速度慢解决办法
国内安装Ollama都很慢,因为一直卡在下载中,直接通过官网的链接地址下载方法: curl -fsSL https://ollama.com/install.sh | sh速度大概是10min下载1%,完全不能接受啊! 其中很好的一个加速方式是通过使用github文件加速…...
【Java】分布式锁Redis和Redisson
https://blog.csdn.net/weixin_44606481/article/details/134373900 https://www.bilibili.com/video/BV1nW421R7qJ Redis锁机制一般是由 setnx 命令实现,set if not exists,语法setnx key value,将key设置值为value,如果key不存在…...
网络编程-
文章目录 网络编程套接字UDP/TCP的api使用 网络编程套接字 socket,是操作系统给应用程序(传输层给应用层)提供的api,Java也对这个api进行了封装。 socket提供了两组不同的api,UDP有一套,TCP有一套&#x…...
DeepSeek助力学术论文写作[特殊字符]
宝子们,还在为学术论文写作发愁吗?DeepSeek来帮你!只要用对提示词,它就能变成你写作路上的超级助手。今天就来给大家分享一些超好用的提示词,助力学术论文写作,让你的论文在ChatGPT的辅助下闪闪发光✨。 一…...
从零创建DeepSeek:技术路径与实践探索
import tensorflow as tf摘要:本文详细阐述了从零开始创建DeepSeek的全过程,涵盖从项目启动的构思,到技术选型的考量,再到模型训练的精细操作,以及系统集成、测试优化和部署上线的各个环节。通过对这些步骤的深入解析&…...
MySQL技术公开课:Mysql-Server-8.4.4 Innodb 集群搭建与维护
MySQL技术公开课 - Mysql-Server-8.4.4 Innodb 集群搭建与维护 讲课内容: 1、Innodb集群框架介绍 2、Innodb集群部署(mysql-Server、mysql-shell、mysql-router安装配置) 3、Innodb集群维护(主备切换、启动与关闭、故障排除) Mysql-server商业版目前最新的是8.…...
VS Code User和System版区别【推荐使用System版本】and VSCode+Keil协同开发之Keil Assistant
VS Code User和System版区别 Chapter1 VS Code User和System版区别1. 对于安装而言2. 结束语 Chapter2 VS Code 安装、配置教程及插件推荐插件: Chapter3 VSCodeKeil协同开发之Keil Assistant1. 效果展示2. Keil Assistant简介3. Keil Assistant功能特性4. 部署步骤…...
动态规划两个数组dp问题系列一>最长重复子数组
目录 状态表示:状态转移方程:初始化:填表顺序:返回值:代码呈现: 状态表示: 状态转移方程: 初始化: 填表顺序: 返回值: 这里是以某一个位置为结尾定…...
在SpringBoot中使用UniHttp简化天地图路径规划调用实践
目录 写在最前面 前言 一、天地图路径规划简介 1、天地图相关服务 2、天地图路径规划接口 二、UniHttp简介 1、UniHttp是什么? 2、UniHttp能做什么? 三、UniHttp调用天地图接口 1、请求接口的定义 2、实际调用 3、相应结果展示 四、总结 写在…...
springboot与Freemarker
1 基本使用 1.1 介绍 FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 是一个Java类库。 FreeMarker 被设计用来生成 HTML Web 页面…...
CMake无法生成可执行文件,一直生成库文件
CMakeLists的内容如下,一直生成的main是库文件,而不是可执行文件。本人是在进行鸿蒙的交叉编译的时候遇到,归结为cmake属性的差异。原内容如下: # 设置最低CMake版本要求 cmake_minimum_required (VERSION 2.8.0)# 设置项目名称 …...
PrimeFaces实战:IdleMonitor与Ajax的完美结合
在现代的Web开发中,用户交互的实时反馈是一个重要的用户体验环节。PrimeFaces作为一个强大的Java EE UI库,提供了许多便捷的功能组件,其中之一就是IdleMonitor。通过IdleMonitor,我们可以轻松地检测用户何时处于空闲状态以及何时从…...
搭建一个经典的LeNet5神经网络
第一章:计算机视觉中图像的基础认知 第二章:计算机视觉:卷积神经网络(CNN)基本概念(一) 第三章:计算机视觉:卷积神经网络(CNN)基本概念(二) 第四章:搭建一个经典的LeNet5神经网络 一、LeNet-5背景 LeNet-…...
Transformer多头注意力并行计算原理与工业级实现:从数学推导到PyTorch工程优化
一、核心数学原理剖析 1.1 多头注意力矩阵分解 Q XW^Q ∈ R^{nd_k} K XW^K ∈ R^{nd_k} V XW^V ∈ R^{nd_v} 多头分解公式: head_i Attention(QW_i^Q, KW_i^K, VW_i^V) 其中 W_i^Q ∈ R^{d_kd_k/h}, W_i^K ∈ R^{d_kd_k/h}, W_i^V ∈ R^{d_vd_v/h} (h为头数…...
OpenAI 的变化对行业意味着什么?
哎呀,中国AI的发展可是搅动了一番风云。害怕自己正在失去对 AI 话语权的掌控,OpenAI 决定是时候全力出击了。 除了最近意外发布的 o3-mini 模型之外,Sam Altman 昨天还宣布了接下来几周/几个月的路线图,而这些变化相当显著&#…...
LinkedList
一.IDEA的链表库 IDEA上实现链表的包,实现的是无头双向不循环链表:(并且这个链表有头尾节点) 二.自己实现一个无头双向不循环链表 1.创建链表的类,在链表内中定义一个节点的内部类,并且在链表的类中定义头…...
半遮挡检测算法 Detecting Binocular Half-Occlusions
【1. 背景】: 本文分析【Detecting Binocular Half-Occlusions:Empirical Comparisons of Five Approaches】Geoffrey Egnal和Richard P. Wildes于2002年发表在IEEE Transactions on Pattern Analysis and Machine Intelligence上,这是1篇中…...
零基础购买阿里云服务器,XShell连接云服务器
目录 1.环境搭建方式 2. 使用云服务器 3.使用终端软件登录到Linux 4.使用XShell登录主机 5.连接失败的原因: 下一篇更新:Linux的基础指令以及如何Linux的环境搭建 1.环境搭建方式 主要有四种: 1.直接安装在物理机上,虽然Linux有图形化…...