
数据库技术
曹牧
从牙牙学语到灵活运用,风风雨雨
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Oracle:字段 not in
NOT IN在子查询结果包含NULL值时会导致整个查询返回空结果,因为Oracle处理NULL值的逻辑是"未知",任何与NULL的比较都会返回UNKNOWN而非TRUE7。SELECT * FROM tableA WHERE col NOT IN (SELECT col FROM tableB) -- 若tableB.col存在NULL则无结果。静态值列表较短且无NULL时可用NOT IN(如NOT IN (1,2,3))在Oracle数据库中,NOT IN运算符用于检查字段值是否不包含在。原创 2025-10-17 15:48:45 · 63 阅读 · 0 评论 -
oracle:判断字段不以开头
在Oracle中判断字段值不以特定字符开头,主要有以下几种方法:1、使用NOT LIKE运算符最直接的方式是使用NOT LIKE配合通配符'%',例如查找不以'T'开头的记录:SELECT * FROM table_name WHERE column_name NOT LIKE 'T%';这种方法适用于简单的前缀匹配场景。2、结合SUBSTR和LENGTHB函数对于需要区分字母和汉字开头的场景,可以利用字节长度判断:SELECT * FROM table_nameWHERE LENGTHB(SUB原创 2025-10-17 15:45:32 · 87 阅读 · 0 评论 -
oracle:NOT IN
这是因为NOT IN的逻辑等价于多个AND连接的<>条件,而任何值与NULL比较的结果均为UNKNOWN,最终使整个条件失效。在Oracle中应优先使用NOT EXISTS或LEFT JOIN替代NOT IN,尤其在涉及NULL值或大数据量时。在Oracle数据库中,NOT IN运算符的使用需要特别注意其与NULL值的交互问题及性能优化方案。NOT IN:适合子查询结果集小且无NULL值的情况,但需注意全表遍历的性能开销。1. NOT IN与NULL值的陷阱。4. 实际案例中的问题解决。原创 2025-10-17 15:32:27 · 114 阅读 · 0 评论 -
oracle:To_char
日:DD(月中的日)、DDD(年中的日)、DY(星期缩写如FRI)、DAY(星期全拼如FRIDAY)时间:HH24(24小时制)、HH12(12小时制)、MI(分钟)、SS(秒)、FF(毫秒)月份:MM(数字月)、MON(缩写如NOV)、MONTH(全拼如NOVEMBER)年份:YYYY(四位年)、YY(两位年)、YEAR(英文全拼)文字字符:可在格式中添加-、/等分隔符(如YYYY-MM-DD)附加信息:AD/BC(纪元标识)、Q(季度)、WW(年周数)-- 包含文字和修饰符。原创 2025-10-16 15:10:47 · 137 阅读 · 0 评论 -
Oracle中的ROUND函数
输出格式问题:若需强制显示前导零(如0.10),需结合TO_CHAR函数使用格式模型'FM9990.00'。浮点数精度:Oracle对BINARY_FLOAT和BINARY_DOUBLE类型的处理可能影响结果。TRUNC:直接截断,不四舍五入(如TRUNC(123.456, 2)返回123.45)。四舍五入到最近的小时:ROUND(SYSDATE, 'HH')。负数处理:ROUND(-3.6, 0) → 返回-4。月份的四舍五入规则:若日期在当月15日前归本月,否则归下月。若为负数,则对整数部分四舍五入;原创 2025-10-10 12:35:43 · 157 阅读 · 0 评论 -
sqlserver:单引号 Vs 双引号
SQL Server允许在QUOTED_IDENTIFIER为ON时,双引号包含短字符串(长度不超过标识符限制),但会引发警告。双引号:当QUOTED_IDENTIFIER为ON时,双引号仅用于分隔包含特殊字符(如空格)的标识符(表名、列名等),此时双引号不能用于字符串定界。双引号:仅当QUOTED_IDENTIFIER为OFF时,双引号可作为字符串定界符(不推荐)。嵌入单引号需转义为'',而双引号在标识符中需转义为""(当QUOTED_IDENTIFIER为ON时)。原创 2025-09-26 15:48:20 · 313 阅读 · 0 评论 -
sqlserver:函数默认20个9
在SQL Server中,可以通过自定义函数实现返回20个"9"的功能。函数创建时需要指定所有者(如dbo)原创 2025-09-26 15:43:08 · 220 阅读 · 0 评论 -
Oracle:LEFT JOIN和INNER JOIN的查询效率差异
仅返回两表匹配的行,减少了结果集规模,且数据库优化器可自由选择驱动表(通常选数据量小的表作为基础表)。索引影响:若右表连接字段无索引而左表有索引,LEFT JOIN可能比INNER JOIN更快(因INNER JOIN可能被迫扫描全表)。结果集控制:LEFT JOIN可配合WHERE右表字段 IS NOT NULL模拟INNER JOIN行为。数据分布:当左表极小且右表极大时,INNER JOIN可能因优化器选择小表驱动而更高效。索引策略:确保连接字段建立索引,尤其是右表字段。原创 2025-09-24 10:46:54 · 297 阅读 · 0 评论 -
Oracle:LEFT JOIN操作必须配合ON
若省略ON条件,在多数数据库系统中会直接报错,而在某些情况下可能隐式转换为交叉连接(CROSS JOIN),导致两表所有行组合的笛卡尔积结果。Oracle支持传统的外连接语法(使用(+)操作符),此时连接条件需写在WHERE子句中而非ON后。ON条件:在LEFT JOIN中,ON用于定义表间连接逻辑,即使条件不满足也会保留左表所有行(右表对应字段填充NULL)。WHERE条件:在连接完成后进行过滤,会排除不符合条件的行(包括左表保留的行)47。2、ON与WHERE的区别。1、连接条件的必要性。原创 2025-09-24 10:38:59 · 183 阅读 · 0 评论 -
Oracle:select top 5
适用于需要分组取前N条的场景(如按部门取薪资前5员工)。此方法直接返回物理排序后的前5条记录。功能需采用特定语法,因其原生不支持。先通过子查询排序数据,再在外层用。在Oracle数据库中实现。原创 2025-09-05 13:46:00 · 246 阅读 · 0 评论 -
sqlserver:多字段排序
在SQL Server中,多字段排序是通过ORDER BY子句实现的,可以同时指定多个排序字段及其排序方向(升序ASC或降序DESC)。NULL值默认在升序时排在最前,降序时排在最后,具体行为可能因数据库配置而异。先按客户ID升序,再按订单日期降序。原创 2025-09-04 10:43:39 · 203 阅读 · 0 评论 -
SqlServer:NoLock
在SQL Server中,表提示通过绕过锁机制提升查询效率,但会带来数据一致性问题。原创 2025-08-28 10:15:59 · 226 阅读 · 0 评论 -
SqlServer:EXISTS
在SQL Server中,EXISTS是一个布尔运算符,用于检查子查询是否返回至少一行结果。原创 2025-08-28 10:14:10 · 472 阅读 · 0 评论 -
sqlserver: count(*)
在SQL Server中优化。原创 2025-08-28 10:12:53 · 156 阅读 · 0 评论 -
sqlserver 临时表的用法
SQL Server 临时表是存储在 tempdb 数据库中的临时对象,主要用于会话期间存储中间数据。原创 2025-08-27 16:22:13 · 450 阅读 · 0 评论 -
PL/SQL Developer:查询窗口显示结果条数
在相同路径下,选择"每页记录数"为"所有记录",或勾选"All records"单选项(英文版),同时将"Maximum result set size"设置为0表示无限制。建议根据实际数据量选择方案:常规查询推荐固定显示数量(如100-500行),大数据量分析建议使用语法控制或分页查询。"选项中选择"固定",并输入需要显示的记录数量(如100条),最后点击应用和确定。打开菜单栏的【工具】→【首选项】→【窗口类型】→【SQL窗口】,在")直接限制返回行数,此方法不依赖客户端设置。原创 2025-08-26 10:58:56 · 655 阅读 · 0 评论 -
sql 时间字符串比较
要求格式严格一致,例如'2023-03-03'必须补零为'2023-03-03'而非'2023-3-3'原创 2025-08-20 08:53:13 · 293 阅读 · 0 评论 -
PL/SQL事务未提交的影响
PL/SQL事务未提交的影响原创 2025-08-07 12:04:31 · 719 阅读 · 0 评论 -
PL/SQL Developer查看物化视图的方法
PL/SQL Developer查看物化视图的方法原创 2025-07-23 16:02:31 · 620 阅读 · 0 评论 -
Oracle物化视图详解
物化视图(Materialized View)是Oracle数据库中一种特殊的物理表,它存储了查询结果的物理副本,而不是仅仅存储查询的定义。与普通视图不同,普通视图是虚拟表,每次查询时都需要动态执行SQL语句,而物化视图会实际存储查询结果,就像一个物理表一样。原创 2025-07-23 15:59:11 · 555 阅读 · 0 评论 -
Oracle字符类型详解:VARCHAR、VARCHAR2与CHAR的区别
在Oracle数据库中,VARCHAR、VARCHAR2和CHAR是三种常用的字符数据类型,它们在存储方式、长度限制和使用场景上有着显著区别。原创 2025-07-11 17:06:52 · 668 阅读 · 0 评论 -
Oracle:使用ONLINE选项创建索引
在Oracle中,使用ONLINE选项创建索引可在不阻塞DML操作(增删改)的情况下完成索引构建,适用于生产环境。原创 2025-07-09 12:23:17 · 863 阅读 · 0 评论 -
Oracle中的NULL值
Oracle中的NULL值原创 2025-07-08 09:39:10 · 481 阅读 · 0 评论 -
Oracle:union all和union区别
UNION ALL和UNION在Oracle中的主要区别体现在处理重复记录、性能及结果排序上原创 2025-07-08 09:18:04 · 368 阅读 · 0 评论 -
在SQL Server中创建UUID(唯一标识符)
SQL Server生成UUID原创 2025-07-01 10:35:32 · 669 阅读 · 0 评论 -
oracle 删除数据
在Oracle数据库中,删除数据通常通过DELETE语句来完成。原创 2025-06-25 10:54:02 · 457 阅读 · 0 评论 -
oracle 返回最新记录
oracle 返回最新记录原创 2025-06-24 11:13:02 · 866 阅读 · 0 评论 -
Oracle获取前100条记录
在Oracle数据库中,获取前100条记录原创 2025-06-23 16:10:06 · 947 阅读 · 0 评论 -
Dephi 创建唯一码
在 Delphi 中生成唯一号的方法有多种原创 2025-06-19 14:34:29 · 187 阅读 · 0 评论 -
Oracle union连接的怎么排序
在Oracle数据库中,使用UNION或UNION ALL操作符来合并两个或多个查询结果时,如何对这些合并后的结果进行排序?原创 2025-06-19 10:57:17 · 502 阅读 · 0 评论 -
Oracle的NVL函数
Oracle的NVL函数是一个常用的空值处理函数,主要用于在查询结果中将NULL值替换为指定的默认值。Oracle还提供了增强版。原创 2025-05-29 15:23:41 · 689 阅读 · 0 评论 -
Oracle exist
Oracle中的EXISTS是用于检查子查询结果是否为空的逻辑运算符原创 2025-05-29 09:47:35 · 1693 阅读 · 0 评论 -
Oracle 条件判断
在Oracle数据库中,条件判断主要通过IF语句和CASE表达式实现原创 2025-05-29 09:45:15 · 820 阅读 · 0 评论