如何使用SQL系列 之 如何在SQL中使用WHERE条件语句
引言
在结构化查询语言 (SQL)语句中,WHERE
子句限制了给定操作会影响哪些行。它们通过定义特定的条件(称为搜索条件)来实现这一点,每一行都必须满足这些条件才能受到操作的影响。
本指南将介绍WHERE
子句中使用的通用语法。它还将概述如何在单个WHERE
子句中组合多个搜索条件谓词以更细粒度的方式过滤数据,以及如何使用NOT
操作符排除而不是包含满足给定搜索条件的行。
虽然本指南在示例中只使用SELECT
语句,但这里解释的概念可以用于许多SQL操作。事实上,WHERE
子句是UPDATE
和DELETE
操作的关键组成部分。
前期准备
为了学习本指南,你需要一台运行某种使用SQL的关系数据库管理系统(RDBMS)的计算机。
注意:请注意,许多RDBMS使用它们自己独特的SQL实现。虽然本教程中概述的命令适用于大多数RDBMS,但如果你在MySQL以外的系统上测试它们,确切的语法或输出可能会有所不同。
你还需要一个装载了一些示例数据的数据库和表,可以在其中练习使用相关命令。
连接到MySQL并设置一个示例数据库
如果SQL数据库系统运行在远程服务器上,请从本地设备SSH到服务器:
ssh sammy@your_server_ip
然后打开MySQL服务器提示符,将==sammy==
替换为你的MySQL用户账户的名称:
mysql -u sammy -p
创建一个名为where_db
的数据库:
CREATE DATABASE where_db;
如果数据库成功创建,您将收到这样的输出:
OutputQuery OK, 1 row affected (0.01 sec)
要选择where_db
数据库,运行以下USE
语句:
USE where_db;
OutputDatabase changed
选择where_db
后,在其中创建一个表。
为了理解本指南中使用的示例,假设您在当地的高尔夫球场经营高尔夫联赛。你决定跟踪联盟球员参加郊游时的个人表现信息。为此,您决定将信息存储在SQL数据库中。
你决定这个表需要6列:
name
:每个高尔夫球手的名字,使用varchar
数据类型表示,不超过20个字符rounds_played
:每个高尔夫球手打完的总回合数,用int
数据类型表示best
:每位高尔夫球手在单次比赛中的最佳或最低得分,也用int
表示。worst
:每位高尔夫球手在单次比赛中的最差或最高得分,同样用int
表示average
:每个高尔夫球手在他们打过的几轮中得分的近似平均值。这一列将保存decimal
类型的值,限制为最多4位,其中一位在小数点的右侧wins
:每个高尔夫球手在比赛小组中得分最低的轮数,用int
类型表示
运行下面的CREATE TABLE
语句来创建一个名为golfers
的表,它包含以下6列:
CREATE TABLE golfers (
name varchar(20),
rounds_played int,
best int,
worst int,
average decimal (4,1),
wins int
);
然后加载包含一些示例数据的golfers
表。运行下面的INSERT INTO
操作来添加代表7名联赛高尔夫球手的7行数据:
INSERT INTO golfers
VALUES
('George', 22, 68, 103, 84.6, 3),
('Pat', 25, 65, 74, 68.7, 9),
('Grady', 11, 78, 118, 97.6, 0),
('Diane', 23, 70, 92, 78.8, 1),
('Calvin', NULL, 63, 76, 68.5, 7),
('Rose', NULL, 69, 84, 76.7, 4),
('Raymond', 18, 67, 92, 81.3, 1);
请注意,其中两行rounds_played
的值是NULL
。出于本教程的目的,假设这些高尔夫球手没有报告他们打了多少轮,因此这些值被记录为NULL
。
你可能还注意到,每个高尔夫球手的best
值小于他们的worst
值。这是因为,在常见的高尔夫规则中,高尔夫球手的得分是由他们将球打入球场每个洞所需的击球次数决定的,总击球次数最少的人就是获胜者。因此,与大多数其他运动不同,高尔夫球手的最佳分数会比最差分数低。
有了这些,你就可以开始学习如何在SQL中使用WHERE
子句了。
使用WHERE
子句过滤数据
在SQL中,语句是任何发送到数据库系统的操作,它将执行某种任务,如创建表,插入或删除数据,或更改列或表的结构。SQL语句是由各种子句,由特定的关键字和他们需要的信息。
正如引言中提到的,WHERE
子句允许你过滤掉受SQL操作影响的某些行数据。在查询中,WHERE
之后跟上查询条件,如以下示例:
SELECT columns_to_query
FROM table_to_query
WHERE search_condition;
WHERE
关键字后面是一个搜索条件。一个搜索条件是由一个或多个谓词或表达式组成的集合,这些谓词或表达式可以计算一个或多个值表达式并返回“true”、“false”或“unknown”的结果。注意,在搜索条件只包含一个谓词的情况下,术语“搜索条件”和“谓词”是同义词。
WHERE
子句搜索条件中的谓词可以有多种形式,但它们通常遵循以下语法:
. . .
WHERE column_name OPERATOR value_expression
. . .
在SQL中,值表达式——有时也称为标量表达式——是任何返回单个值的表达式。值表达式可以是字面量,比如字符串或数值,也可以是数学表达式。不过,大多数情况下,在WHERE
子句的搜索条件中,至少有一个值表达式是列名。
当运行包含WHERE
子句的SQL查询时,数据库管理系统将对FROM
子句定义的逻辑表中的每一行应用搜索条件。然后,它将只返回所有谓词在搜索条件中求值为“true”的行。
为了说明这个想法,运行下面的查询。这将返回golfers
表的name
列中的所有值:
SELECT name
FROM golfers
WHERE (2 + 2) = 4;
这个查询包含一个WHERE
子句,但它没有指定列名,而是使用(2 + 2)
作为第一个值表达式,并测试它是否等于第二个值表达式4
。因为(2 + 2)
总是等于4
,所以对于每一行,这个搜索条件都计算为true
。因此,结果集中的每一行都会被返回:
Output+---------+
| name |
+---------+
| George |
| Pat |
| Grady |
| Diane |
| Calvin |
| Rose |
| Raymond |
+---------+
7 rows in set (0.01 sec)
这个WHERE
子句不是很有用,因为它总是求值为“true”并总是返回表中的每一行。如前所述,在WHERE
子句搜索条件中,通常至少使用一个列名作为值表达式。当运行查询时,数据库系统将依次对每一行应用搜索条件。通过在搜索条件中提供列名作为值表达式,你告诉DBMS使用该列中每行的值作为迭代搜索条件时的值表达式。
以下查询的WHERE
子句对每一行应用了比前一个示例更排他的搜索条件。它将返回任何wins
列值等于1
的行中的name
和wins
值:
SELECT name, wins
FROM golfers
WHERE wins = 1;
只有两名高尔夫球手刚好赢了一轮,因此这个查询只返回这两行:
Output+---------+------+
| name | wins |
+---------+------+
| Diane | 1 |
| Raymond | 1 |
+---------+------+
2 rows in set (0.01 sec)
前面的例子使用等号(=
)测试是否两个值表达式是等价的,但您使用的运营商取决于您想要使用什么类型的谓词过滤结果集。
SQL标准定义了18种类型的谓词,尽管并不是所有的SQL实现都包含这些谓词。下面是5种最常用的谓词类型,以及对每种类型及其使用的操作符的简要说明。
比较
比较谓词使用比较运算符比较一个值(在查询,通常值在一个指定的列)。这6个比较运算符是:
=
:测试两个值是否相等
SELECT name
FROM golfers
WHERE name = 'George';
Output+--------+
| name |
+--------+
| George |
+--------+
1 row in set (0.00 sec)
<>
:测试两个值是否不相等
SELECT name, wins
FROM golfers
WHERE wins <> 1;
Output+--------+------+
| name | wins |
+--------+------+
| George | 3 |
| Pat | 9 |
| Grady | 0 |
| Calvin | 7 |
| Rose | 4 |
+--------+------+
5 rows in set (0.00 sec)
<
:测试第一个值是否小于第二个值
SELECT name, wins
FROM golfers
WHERE wins < 1;
Output+-------+------+
| name | wins |
+-------+------+
| Grady | 0 |
+-------+------+
1 row in set (0.00 sec)
>
:测试第一个值是否大于第二个值
SELECT name, wins
FROM golfers
WHERE wins > 1;
Output+--------+------+
| name | wins |
+--------+------+
| George | 3 |
| Pat | 9 |
| Calvin | 7 |
| Rose | 4 |
+--------+------+
4 rows in set (0.00 sec)
<=
:测试第一个值是否小于或等于第二个
SELECT name, wins
FROM golfers
WHERE wins <= 1;
Output+---------+------+
| name | wins |
+---------+------+
| Grady | 0 |
| Diane | 1 |
| Raymond | 1 |
+---------+------+
3 rows in set (0.00 sec)
>=
:测试第一个值是否大于或等于第二个值
SELECT name, wins
FROM golfers
WHERE wins >= 1;
Output+---------+------+
| name | wins |
+---------+------+
| George | 3 |
| Pat | 9 |
| Diane | 1 |
| Calvin | 7 |
| Rose | 4 |
| Raymond | 1 |
+---------+------+
6 rows in set (0.00 sec)
Null(IS NULL
)
使用IS NULL
操作符的谓词测试给定列中的值是否为NULL。如果是,则谓词的计算结果为“true”,结果集中就包含了这一行:
SELECT name, rounds_played
FROM golfers
WHERE rounds_played IS NULL;
Output+--------+---------------+
| name | rounds_played |
+--------+---------------+
| Calvin | NULL |
| Rose | NULL |
+--------+---------------+
2 rows in set (0.00 sec)
区间(BETWEEN
)
范围谓词使用BETWEEN
操作符来测试指定的列值是否落在两个值表达式之间:
SELECT name, best
FROM golfers
WHERE best BETWEEN 67 AND 73;
Output+---------+------+
| name | best |
+---------+------+
| George | 68 |
| Diane | 70 |
| Rose | 69 |
| Raymond | 67 |
+---------+------+
4 rows in set (0.00 sec)
包含(IN
)
成员谓词使用IN
操作符来测试一个值是否是给定集合的成员:
SELECT name, best
FROM golfers
WHERE best IN (65, 67, 69, 71);
Output+---------+------+
| name | best |
+---------+------+
| Pat | 65 |
| Rose | 69 |
| Raymond | 67 |
+---------+------+
3 rows in set (0.00 sec)
通配符(%
和_
)
模式匹配谓词使用LIKE
操作符来测试一个值是否匹配包含一个或多个通配符的字符串模式,也称为通配符。SQL定义了两个通配符,%
和_
:
_
: 下划线表示单个未知字符
SELECT name, rounds_played
FROM golfers
WHERE rounds_played LIKE '2_';
Output+--------+---------------+
| name | rounds_played |
+--------+---------------+
| George | 22 |
| Pat | 25 |
| Diane | 23 |
+--------+---------------+
3 rows in set (0.00 sec)
%
: 百分比符号表示零个或多个未知字符
SELECT name, rounds_played
FROM golfers
WHERE name LIKE 'G%';
Output+--------+---------------+
| name | rounds_played |
+--------+---------------+
| George | 22 |
| Grady | 11 |
+--------+---------------+
2 rows in set (0.00 sec)
用AND和OR组合多个查询条件
有时候,你需要比使用单个搜索条件谓词的WHERE
子句提供的更细粒度的过滤结果。另一方面,也可能有满足多个搜索条件之一的行在结果集中是可接受的。在这种情况下,你可以编写包含多个谓词的WHERE
子句,分别使用AND
或OR
操作符。
要开始使用这些操作符,请运行以下查询,它从golfers
表的name
、best
、worst
和average
列中返回值。它的WHERE
子句包含两个查询条件,由AND
分隔:
SELECT name, best, worst, average
FROM golfers
WHERE best < 70 AND worst < 96;
第一个谓词测试每一行的best
值是否小于70,而第二个测试每一行的worst
价值是否小于96。如果任何一个测试的结果为“false”,则该行不会返回到结果集中:
Output+---------+------+-------+---------+
| name | best | worst | average |
+---------+------+-------+---------+
| Pat | 65 | 74 | 68.7 |
| Calvin | 63 | 76 | 68.5 |
| Rose | 69 | 84 | 76.7 |
| Raymond | 67 | 92 | 81.3 |
+---------+------+-------+---------+
4 rows in set (0.00 sec)
接下来,运行以下查询。这与前面的例子相同,只是它用OR
操作符而不是AND
来分隔两个谓词:
SELECT name, best, worst, average
FROM golfers
WHERE best < 70 OR worst < 96;
因为只有一个谓词的求值为“true”才能返回一行,所以这个结果集比前面的例子多了两行:
Output+---------+------+-------+---------+
| name | best | worst | average |
+---------+------+-------+---------+
| George | 68 | 103 | 84.6 |
| Pat | 65 | 74 | 68.7 |
| Diane | 70 | 92 | 78.8 |
| Calvin | 63 | 76 | 68.5 |
| Rose | 69 | 84 | 76.7 |
| Raymond | 67 | 92 | 81.3 |
+---------+------+-------+---------+
6 rows in set (0.00 sec)
你可以在一个WHERE
子句中包含任意数量的谓词,只要你用正确的语法将它们组合起来。然而,随着搜索条件变得越来越复杂,预测它们将过滤哪些数据变得越来越困难。
需要注意的是,数据库系统通常优先考虑AND
操作符。这意味着任何由AND
操作符分隔的谓词(或在两个以上谓词的情况下的操作符)都被视为一个单独的、隔离的搜索条件,在WHERE
子句中的任何其他谓词之前进行测试。
为了说明问题,运行下面的查询,它从name
、average
、worst
和rounds_played
列中返回满足WHERE
子句中定义的搜索条件的任何行:
SELECT name, average, worst, rounds_played
FROM golfers
WHERE average < 85 OR worst < 95 AND rounds_played BETWEEN 19 AND 23;
这个查询首先测试由AND
操作符分隔的谓词是否worst < 95
和rounds_played BETWEEN 19 AND 23
——在当前迭代中,这两个值都为“true”。如果是,那么该行将出现在结果集中。但是如果任何一个求值为“false”,查询将检查当前行的average
值是否小于85。如果是,则返回该行:
Output+---------+---------+-------+---------------+
| name | average | worst | rounds_played |
+---------+---------+-------+---------------+
| George | 84.6 | 103 | 22 |
| Pat | 68.7 | 74 | 25 |
| Diane | 78.8 | 92 | 23 |
| Calvin | 68.5 | 76 | NULL |
| Rose | 76.7 | 84 | NULL |
| Raymond | 81.3 | 92 | 18 |
+---------+---------+-------+---------------+
6 rows in set (0.00 sec)
您可以通过将两个或多个查询条件包装在括号中来确定它们的优先级。下面的示例与前一个相同,但它封装了average < 85
和worst < 95
查询条件,用OR
操作符分隔,放在括号中:
SELECT name, average, worst, rounds_played
FROM golfers
WHERE (average < 85 OR worst < 95) AND rounds_played BETWEEN 19 AND 23;
因为前两个谓词被圆括号包围,后续的AND
操作符将它们视为一个离散的搜索条件,必须求值为“true”。如果这两个谓词- average < 85
和worst < 95
——求值为“false”,那么整个搜索条件求值为“false”,查询会立即从结果集中删除这一行,然后再继续求值下一行。
然而,如果前两个谓词中的任何一个求值为“true”,查询就会测试给定高尔夫球手的rounds_played
值是否在19到23之间。如果是,则在结果集中返回这一行:
Output+--------+---------+-------+---------------+
| name | average | worst | rounds_played |
+--------+---------+-------+---------------+
| George | 84.6 | 103 | 22 |
| Diane | 78.8 | 92 | 23 |
+--------+---------+-------+---------------+
2 rows in set (0.00 sec)
结果表明,通过优先级的谓词集和包装在括号,否则相同的查询可以返回结果集明显不同。
尽管并不总是需要这样做,但建议在单个搜索条件中组合两个以上谓词时始终使用括号。这样做有助于使查询更可读、更容易理解。
用NOT
排除结果
到目前为止,本指南的所有示例都集中在如何使用WHERE
子句编写查询,在结果集中只包含满足指定搜索条件的行。然而,你可以通过在WHERE
子句中包含NOT
操作符来编写排除特定行的查询。
范围、会员和模式匹配谓词的条款,包括NOT
操作符通常遵循这一语法:
. . .
WHERE column_name NOT OPERATOR value_expression
. . .
为了说明这一点,运行下面的查询。这将返回golfers
表的name
列的值,但其WHERE
子句中的NOT
操作符将导致DBMS排除所有匹配通配符模式的行:
SELECT name
FROM golfers
WHERE name NOT LIKE 'R%';
Output+--------+
| name |
+--------+
| George |
| Pat |
| Grady |
| Diane |
| Calvin |
+--------+
5 rows in set (0.00 sec)
当将NOT
操作符添加到IS NULL
谓词时,情况略有不同。在这种情况下,你可以将NOT
放在IS
和NULL
之间,如下面的例子所示。这个查询返回所有rounds_played
值不为Null的高尔夫球手的name
和rounds_played
值:
SELECT name, rounds_played
FROM golfers
WHERE rounds_played IS NOT NULL;
Output+---------+---------------+
| name | rounds_played |
+---------+---------------+
| George | 22 |
| Pat | 25 |
| Grady | 11 |
| Diane | 23 |
| Raymond | 18 |
+---------+---------------+
5 rows in set (0.00 sec)
你也可以将NOT
操作符紧跟在WHERE
关键字之后。如果你根据是否满足多个搜索条件来排除行,这很有用,如下面的示例查询返回golfers的name
、average
、best
和wins
值:
SELECT name, average, best, wins
FROM golfers
WHERE NOT (average < 80 AND best < 70) OR wins = 9;
Output+---------+---------+------+------+
| name | average | best | wins |
+---------+---------+------+------+
| George | 84.6 | 68 | 3 |
| Pat | 68.7 | 65 | 9 |
| Grady | 97.6 | 78 | 0 |
| Diane | 78.8 | 70 | 1 |
| Raymond | 81.3 | 67 | 1 |
+---------+---------+------+------+
5 rows in set (0.00 sec)
请注意结果集的第二行。帕特的“平均”分数不到80分,她的“最佳”分数也不到70分。然而,她的行仍然包含在结果集中,因为NOT
操作符只是对括号内的搜索条件求反。
回想一下,当您将由AND
或OR
分隔的多个谓词包装在括号中时,SQL将优先考虑这些谓词,并将它们视为单个隔离的搜索条件。因此,NOT
操作符只排除基于前两个谓词的行: average < 80
和best < 70
。但是它包含基于第三个谓词的行,wins = 9
。
你可以重写这个查询,根据第三个条件和前两个条件将它们都包含在括号中,如下所示:
SELECT name, average, best, wins
FROM golfers
WHERE NOT ((average < 80 AND best < 70) OR wins = 9);
Output+---------+---------+------+------+
| name | average | best | wins |
+---------+---------+------+------+
| George | 84.6 | 68 | 3 |
| Grady | 97.6 | 78 | 0 |
| Diane | 78.8 | 70 | 1 |
| Raymond | 81.3 | 67 | 1 |
+---------+---------+------+------+
4 rows in set (0.00 sec)
根据SQL实现的不同,如果你在比较操作符之前包含NOT
,数据库系统可能会认为查询语法无效。举个例子,试着运行这个查询:
SELECT name
FROM golfers
WHERE name NOT = 'Grady';
对于MySQL及其衍生版本,这将导致错误:
OutputERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= 'Grady'' at line 1
这个错误的原因是NOT
操作符通常不与比较操作符(=
,<>
, <
, <
, <=
, >
和>=
)一起使用,因为你可以通过将一个比较操作符替换为另一个比较操作符来实现相反的效果,该比较操作符将返回第一个比较操作符将排除的行。例如,你可以将等价运算符(=
)替换为不等价运算符(<>
)。
总结
通过阅读本指南,你学习了如何编写WHERE
子句,使查询只返回满足指定条件的行。你还学习了如何在单个查询中组合多个谓词和搜索条件,以及如何使用NOT
关键字从结果集中排除信息。
虽然这里显示的命令在大多数关系型数据库上都可以工作,但请注意,每个SQL数据库都使用自己独特的语言实现。关于每个命令及其所有选项的更完整描述,读者可以查阅相应DBMS的官方文档。
相关文章:
如何使用SQL系列 之 如何在SQL中使用WHERE条件语句
引言 在结构化查询语言 (SQL)语句中,WHERE子句限制了给定操作会影响哪些行。它们通过定义特定的条件(称为搜索条件)来实现这一点,每一行都必须满足这些条件才能受到操作的影响。 本指南将介绍WHERE子句中使用的通用语法。它还将概述如何在单个WHERE子句…...
leetcode:1941. 检查是否所有字符出现次数相同(python3解法)
难度:简单 给你一个字符串 s ,如果 s 是一个 好 字符串,请你返回 true ,否则请返回 false 。 如果 s 中出现过的 所有 字符的出现次数 相同 ,那么我们称字符串 s 是 好 字符串。 示例 1: 输入:s…...
Echarts 各种点击事件监听
目录 一、鼠标事件1.1、左击1.2、双击1.3、右击1.4、右键双击1.5、中轴滚动二、时间轴2.1、时间轴监听三、拖动3.1、拖动事件一、鼠标事件 1.1、左击 chart.on(click, function(params)...
《智能网联汽车自动驾驶功能测试规程》
一、 编制背景 2018 年4 月12 日,工业和信息化部、公安部、交通运输部联合发布《智能网联汽车道路测试管理规范(试行)》(以下简称《管理规范》),对智能网联汽车道路测试申请、审核、管理以及测试主体、测试驾驶人和测试车辆要求等…...
NVIDIA CUDA Win10安装步骤
前言 windows10 版本安装 CUDA ,首先需要下载两个安装包 CUDA toolkit(toolkit就是指工具包)cuDNN 1. 安装前准备 在安装CUDA之前,需要完成以下准备工作: 确认你的显卡已经正确安装,在设备管理器中可以看…...
Elasticsearch、Kibana以及Java操作ES 的快速使用
docker 安装elastic search 、 kibana(可视化管理elastic search) docker pull elasticsearch:7.12.1 docker pull kibana:7.12.1创建docker自定义网络 docker自定义网络可以使得容器之间使用容器名网络互连,默认的网络不会有这功能。 一定…...
逐鹿人形机器人,百度、腾讯、小米卷起来
长期不温不火的人形机器人产业迎来新风口,技术显著提升、新品层出不穷、资本投资态度也逐渐好转。 8月18日,2023世界机器人大会博览会正式开放,全面展示了机器人行业的新技术、新产品和新应用。据悉,此次展会展览总面积达4.5万平…...
AndroidStudio推荐下载和配置
1、推荐下载链接 Download Android Studio & App Tools - Android Developers 2、gradle配置案例 // Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories {maven { url https://maven.aliyun.…...
mysql异常占用资源排查
通过执行日志与连接信息排查 查看是否开启日志记录 mysql> show global variables like %general%; --------------------------------- | Variable_name | Value | --------------------------------- | general_log | OFF | | general_log_file…...
requests 库:发送 form-data 格式的 http 请求 (python)
安装 requests-toolbelt !pip install requests-toolbeltdemo from requests_toolbelt import MultipartEncoder import requestsm MultipartEncoder(fields{query: """第一,向量化匹配是有能力上限的。搜索引擎实现语义搜索已经是好几年的事情了…...
行测图形推理规律(一)元素组成
题库:粉笔网题库 (fenbi.com) 不知道和测评的行测题库是不是一样的,但是总结的规律应该是一样的。 规律并不唯一,题库的答案也只是参考答案,切勿当杠精,你觉得你的规律更合适就别管。本人所归纳的规律仅代表本人想法…...
【python爬虫】13.吃什么不会胖(爬虫实操练习)
文章目录 前言项目实操明确目标分析过程代码实现 前言 吃什么不会胖——这是我前段时间在健身时比较关注的话题。 相信很多人,哪怕不健身,也会和我一样注重饮食的健康,在乎自己每天摄入的食物热量。 不过,生活中应该很少有人会…...
深入理解联邦学习——联邦学习与现有理论的区别与联系
分类目录:《深入理解联邦学习》总目录 作为一种全新的技术,联邦学习在借鉴一些成熟技术的同时也具备了一定的独创性。下面我们就从多个角度来阐释联邦学习和其他相关概念之间的关系。 联邦学习与差分隐私理论的区别 联邦学习的特点使其可以被用来保护用…...
基于Python+DenseNet121算法模型实现一个图像分类识别系统案例
目录 介绍在TensorFlow中的应用实战案例最后 一、介绍 DenseNet(Densely Connected Convolutional Networks)是一种卷积神经网络(CNN)架构,2017年由Gao Huang等人提出。该网络的核心思想是密集连接,即每…...
旋转图片两种方法
这两种方法在旋转图像时,可能会产生一些不同的效果: rotate_image_new()旋转后的图像完全包含旋转前的内容,并且填充边界尽可能小 rotate_image() 保持原始图像的大小,并根据填充选项决定是否填充边界为白色。如果 if_fill_whit…...
10 mysql tiny/small/medium/big int 的数据存储
前言 这里主要是 由于之前的一个 datetime 存储的时间 导致的问题的衍生出来的探究 探究的主要内容为 int 类类型的存储, 浮点类类型的存储, char 类类型的存储, blob 类类型的存储, enum/json/set/bit 类类型的存储 本文主要 的相关内容是 int 类类型的相关数据的存储 …...
UI自动化测试之Jenkins配置
团队下半年的目标之一是实现自动化测试,这里要吐槽一下,之前开发的测试平台了,最初的目的是用来做接口自动化测试和性能测试,但由于各种原因,接口自动化测试那部分功能整个废弃掉了,其中和易用性有很大关系…...
电视盒子什么品牌好?数码博主盘点目前性能最好的电视盒子
电视盒子是非常重要的,老人小孩基本每天都会看电视,而电视盒子作为电视盒子的最佳拍档销量十分火爆,我自己每个月都会测评几次电视盒子,今天给大家详细解读一下电视盒子什么品牌好,看看目前性能最好的电视盒子是哪些&a…...
对于枚举类型的输出
对于枚举类型的输出 对于枚举类型的输出,您可以使用以下方法:1. 将枚举值转换为整数进行输出:cppODU_TYPE type ODU_TYPE_331;int value static_cast<int>(type);std::cout << "ODU_TYPE: " << value <<…...
solidity开发环境配置,vscode搭配remix
#学习笔记 初学solidity,使用remix非常方便,因为需要的环境都配置好了,打开网站就可以使用。 不过在编写代码方面,使用vscode更方便,而vscode本身并不能像remix那样部署合约,它还需要安装插件。 点击红色箭…...
chatGPT生成代码--go组合算法
提问:用golang写一个组合算法函数zuhe(x,n),x为组合所需的字符,n 为组合后的字符串长度,例如 x"ab", n2 结果返回 aa,ab,bb,ba 结果:下面是一个用Go编写的生成长度为n的字符串组合的函数 zuhe,其…...
推荐6款普通人搞副业做自媒体AI工具
hi,同学们,我是赤辰,本期是赤辰第5篇AI工具类教程,文章底部准备了粉丝福利,看完可以领取!身边越来越多的小伙伴靠自媒体实现财富自由了!因此,推荐大家在工作之余或空闲时间从事自媒体…...
vs中git提交合并分支的步骤记录
vs打开终端 PS D:\project\et_lower4_driver> git pull Already up to date. PS D:\project\et_lower4_driver> git branch * kiyun_usb7851 master PS D:\project\et_lower4_driver> git checkout master Switched to branch master Your branch is up to date wit…...
PostgreSQL 备份恢复:pg_probackup
文章目录 前言1. 安装备份工具1.1 环境介绍1.2 RPM 安装1.3 验证 2. 配置备份工具2.1 初始化设置2.2 创建备份用户2.3 配置自动归档 3. 工具使用介绍3.1 init3.2 add-instance3.3 del-instance3.4 set-config3.5 show-config3.6 set-backup3.7 backup3.8 show3.9 delete3.10 re…...
博客程序系统其它功能扩充
一、注册功能 1、约定前后端接口 2、后端代码编写 WebServlet("/register") public class RegisterServlet extends HttpServlet {Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置…...
MATLAB 2023安装方法之删除旧版本MATLAB,安装新版本MATLAB
说明:之前一直使用的是MATLAB R2020b,但最近复现Github上的程序时,运行不了,联系作者说他的程序只能在MATLAB 2021之后的版本运行,因此决定安装最新版本的MATLAB。 系统:Windows 11 需要卸载的旧MATLAB 版…...
全国唯一一所初试考Java的学校!平均300分拿下
苏州科技大学 考研难度(☆) 内容:23考情概况(拟录取和复试分析)、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1187字,预计阅读:3分钟 2023考情概况 苏州科技…...
day35 | 860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球
目录: 解题及思路学习 860. 柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。 每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美…...
ffmpeg批量转码
新建.bat文件 echo offfor %%s in (*.mp4) do ( echo %%s ffmpeg -i %%s -b 7M %%~ns7m.mp4 ) pause如果你的电脑有显卡,也可以使用硬件转码。转码程序链接...
时序预测 | MATLAB实现基于QPSO-BiLSTM、PSO-BiLSTM和BiLSTM时间序列预测
时序预测 | MATLAB实现基于QPSO-BiLSTM、PSO-BiLSTM和BiLSTM时间序列预测 目录 时序预测 | MATLAB实现基于QPSO-BiLSTM、PSO-BiLSTM和BiLSTM时间序列预测效果一览基本描述程序设计参考资料 效果一览 基本描述 1.Matlab实现QPSO-BiLSTM、PSO-BiLSTM和BiLSTM神经网络时间序列预测…...
自建站怎么接入支付/拉新推广怎么找渠道
一、概述 原始视频帧(最原始的视频数据)根据编码的需要,以不同的方式进行扫描产生两种视频帧:连续或隔行视频帧,隔行视频帧包括顶场和底场,连续(遂行)扫描的视频帧与隔行扫描视频帧有…...
做暧暧视频网站w/关键词优化的作用
JAVA类库整理标签(空格分隔): 技术栈[toc]commons-codec加解密功能封装 例:commons-codeccommons-codec1.12/** MD5加密*/DigestUtils.md5Hex("123456")commons-lang3工具类封装 例:org.apache.commonscommons-lang33.9public stat…...
鼓楼网站seo搜索引擎优化/站长工具百度
2019独角兽企业重金招聘Python工程师标准>>> 项目需求变更规范 一、需求变更的原因分析 需求变更可能来自方案服务商、客户或BD等,也可能来源于项目组内部。而需求变更的表现形式是多方面的,如老板临时改变想法、需求插入,某一功能…...
phpcms获取网站名称/口碑营销的方法
线性表一般分为顺序结构和链式结构。 顺序表里面元素的地址是连续的,如数组; 链表里面节点的地址不是连续的,是通过指针连起来的,如单链表; 顺序表和链表结构各自的优缺点:(引自百度知道&#x…...
centos7.2 wordpress/北京营销型网站
2022/2/18 今天看到了一个很好的博客:https://wudan.blog.csdn.net/article/details/121909047?spm1001.2014.3001.5502 有关于promise的,我自己去尝试写接口试试 就是说resolve(subList) 那么res就是subList啊。没有res.subList vue 每隔几秒刷新请求…...
做外贸哪个网站比较好/搜索排名广告营销怎么做
雷锋网(公众号:雷锋网)按:数据科学、大数据和物联网正在以令人炫目的速度发展和演进,而商业界正以缓慢的速度将更多来自不同渠道的数据整合起来,并能从中洞察更多信息。本文是 Andrew Dipper 对数据科学行业2017年的展望ÿ…...