当前位置: 首页 > ops >正文

数据库相关操作

数据库相关操作

  • Redis
    • Key(键)操作
  • MySQL
    • 查看表已有索引
    • 创建/删除索引
    • 是否命中索引
  • Oracle
    • 备份/恢复/删除表
    • REGEXP_SUBSTR
    • INSTR(string, substring)
    • ROWNUM
    • DBMS_RANDOM.VALUE()
    • 判空
    • 两个日期间隔

Redis

Key(键)操作

命令描述例子
DEL key删除指定键(支持多键,如 DEL key1 key2 )DEL sys_dict:hangup_cause (删除指定键)
KEYS pattern按模式匹配查询键(* 通配符,如 sys_dict:* )KEYS sys_dict:* (查所有 sys_dict: 开头的键 )

MySQL

查看表已有索引

SHOW INDEX FROM `表名` IN `数据库名`;

结果说明

Key_name:索引名称(PRIMARY 为主键索引)。

Column_name:索引包含的列名。

Non_unique:是否为非唯一索引(0 表示唯一索引,1 表示非唯一索引)。

Index_type:索引类型(如 BTREE、HASH 等)。

创建/删除索引

-- 创建索引
CREATE INDEX idx_record ON record (from_user,    -- 优先放置等值查询或前缀模糊查询的字段start_time DESC,  -- 范围查询 + 排序字段(DESC 与 ORDER BY 一致)end_time          -- 若查询中需要过滤 end_time,可加入索引(但范围查询后字段无法再利用索引)
);
-- 删除索引
DROP INDEX idx_record ON record;

是否命中索引

EXPLAIN SELECT ...  -- 你的原始查询语句

结果说明

key:实际使用的索引。若为NULL则表示未使用索引

possible_keys :可能使用的索引列表

type 连接类型,常见值:

  • ALL:全表扫描(未命中索引)
  • index:索引扫描
  • range:范围扫描(如LIKE ‘abc%’)
  • ref:使用非唯一索引查找

Extra额外信息,常见值:

  • Using index:使用了覆盖索引(性能最佳)
  • Using where:使用了 WHERE 过滤
  • Using filesort:需要文件排序(性能较差)

Oracle

备份/恢复/删除表

--备份
CREATE TABLE table_t_backup AS
SELECT * 
FROM table_t
WHERE t_flag = 0
AND t_CODE IN('8AP57','8AP51');
--恢复
MERGE INTO table_t t
USING table_t_backup s
ON (t.ID = s.ID)
WHEN MATCHED THENUPDATE SET t.NUMBER = s.NUMBER,t.PAPT_NUMBER = s.PAPT_NUMBER,
AND s.CODE IN('8AP57','8AP51');
--删除
DROP TABLE table_t_backup

REGEXP_SUBSTR

从字符串中提取与正则表达式匹配的子串

REGEXP_SUBSTR(source_string,  -- 源字符串(必填)pattern,        -- 正则表达式模式(必填)[position],     -- 开始搜索的位置(可选,默认 1,支持负数从右向左)[occurrence],   -- 匹配第几次出现的结果(可选,默认 1)[match_param],  -- 匹配参数(可选,控制大小写、换行等)[subexpression] -- 提取第几个子匹配项(可选,默认 0 表示整个匹配)
)
参数描述
source_string要搜索的字符串,可以是列名或字符串字面量
pattern正则表达式模式,支持标准正则语法(如 \d、*、+ 等)
position搜索起始位置: - 正数:从左到右第 position 个字符开始(默认 1)
- 负数:从右到左第 abs(position) 个字符开始
occurrence指定返回第几次匹配的结果,默认为 1(第一次匹配)
match_param匹配参数(可选,多个参数可组合使用): ‘i’:不区分大小写
‘c’:区分大小写(默认)
‘n’:允许 . 匹配换行符
‘m’:多行模式(^ 和 $ 匹配行首尾)
‘x’:忽略模式中的空白字符 null
subexpression提取正则表达式中第 n 个括号内的子匹配项(()):
0:返回整个匹配结果(默认)
1:返回第 1 个括号内的子串
2:返回第 2 个括号内的子串,依此类推
SELECT REGEXP_SUBSTR('user@example.com', '^([^@]+)') AS username FROM DUAL;
-- 正则解析:^([^@]+) 表示以非 @ 字符开头的第一个子串
-- 输出:user

INSTR(string, substring)

Oracle 的内置函数,用于查找 substring 在 string 中首次出现的位置。如果找到,返回位置索引(从 1 开始);如果未找到,返回 0。

一个字符串含多个符号时,只返回第一个的位置

INSTR(‘ABC-DEF’, ‘-’) → 返回 4(连字符 - 在第 4 个位置)

INSTR(‘ABCDEF’, ‘-’) → 返回 0(没有连字符)

WHERE INSTR(HARDWARE_NUMBER, '-') > 0

结果:这个条件等价于 “字段中包含 -”

WHERE INSTR(ms.SOFTWARE_NUMBER, '-', INSTR(ms.SOFTWARE_NUMBER, '-') + 1) > 0

结果:判断字段中是否至少包含两个 -

ROWNUM

ROWNUM是 Oracle 的行号伪列,用于标识结果集中的行顺序

ROWNUM必须在结果集生成后才能使用,故必须用子查询

SELECT *
FROM (SELECT * FROM t_table 
)
WHERE ROWNUM <= 20;

结果:返回的是满足条件的前 20 行,但顺序是未定义的(通常按数据在磁盘中的物理存储顺序,或索引顺序)

DBMS_RANDOM.VALUE()

DBMS_RANDOM.VALUE() 是 Oracle 内置函数,会为结果集中的每一行生成一个随机数。

按这些随机数排序后,结果集就会呈现随机排列的状态。

SELECT *
FROM (SELECT * FROM INVOKE_LOGORDER BY DBMS_RANDOM.VALUE()
)
WHERE ROWNUM <= 20;

结果:随机前20条数据

判空

AND (ms.ECU_PAPT_NUMBER IS NULL OR ms.ECU_PAPT_NUMBER = '')

两个日期间隔

SELECT * 
FROM LOG pl 
WHERE pl.NAME = 'add' AND pl.TIME BETWEEN TO_DATE('2021-09-06 00:00:00', 'YYYY-MM-DD HH24:MI:SS')AND TO_DATE('2025-09-06 23:59:59', 'YYYY-MM-DD HH24:MI:SS')
http://www.xdnf.cn/news/14274.html

相关文章:

  • [windows工具]OCR提取文字软件1.1使用教程及注意事项
  • Java—— ArrayList 和 LinkedList 详解
  • 【橘子的AI | 每日一课】Day4!机器学习 (ML) 基础
  • /etc/profile.d/conda.sh: No such file or directory : numeric argument required
  • Nginx-2 详解处理 Http 请求
  • aws(学习笔记第四十四课) opensearch
  • AWS EC2 终极指南:如何选择预装 GPU 驱动和特定功能的最佳 AMI
  • 自然语言处理NLP 学习笔记
  • Jenkins 全面深入学习目录
  • c++ 项目使用 prometheus + grafana 进行实时监控
  • 安卓9.0系统修改定制化____默认开启 开发者选项中的OEM锁解锁选项 开搞篇 五
  • Ubuntu安装Gym及其仿真
  • 基于51单片机的污水ph值和液压监测系统
  • 关于MCU、MPU、SoC、DSP四大类型芯片
  • Python学习小结
  • 山东大学项目实训——基于DeepSeek的智能写作与训练平台(十四)
  • 智能语音交互技术深度解析:从原理到产业实践
  • 访问vLLM启动的大模型,报错The model `XXX/XXX` does not exist
  • 嵌入式开发--汇川伺服干扰造成FDCAN模块错误过多导致死机
  • 芯片测试之 trim修调测试详解
  • AI结构化数据:智能聊天与传统开发的结合
  • Java大模型开发入门 (6/15):对话的灵魂 - 深入理解LangChain4j中的模型、提示和解析器
  • 从0到1掌握数据库安全:用户认证与授权的深度实践
  • ToonMe:照片变卡通,创意无限
  • Java大模型开发入门 (8/15):连接外部世界(上) - RAG入门与文档加载
  • <10>-MySQL索引特性
  • 华为云Flexus+DeepSeek征文|基于华为云Flexus云服务的Dify一键部署
  • HTML+CSS 登陆框动态切换
  • NGINX 四层上游健康检查模块实战`ngx_stream_upstream_hc_module`
  • 会计 - 财务报告