- 博客(640)
- 资源 (13)
- 收藏
- 关注
原创 (课堂笔记)PL/SQL 循环 自定义函数 存储过程
本文系统梳理了PL/SQL三大核心内容:1)循环结构:包括FOR循环(固定次数)、WHILE循环(条件判断)及BREAK/CONTINUE控制语句;2)自定义函数:强调必须返回值的特性,演示了数值计算和业务查询两种应用场景;3)存储过程:侧重数据处理流程封装,对比了与函数的关键差异(无返回值、不可SQL调用)。特别指出存储过程中IS/AS关键字不可省略的语法要求,并提供了典型练习案例(质数判断、字符串处理等)。适用于数据库开发人员快速掌握PL/SQL编程要点。
2026-05-07 17:13:52
5
原创 Oracle 存储过程 procedure 不允许使用 return 语句
Oracle存储过程中RETURN语句的使用存在严格限制:在存储过程(PROCEDURE)中不允许使用RETURN语句,否则会引发PLS-00372编译错误;而在函数(FUNCTION)中则必须使用RETURN并返回指定值。如需在存储过程中实现提前退出功能,建议采用GOTO跳转、条件判断或异常处理等替代方案。这一设计差异反映了Oracle对存储过程和函数的不同定位,函数必须返回值而存储过程侧重执行操作,开发者需特别注意语法规范以避免错误。
2026-05-07 16:50:08
13
原创 PyCharm 大数据开发快速上手指南(类比 VSCode 、Oracle SQL Developer)
大数据开发首选PyCharm(非选工具问题,而是快速上手需求)PyCharm可通过键位切换、界面映射降低迁移成本Oracle连接需要JDBC驱动,支持SQL控制台智能补全SQL Developer在Oracle深度调优方面不可替代理解解释器和虚拟环境是Python项目开发的核心基础
2026-05-07 12:48:34
63
原创 解释说明 SQLite 里1/2得到的不是0.5,得到的是0,只有1*1.0/2才会得到0.5
SQLite等数据库中整数除法会截断小数部分,1/2结果为0。要得到0.5,需确保至少一个操作数为浮点数,如1.0/2或CAST(1 AS REAL)/2。MySQL默认返回小数结果,而SQLite、PostgreSQL等需显式转换。最佳实践是使用显式类型转换确保跨数据库兼容性,避免隐式转换带来的意外结果。
2026-05-06 17:48:29
109
原创 PL/SQL:变量使用 两个连续的外部输入 注意事项
Oracle替换变量机制解析:在SQLPlus中,相同名称的替换变量(如&input)会复用第一次输入的值(值复用),后续同名变量不会重复提示;而在SQLDeveloper中,每次遇到替换变量都会独立提示输入。若要实现不同变量获取相同值,可使用&&定义变量或先存储到PL/SQL变量;需要独立值时则使用不同名称的替换变量。该机制本质是文本替换而非引用复用,修改其中一个变量不会影响其他同名变量的值。不同客户端工具(SQLPlus/SQLDeveloper)对替换变量的处理方式存在差异。
2026-05-06 17:43:06
206
原创 Oracle SQL Developer 使用指南(类比 VS Code):dbms_output.put_line()
Oracle SQL Developer快速上手指南:从VSCode到数据库开发
2026-05-06 17:14:07
206
原创 SQL Developer 连接类型 (Connection Type) :SID 和 Service Name的区别
SQLDeveloper连接Oracle数据库时,Basic连接类型最常用,需区分SID和服务名。SID是数据库实例的唯一标识(1对1),适合单机数据库;服务名是逻辑入口(1对多),适合RAC集群和云数据库。建议优先尝试服务名,若失败再改用SID。其他连接类型如TNS用于复杂生产环境,CloudWallet用于云数据库,Advanced用于定制化场景。掌握Basic连接及SID/服务名区别可解决90%的连接问题。
2026-05-06 17:03:32
336
原创 MySQL 计算新登录用户次日留存率
本文介绍了三种计算MySQL中新登录用户次日留存率的SQL解法。解法一使用自连接和子查询,兼容性好且性能优秀;解法二基于MySQL 8.0+的窗口函数;解法三通过WITH子句实现清晰逻辑。核心步骤包括:1)获取用户首次登录日期;2)判断次日是否登录;3)计算留存率(留存用户数/新用户总数)。文章还对比了不同写法,并扩展了按日期、设备统计及多日留存率的场景,最后强调了整数除法转换和日期处理等注意事项。
2026-05-06 08:46:47
321
原创 Oracle 创建视图报错:列名不唯一
创建Oracle视图时出现列名重复错误(ORA-00957),原因是使用e.*,d.*导致DEPTNO列重复。解决方法需显式指定列名,为重复列设置别名(如DEPTNO_EMP/DEPTNO_DEPT),或只保留一个表的DEPTNO列。即使替换已有视图,系统仍会校验列名唯一性。建议手动列举所需列并处理重复字段,确保视图创建和后续查询无歧义。
2026-04-30 17:12:11
228
原创 SQL示例:为什么薪资表需要关联多次
本文解释了SQL查询中为何需要两次关联薪资表来比较员工和经理的薪资。核心原因是:一次JOIN只能获取一个人的薪资信息,而查询需要同时获取员工和经理(两个不同个体)的当前薪资进行对比。通过分步示例说明:第一次关联获取员工薪资,第二次关联获取经理薪资。文章还指出,若需比较更多角色(如员工、经理、总监),则需相应增加关联次数(如三次)。这种设计是因为关系型数据库中,JOIN操作基于值匹配,不同角色的薪资需通过独立查询条件获取。
2026-04-30 17:03:48
268
原创 SQL示例:为什么同样的条件需要重复两次排序
SQL查询中两个ORDER BY子句作用不同,不是冗余。第一个在窗口函数内(DENSE_RANK() OVER(ORDER BY salary DESC))决定排名规则;第二个在语句末尾(ORDER BY salary DESC,emp_no)控制结果输出顺序。示例显示:若不使用第二个ORDER BY,相同工资的员工可能不按emp_no升序排列。两个ORDER BY分别服务于排名计算和结果排序两个不同阶段,确保既正确计算排名又满足最终显示顺序要求。
2026-04-30 16:52:33
314
原创 Oracle 中 为什么不能用 ROWNUM >=2 判断
Oracle中的ROWNUM是查询时动态分配的行号(从1开始),其赋值发生在WHERE之后、ORDER BY之前。关键限制:ROWNUM>N(N>1)永远返回空,因为行号分配是逐行进行的。实现分页的正确方法:1)使用ROW_NUMBER()分析函数;2)Oracle 12c+可用OFFSET语法。注意:直接结合ROWNUM和ORDER BY会导致错误结果,必须先通过子查询排序,再在外层使用ROWNUM过滤,才能正确获取排序后的前N条记录。
2026-04-30 16:42:05
370
原创 SQL 有效性/作用域说明:会话级别、事务级别,语句级别
Oracle临时表有三种级别:1. 语句级别(单条SQL有效,如CTE/子查询);2. 事务级别(同一事务内SQL共享,提交后清空);3. 会话级别(整个连接会话有效,断开后清空)。临时表属于事务或会话级别,而非严格语句级别。若需仅当前SQL有效,应使用WITH子句或内联视图。事务级临时表(ON COMMIT DELETE ROWS)数据在事务内可见,会话级(ON COMMIT PRESERVE ROWS)则会话内持续存在。选择取决于数据共享需求范围。
2026-04-30 16:04:20
335
原创 (课堂笔记)SQL 临时表、视图、正则表达式
本文总结了SQL中临时表(CTE)、视图和正则表达式的核心知识点。临时表部分重点讲解WITH子句的编写规范、使用优势(逻辑拆分、提高可读性)和连续登录天数计算案例,强调引用顺序和必须包含最终SELECT的注意事项。视图部分对比普通视图与物化视图的存储特性,说明视图在封装逻辑和安全性方面的作用。正则表达式部分详解Oracle四大核心函数(REGEXP_LIKE/SUBSTR/REPLACE/INSTR)的用法,包含字符串匹配、截取、替换和位置查找的典型示例,特别强调正则模式符号的应用技巧。
2026-04-30 15:57:19
324
原创 (课堂笔记)SQL 高级查询技巧:行列转换、重复数据、递归查询、连续登录
📝SQL高级查询技巧摘要 本笔记总结了SQL数据处理中的5个核心技巧:1)行列转换:使用CASE WHEN/PIVOT实现行转列,UNION ALL/UNPIVOT实现列转行;2)伪列应用:ROWNUM分页查询,ROWID精确去重;3)重复数据处理:通过ROW_NUMBER()时效性去重,利用ROWID删除重复记录;4)递归查询:使用START WITH/CONNECT BY处理层级关系,支持上下级双向查询;5)连续登录分析:采用"日期-序号"差值法识别连续日期,通过三步计算连续天数。
2026-04-29 16:58:29
359
原创 Oracle 中:为什么 from 子查询后面需要一个别名
Oracle要求FROM子查询必须使用别名的原因主要有三点:1) 严格遵循SQL标准,要求所有派生表都必须命名;2) 确保列引用路径明确,避免多表查询时的歧义;3) Oracle解析器机制特殊,不像其他数据库能自动生成内部别名。这种强制规定体现在所有派生表场景,包括子查询、表函数等,省略别名会导致ORA-00903错误。正确做法是在子查询后立即指定别名(如"SELECT...FROM(...) alias"),这是Oracle确保查询语义清晰的重要机制。
2026-04-29 09:55:49
210
原创 大数据开发语境下,SQL 模式名,映射关系 - - 概念理解
在Oracle经典教学环境(如scott)中,模式名等同于用户名(如SCOTT),它作为命名空间管理数据对象(如表emp)。映射关系通常指表间的业务关联(如员工-部门),而非仅SQL连接条件(ON emp.deptno=dept.deptno)。在大数据开发中,模式名演变为逻辑隔离的数据库/命名空间(如Hive的dwd_sales),映射关系更侧重ETL过程中的字段对应规则。因此,模式名是对象的逻辑容器,映射关系既包含业务关联也涵盖技术实现方式。
2026-04-28 20:00:05
167
原创 Oracle:select sum(0),sum(1),sum(10)from emp;
Oracle中SUM函数对常量求和时,结果取决于数据行数。查询select sum(0),sum(1),sum(10) from dual返回0,1,10(dual表只有1行);而查询select sum(0),sum(1),sum(10) from emp返回0,N,10×N(N为emp表行数)。SUM函数会忽略NULL值,但常量求和时每行都有值,结果等于常量值乘以行数。例如emp表14行时,sum(1)=14,sum(10)=140。dual表因只有1行,结果就是常量本身。
2026-04-28 19:45:10
102
原创 (课堂笔记)Oracle:场景判断(CASE WHEN)、集合运算、EXISTS、行列转换
这篇SQL课堂笔记总结了多种数据查询和处理的核心技术。主要内容包括:1)条件判断的CASE WHEN和DECODE语法及应用场景;2)集合运算(UNION、INTERSECT等)的使用要点;3)EXISTS子查询的高效实现方式;4)行列转换的多种实现方法(CASE WHEN、DECODE、PIVOT)。笔记通过具体示例演示了薪资分段、部门统计、成绩表转换等典型场景,并对比了不同技术的适用情况,如EXISTS与IN的效率差异。最后还提供了员工分类统计等练习题,帮助巩固知识点。
2026-04-28 17:18:44
322
原创 数据排序为什么默认升序
数据排序默认采用升序(ASC)主要基于三方面原因:1)符合人类从小到大的自然思维习惯(如数数、字母、时间排序);2)计算机科学传统(多数排序算法天然实现升序);3)数据库设计哲学(遵循最小惊讶原则)。降序(DESC)作为逆向思维需要明确指定,常见于排行榜、最新数据等特殊场景。这种设计既符合日常认知,也与数学、计算机领域的常规实践保持一致,使用户无需额外记忆即可获得预期结果。
2026-04-28 12:30:08
370
原创 窗口函数为什么叫“窗口“?—— 概念理解
窗口函数为什么叫"窗口"? 核心概念:窗口函数中的"窗口"指一个动态的数据观察范围,就像透过移动的相框观察照片局部。 关键特点: 窗口=观察框:为每行数据定义一个可移动的计算范围(如同火车车窗观察不同风景) 三大要素: 窗口边界(PARTITION BY分组) 窗口顺序(ORDER BY排序) 窗口大小(ROWS/RANGE指定范围) 与传统聚合的区别:保留原始行数,在每行上附加窗口计算结果。
2026-04-28 11:22:30
371
原创 DISTINCT(去重、唯一值)使用方法总结
SQL中DISTINCT关键字使用总结:用于查询结果去重,可作用于单列或多列组合(多列同时相同时才去重)。使用时需注意:必须放在SELECT后所有列前;NULL被视为一个独立值;大表性能较差时可考虑建索引或改用GROUP BY。常见场景包括查看唯一值、统计不重复记录数等。典型错误包括将DISTINCT放在中间位置或与聚合函数混用。优化建议包括先过滤数据再使用DISTINCT,或改用EXISTS等替代方案。
2026-04-28 09:04:52
395
原创 Oracle:为什么 ORDER BY 能让 SUM() 变成累计?
SQL窗口函数中ORDER BY对SUM()的影响解析 摘要: 在SQL窗口函数中,ORDER BY子句会改变SUM()的行为。没有ORDER BY时,SUM()计算整个分组的固定总和(如部门总薪资8750);添加ORDER BY后,SUM()变为按指定顺序的累计求和(如2450→7450→8750)。这种差异源于窗口范围的改变:无ORDER BY时窗口是整个分组,有ORDER BY时窗口默认从第一行到当前行。其他聚合函数如AVG、COUNT等也遵循相同逻辑。
2026-04-27 18:25:51
281
原创 (课堂笔记)Oracle 窗口函数/开窗函数/分析函数
窗口函数(OVER)可在SELECT中实现分组计算而不改变行数,核心包括:1)排名函数(ROW_NUMBER/RANK/DENSE_RANK)用于TOPN查询;2)LAG/LEAD获取相邻行数据;3)FIRST_VALUE取组内首条记录;4)NTILE数据分桶;5)聚合开窗(SUM/AVG)实现累计计算。与聚合函数不同,窗口函数保留原行数,通过PARTITION BY分组、ORDER BY排序。典型应用包括部门薪资排名、同环比分析、累计求和等。
2026-04-27 17:08:01
421
原创 (课堂笔记)Oracle 聚合函数与 GROUP BY 分组查询
本文总结了Oracle中聚合函数与GROUP BY分组查询的核心知识点。主要内容包括:1)常用聚合函数(SUM/MAX/MIN/AVG/COUNT)的使用及NULL值处理;2)GROUP BY语法结构和分组查询示例;3)HAVING子句与WHERE的区别;4)SQL语句执行顺序;5)COUNT不同写法的区别;6)常见错误分析及综合练习。重点强调了WHERE与HAVING的应用场景、非分组字段的使用限制以及COUNT的性能优化建议,并提供了典型例题和自测题帮助理解。
2026-04-27 17:02:52
397
原创 (课堂笔记)Oracle 常用函数:数值、字符串、日期处理
本文系统总结了Oracle常用函数,分为数值、字符串和日期处理三大类。数值函数包括ABS、POWER、ROUND等;字符串函数涵盖REPLACE、SUBSTR、INSTR等;日期函数包含LAST_DAY、ADD_MONTHS等。文中提供了典型示例和实用技巧,如统计字符出现次数、模糊查询替代方案等。最后通过综合练习演示了函数组合应用,并给出了最佳实践建议,如日期运算优先使用MONTHS_BETWEEN、字符串拼接推荐使用"||"等。
2026-04-25 18:02:16
362
原创 Oracle 常用数据类型:数值类型、字符类型、日期时间、大对象、特殊类型(ROWID、XML、JSON)附:和 MySql对比,Oracle 特有的关键字或方法
Oracle数据库常用数据类型总结
2026-04-25 08:55:05
397
原创 数据发散(Data Spreading)详解(附:示例 数据发散最大值是笛卡尔乘积)
数据发散是数据库查询中常见的陷阱,指当关联键不唯一时导致结果集行数异常膨胀的现象。典型场景出现在一对多关联时,如员工表关联奖金表(同一员工可能有多个奖金记录),原本14行的员工表可能输出16行结果。数据发散会导致统计错误(如SUM值被放大)、性能下降和存储浪费。解决方案包括:1)对重复键表先进行去重;2)先聚合再关联;3)只取最新记录。关键检查点包括确认关联键唯一性、评估预期结果行数,以及考虑先聚合后关联的策略。在多表级联关联时,发散问题会呈指数级恶化,需特别注意。
2026-04-24 19:46:01
144
原创 (课堂笔记)Oracle 子查询与表操作
本文总结了Oracle数据库中子查询和表操作的关键知识点。子查询部分介绍了WHERE和FROM后的子查询用法,包括单值、单列返回形式及典型应用场景。表操作部分涵盖创建、维护(重命名、增删列等)以及CRUD操作(增删改查),特别说明了不同删除方式的区别。连接查询部分详细讲解了内连接和左右外连接的使用方法。最后提供了4个综合练习题,涉及薪资比较、部门筛选等常见查询需求。本文可作为Oracle数据库操作的快速复习资料。
2026-04-24 19:40:00
172
原创 数据库“水位线”概念详解:Oracle数据库的数据文件空间管理 和 Flink/流处理中的事件时间处理
Oracle数据库中的"水位线"(HWM)是一个关键概念,它标记了表曾经使用过的最大存储空间位置。当执行全表扫描时,系统会扫描HWM以下的所有数据块,即使其中包含大量空块。主要特点包括:INSERT操作可能抬高HWM,DELETE不会降低HWM,TRUNCATE则能重置HWM。HWM过高会导致性能问题,可通过SHRINK(在线)、MOVE(离线)或TRUNCATE等操作来降低。建议定期清理后执行SHRINK,并考虑使用分区表来优化性能。
2026-04-24 17:21:19
204
Beetl2.8中文文档
2018-06-01
质量管理学习资料分享.zip
2020-06-03
权限树tree-multiselect.js-demo
2018-01-19
2018-1-23_tree-multiselect-mydemo真实模拟项目中的添加和编辑功能
2018-01-23
js权威指南知识梳理.zip
2020-04-29
《GS14-2013 工商行政管理基础代码集》
2018-01-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅