sql
毛小兔
这个作者很懒,什么都没留下…
展开
-
SQL高效查询两个表不同的数据(走索引)
逻辑复杂(其实也不复杂),但是速度快:select * from B where (select count(1) from A where A.ID = B.ID) = 0;速度快的原因是,使用了索引。原创 2020-03-12 15:55:08 · 987 阅读 · 0 评论 -
Oracle数据库create or replace
create or replace 表示在创建视图时,如果已存在同名的视图,则重新创建,如果只用create 创建,则需将原有的视图删除后才能创建. create 如果创建已经存在,会报一个错误 -‘对象已存在’create or replace 则不会报错,如果创建已存在,它会先删除原来的,然后创建你要创建的...原创 2019-02-14 10:19:14 · 19547 阅读 · 1 评论 -
oracle存储过程is和begin之间的参数说明
箭头所指参数说明:1.变量或者常量的定义。(在begin和end之间,存储过程内部使用的各类变量或者常量,需要在is和begin之间进行定义。)工作中例子:...原创 2019-03-14 09:50:32 · 4893 阅读 · 0 评论 -
NVL2(表达式1,表达式2,表达式3)表达式1带或者,与
NVL2(表达式1,表达式2,表达式3)如果表达式1为空,返回值为表达式3的值。如果表达式1不为空,返回值为表达式2的值。表达式1可为:1.或者:(A || B)2.与:(A && B)...原创 2019-03-14 18:48:32 · 820 阅读 · 0 评论 -
Mysql的LIMIT语句带公式写法
比如:要实现sql语句为:SELECT * FROM tab LIMIT (3-1)*5,3*5;sql将会报错!可以尝试以下的写法:PREPARE s1 from 'select * from tab LIMIT ?,?';set @a:=(3-1)*5;set @b:=3*5;execute s1 using @a,@b;...原创 2019-04-22 15:44:48 · 1446 阅读 · 0 评论 -
Oracle-模糊查询支持大小写(优化)
select * from table t where upper(t.name) like upper('%DEMO%');第一个upper是将表数据t.name进行全转成大写,第二个upper是将输入的值进行全转成大写,这样达到两边一致化;相比之下,比下面的sql要优化很多(在很多场景下)select * from table t where t.name like upper...原创 2019-05-17 10:56:39 · 1545 阅读 · 1 评论 -
查看oracle用户具有的权限和角色
记录一下,备查:1.查看所有用户:select * from dba_users;select * from all_users;select * from user_users;2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):select * from dba_sys_privs;select * from user_sys_privs;3.查看角色(只能查看登...转载 2019-07-12 16:08:06 · 198 阅读 · 0 评论 -
【Oracle】for update 与 rowid
for update:当语句运行时,会在对应行(where子句)加上行级锁,无where子句等于全表上锁。若遇到客户端断网、测试人员忘记提交\回滚事务,则会发生锁表。rowid: 运行后并未给数据加上行级锁(通过物理地址去确定某一行数据),但可以编辑数据,提交事务的瞬间完成上锁、提交、解锁等动作,不易发生锁表。for update不如select a.*,a.rowid fro...原创 2019-08-07 11:14:46 · 909 阅读 · 0 评论 -
【SQL学习篇】order by length(ID),ID 排序
当使用order by排序出现以下情况,是因为该字段编码不是NUMBER,导致按字符的形式排序了这时,使用order by length(ID),ID即可原创 2019-09-12 16:01:39 · 1632 阅读 · 0 评论