14 个 SQL 拿来就用语句实例!

作者:JackTian

来源:公众号「杰哥的IT之旅」

ID:Jake_Internet

转载请联系授权(微信ID:Hc220088)

原文链接:14 个 SQL 拿来就用语句实例!

SQL 1: 从 idc_evaluating 数据库的 ns_active_ip 表中查询省份代码为 110000 的所有行数据

csharp 复制代码
select
	*
from
	idc_evaluating.ns_active_ip
where
	province_code = '110000';

SQL 2: 从 idc_evaluating 数据库的 ns_active_ip_udp 表中查询目的 IP 列值包含指定 IP 地址(IP_1、IP_2、IP_3)的所有行数据

csharp 复制代码
select
	*
from
	idc_evaluating.ns_active_ip_udp
where
	dest_ip in ('IP_1', 'IP_2', 'IP_3');

SQL 3: 从 idc_evaluating 数据库的 ns_active_ip_udp_record 表中查询目的 IP 列值包含指定 IP 地址(IP_1、IP_2、IP_3、IP_4、IP_5)的所有行数据

csharp 复制代码
select
	*
from
	idc_evaluating.ns_active_ip_udp_record
where
	dest_ip in ('IP_1', 'IP_2', 'IP_3', 'IP_4', 'IP_5');

SQL 4: 从 idc_evaluating 数据库的 ns_active_ip 表中查询省份代码为 110000 且机房代码为 1024 计算满足条件的所有活跃 IP 地址数量,并将查询的结果表头命名为"活跃IP总数"

csharp 复制代码
select
	count(*) as 活跃IP总数
from
	idc_evaluating.ns_active_ip
where
	province_code = '110000'
	and house_code = '1024';

SQL 5: 删除 idc_evaluating 数据库的 ns_active_ip 表中匹配省份代码为 110000 且机房代码为 1024 的所有活跃 IP 地址数据

ini 复制代码
delete
from
	idc_evaluating.ns_active_ip
where
	province_code = '110000'
	and house_code = '1024';

SQL 6: 查询 idc_evaluating 数据库中的 ns_active_ip_udp 表结构

ini 复制代码
describe idc_evaluating.ns_active_ip_udp;

或者使用以下语句:

css 复制代码
show columns
from
idc_evaluating.ns_active_ip_udp;

执行以上任一语句后,将返回 ns_active_ip_udp 表的所有列名、数据类型、键信息以及其他属性,通过查看这些字段信息来了解表的结构。

SQL 7: 从 idc_evaluating 数据库的 ns_active_ip_udp 表中查询满足 verify_id(任务ID)和 status(状态)字段条件的行计数,并将查询的结果表头命名为"计数"

csharp 复制代码
select
	count(*) as 计数
from
	idc_evaluating.ns_active_ip_udp
where
	verify_id = '1024'
	and status = '0';

SQL 8: 从 idc_evaluating 数据库的 ns_active_ip_udp 表中查询满足单个 verify_id(任务ID)所有字段的行数据

csharp 复制代码
select
	*
from
	idc_evaluating.ns_active_ip_udp
where
	verify_id = '1024';

SQL 9: 从 idc_evaluating 数据库的 ns_active_ip_udp 表中查询满足多个 verify_id(任务ID)所有字段的行数据

csharp 复制代码
select
	*
from
	idc_evaluating.ns_active_ip_udp
where
	verify_id in ('1024', '2048');

SQL 10: 从 idc_evaluating 数据库的 ns_active_ip_udp_record 表中查询满足单个 verify_id(任务ID)字段条件的计数,并将查询的结果表头命名为"攻击总数"

csharp 复制代码
select
	count(*) as 攻击总数
from
	idc_evaluating.ns_active_ip_udp_record naiur
where
	verify_id = '1024';

SQL 11: 从 idc_evaluating 数据库的 ns_active_ip_udp_record 表中查询满足多个 verify_id(任务ID)字段条件的计数,并将查询的结果表头命名为"攻击总数"

csharp 复制代码
select
	count(*) as 攻击总数
from
	idc_evaluating.ns_active_ip_udp_record naiur
where
	verify_id in ('1024', '2048');

SQL 12: 通过内连接,从两个表中获取数据,并返回满足特定条件的唯一指令 ID、目的IP、攻击次数和攻击状态。这些条件包括指令 ID 在指定的范围内,并且这两个表中 request_id 必须匹配

csharp 复制代码
select
	distinct ncl.command_id as 指令ID,
	naiu.dest_ip as 目的IP,
	naiu.attacks_count as 攻击次数,
	naiu.status as 攻击状态
from
	idc_evaluating.ns_active_ip_udp as naiu
inner join idc_evaluating.ns_command_log as ncl  
on
	naiu.request_id = ncl.request_id
where
	ncl.command_id between '1024' and '2048';

以下是对该 SQL 语句的详细解释:

  • SELECT: 用于从数据库中查询数据的命令
  • DISTINCT: 该关键字用于返回唯一的结果。在这个情况下,ncl.command_id的值在结果集中是唯一的
  • ncl.command_id as 指令ID: 表示选择ncl表中的command_id列,并将其命名为"指令ID"
  • naiu.dest_ip as 目的IP: 表示选择naiu表中的dest_ip列,并将其命名为"目的IP"
  • naiu.attacks_count as 攻击次数: 表示选择naiu表中的attacks_count列,并将其命名为"攻击次数"
  • naiu.status as 攻击状态: 表示选择naiu表中的status列,并将其命名为"攻击状态"
  • FROM idc_evaluating.ns_active_ip_udp as naiu: 表示从名为idc_evaluating.ns_active_ip_udp的表中选择数据,并将该表临时命名为naiu
  • INNER JOIN idc_evaluating.ns_command_log as ncl ON naiu.request_id = ncl.request_id: 这是一个内连接操作,将idc_evaluating.ns_command_log表(临时命名为 ncl)与之前的naiu表连接起来。连接的条件是两个表中的request_id必须相等
  • WHERE ncl.command_id BETWEEN '1024' AND '2048': 这是一个条件子句,限制只选择那些ncl.command_id字段在'1024'和'2048'之间的数据记录

SQL 13: 该 SQL 语句的目的是获取在指定的command_id范围内的攻击次数的一半作为攻击总数

csharp 复制代码
select
	distinct SUM(naiu.attacks_count) / 2 as 攻击总数
from
	idc_evaluating.ns_active_ip_udp as naiu
inner join idc_evaluating.ns_command_log as ncl  
on
	naiu.request_id = ncl.request_id
where
	ncl.command_id between '1024' and '2048';

以下是对该 SQL 语句的详细解释:

  • SELECT DISTINCT SUM(naiu.attacks_count) / 2 as 攻击总数: 这里使用了SUM函数来计算naiu.attacks_count的总和,然后除以2,最后将结果命名为"攻击总数"。DISTINCT关键字确保每个攻击总数只计算一次
  • FROM idc_evaluating.ns_active_ip_udp AS naiu: 指定了主查询表,即idc_evaluating.ns_active_ip_udp,并给它一个别名naiu
  • INNER JOIN idc_evaluating.ns_command_log AS ncl ON naiu.request_id = ncl.request_id: 这里使用了一个内连接(INNER JOIN),连接了idc_evaluating.ns_command_log表,并给它一个别名ncl。连接的条件是naiu.request_id字段和ncl.request_id字段必须相等
  • WHERE ncl.command_id BETWEEN '1024' AND '2048': 这是一个条件子句,限制了只选择那些ncl.command_id在'1024'和'2048'之间的数据记录

SQL 14: 该 SQL 语句的目的是获取一系列特定command_id范围内的记录,并计算这些记录的攻击次数乘以0.9,然后四舍五入到最近的整数并加1,最后返回这些处理过的记录以及它们的指令ID、下发时间、目的IP、攻击次数、攻击时间、攻击状态以及日志数据条数

csharp 复制代码
select
	distinct    
    ncl.command_id as 指令ID,
	naiu.create_time as 指令下发时间,
	naiu.dest_ip as 目的IP,
	naiu.attacks_count as 攻击次数,
	DATE_ADD(naiu.create_time, interval 10 minute) as 攻击时间,
	naiu.status as 攻击状态,
	ROUND(    
    case    
      when naiu.attacks_count is not null then naiu.attacks_count * 0.9    
      else null    
    end,
    0
  ) + 1 as 日志数据条数
from
	idc_evaluating.ns_active_ip_udp as naiu
inner join idc_evaluating.ns_command_log as ncl    
on
	naiu.request_id = ncl.request_id
where
	ncl.command_id between '1024' and '2048';

以下是对该 SQL 语句的详细解释:

  • SELECT DISTINCT: 用于从数据库中选择数据的命令,DISTINCT关键字确保每个指令的ID和其他列的值都是唯一的
  • ncl.command_id as 指令ID, naiu.create_time as 指令下发时间, naiu.dest_ip as 目的IP, naiu.attacks_count as 攻击次数, DATE_ADD(naiu.create_time, INTERVAL 10 MINUTE) AS 攻击时间, naiu.status as 攻击状态: 这些是查询的列,它们来自两个表:idc_evaluating.ns_active_ip_udp(别名为naiu)和idc_evaluating.ns_command_log(别名为ncl)其中,DATE_ADD(naiu.create_time, INTERVAL 10 MINUTE) AS 攻击时间表示将naiu.create_time的时间加上10分钟,然后命名为"攻击时间"
  • ROUND(CASE WHEN naiu.attacks_count IS NOT NULL THEN naiu.attacks_count * 0.9 ELSE NULL END, 0) + 1 AS 日志数据条数: 这部分代码计算了攻击次数乘以0.9,然后四舍五入到最近的整数,最后加1。如果不存在攻击次数,则返回NULL。结果被命名为"日志数据条数"
  • FROM idc_evaluating.ns_active_ip_udp AS naiu INNER JOIN idc_evaluating.ns_command_log AS ncl ON naiu.request_id = ncl.request_id: 这部分代码执行了一个内连接(INNER JOIN),连接了idc_evaluating.ns_active_ip_udp表(别名为naiu)和idc_evaluating.ns_command_log表(别名为ncl)。连接的条件是两个表中的request_id必须相等
  • WHERE ncl.command_id BETWEEN '1024' AND '2048': 这是一个条件子句,限制了查询结果只包括那些command_id在'1024'和'2048'之间的数据记录

以上就是今天所要分享的全部内容了。

如果你觉得这篇文章对你有点用的话,为本文点个赞留个言 或者转发一下,让更多的朋友看到,因为这将是我持续输出更多优质文章的最强动力!

相关推荐
夜泉_ly21 分钟前
MySQL -安装与初识
数据库·mysql
qq_529835351 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New4 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6754 小时前
数据库基础1
数据库
我爱松子鱼4 小时前
mysql之规则优化器RBO
数据库·mysql
闲猫4 小时前
go orm GORM
开发语言·后端·golang
丁卯4044 小时前
Go语言中使用viper绑定结构体和yaml文件信息时,标签的使用
服务器·后端·golang
chengooooooo4 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser5 小时前
【SQL】多表查询案例
数据库·sql
Galeoto5 小时前
how to export a table in sqlite, and import into another
数据库·sqlite