关于sql的问题

[x]:是"+"还是"||"?

Access和SQL Server使用+号。

DB2、Oracle、PostgreSQL、SQLite和Open Office Base使用||。

详细请参阅具体的DBMS文档。

链接:https://www.cnblogs.com/Aiapple/p/5395090.html。

 

[x]Is “LIKE ?” More efficient than LIKE '%'||?||'%'  ?

预加载的问题。

链接:https://stackoverflow.com/questions/3142508/is-like-more-efficient-than-like。

 

[x]模糊查询中不区分大小写

lower(pro_number) like '%'||lower('?')||'%'   // LIKE UPPER('%' || ? || '%')

upper(pro_number) like '%'||upper('?')||'%'

链接:https://zhidao.baidu.com/question/438000336.html。

 

[x]NVL

NVL是Oracle PL/SQL中的一个函数。它的格式是NVL( string1, replace_with)。它的功能是如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。

 

[x]select 1;count(1);sum(1)的区别

select y :以y为字段名,每行值为y。

count(y):得到一个数,y的行数。

sum(y):得到一个书,y*y的行数。

链接:https://blog.csdn.net/u010104750/article/details/51141221/。

 

[x]查询字段不为空

select * from tbl where id is not null;

 

 

[x]DUAL

1. dual 确实是一张表.是一张只有一个字段,一行记录的表.

2.习惯上,我们称之为'伪表'.因为他不存储主题数据.

3. 他的存在,是为了操作上的方便.因为select 都是要有特定对象的.

链接:https://zhidao.baidu.com/question/170487574.html。

 

 

[x]LOOP循环语句

三种:

for;while;if。

链接:https://www.cnblogs.com/aipan/p/6618383.html。

 

[x]查询某一字段重复的数据

select * from 重复记录字段 in ( select 重复记录字段 form  数据表 group by 重复记录字段 having count(重复记录字段)>1)

链接:https://www.cnblogs.com/real9527/p/8242408.html。

 

[]SQL的for update

目的:锁表

链接:https://www.cnblogs.com/luotuoke/p/8695819.html。

 

 

[x]union 和union all的区别

链接:http://www.w3school.com.cn/sql/sql_union.asp。

 

[x]union all和 where 一起使用会出错

where的会判定给 后面的子句。

链接:https://blog.csdn.net/u010173095/article/details/78436979。

 

[x]建表

【建表】链接:https://www.cnblogs.com/qmfsun/p/3817344.html。

【添加描述】链接:https://zhidao.baidu.com/question/499073751.html。

 

[x]DataGrip的使用

 

 

 

[x]ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效

对表操作频繁导致锁表;

解决办法是以system登陆查询被锁的session然后杀掉。

链接:https://blog.csdn.net/jiangyu1013/article/details/70314739。

https://blog.csdn.net/qq_37151235/article/details/74612957。

 

[x]oracle REGEXP_SUBSTR函数

格式如下:

function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)

__srcstr     :需要进行正则处理的字符串

__pattern    :进行匹配的正则表达式

__position   :起始位置,从第几个字符开始正则表达式匹配(默认为1)

__occurrence :标识第几个匹配组,默认为1

__modifier   :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)

1、查询使用正则分割后的第一个值,也就是17

[sql]

SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,1,'i') AS STR FROM DUAL;  

结果:  17

SELECT FIX_DS_AMT_L

FROM (SELECT REGEXP_SUBSTR(X, '[^,]+', 1, ROWNUM) FIX_AMT_L, REGEXP_SUBSTR(Y, '[^,]+', 1, ROWNUM) FIX_DS_AMT_L

FROM (SELECT FIX_AMT X, FIX_DS_AMT Y FROM MKMTCRDTYP WHERE CARD_TYP = ?)

CONNECT BY ROWNUM <= 1 + LENGTH(REGEXP_REPLACE(X, '[^,]+')))

WHERE FIX_AMT_L = ?;

链接:https://www.cnblogs.com/yuany69/p/6093017.html。

 

[x]with

with  别名 as (select * from *)

select * from 别名;

[x]EXISTS

EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。

EXISTS 指定一个子查询,检测 行 的存在。

链接:https://www.cnblogs.com/netserver/archive/2008/12/25/1362615.html。

 

 


 

[x]PLSQL

[x]PLSQL查询数据库操作历史记录:

1、在PLSQL按键Ctrl+E

可以查询我们在PLSQL执行过的历史SQL,包括时间、用户、语句;

链接:https://blog.csdn.net/hwq293/article/details/79447763。

 

 

关键字:

Minus:减。

将第一个sql的结果集 减去 第二个sql中的结果集。

语法如下:

 [SQL Segment 1]

  MINUS

 [SQL Segment 2]

 

当你不再需要该表时, 用 drop;

当你仍要保留该表,但要删除所有记录时, 用 truncate;效率高

当你要删除部分记录时(always with a WHERE clause), 用 delete.

你可能感兴趣的:(sql)