Note for SQL&PLSQL
anddyhua
这个作者很懒,什么都没留下…
展开
-
阿里SQL编写规范
看了下阿里的SQL编写规范,可以拿来当模板,其中有一个地方个人不怎么喜欢编码原则SQL代码的编码原则如下:代码功能完善。代码行清晰、整齐,代码行的整体层次分明、结构化强。代码编写充分考虑执行速度最优的原则。代码中需要添加必要的注释,以增强代码的可读性。规范要求并非强制性约束开发人员的代码编写行为。实际应用中,在不违反常规要求的前提下,允许存在可以理解的偏差。SQL代码中应用到的所有SQL关键字、保留字都需使用全大写或小写,例如select/SELECT、from/FROM、where/WH转载 2021-04-19 23:48:50 · 1169 阅读 · 0 评论 -
SQL尽量避免的情况
对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用..原创 2021-04-18 15:52:13 · 650 阅读 · 0 评论 -
剑破冰山之十一章 层次查询
层次查询的函数的两种方式:SYS_CONNECT_BY_PATHWMSYS.WM_CONCAT()语法:SELECT…START WITH…CONNECT BY PRIOR X1=X2练习数据,中国省份部分城市和区号(没有台湾省)insert into prov_cw_area (ID,GOV_CODE,LEVEL1_ID,AREA_CODE,DEP_CODE,SORT,LEVEL2_ID, NAME,CLASSID) values (366, 'KIZ', 6, '0908', null,原创 2021-05-03 23:34:07 · 386 阅读 · 0 评论 -
剑破冰山之第十六章 管道函数
管道函数是表函数的一种,语法类似select * from table() 所有的数据都加载到内存,然后输出,举例:CREATE OR REPLACE TYPE num_list IS TABLE OF NUMBER;CREATE OR REPLACE FUNCTION pipe_num(p_max NUMBER) RETURN num_list PIPELINED ISBEGIN FOR i IN 1..p_max LOOP PIPE ROW(i); END LOO原创 2021-05-03 22:46:31 · 94 阅读 · 0 评论 -
剑破冰山笔记之第七章 where in list的问题
where in list的问题一般有三种方法一、使用PL/SQL集合和TABLE函数TABLE函数解决问题常走nested loop+索引主要的hint有 first_rows 、index、 cardinality(有时候不起作用)接下来会讲不起作用的原因技巧使用rownum使用rownum>=0二、使用INSTR和SUBSTR三、使用正则表达式...原创 2021-05-02 22:44:20 · 84 阅读 · 0 评论 -
剑破冰山笔记之第六章 自动类型转换
DATE格式转换问题SQL> SELECT TO_DATE(SYSDATE,'yyyymm')From dual; SELECT TO_DATE(SYSDATE,'yyyymm')From dual ORA-01843: 无效的月份此时sysdate 自动转换为to_char类型 SQL> alter session set nls_date_format='yyyymm'; Session altered SQL> SELECT TO_DATE(SYSDATE,'原创 2021-05-02 22:40:55 · 79 阅读 · 0 评论 -
破剑冰山笔记之第五章 报表开发函数
1原创 2021-05-02 22:28:37 · 97 阅读 · 0 评论 -
剑破冰山笔记之第四章 NULL和CHAR
''和null''是与null是有区别的,但是case里是一样的select dump(null),dump('') from dual;select case when '' is null then null else not null end from dual;任何和null的操作都是nullselect null+10 from dual; NULL+10----------select null||'abc' from dual;select concat(null原创 2021-05-02 22:27:19 · 137 阅读 · 0 评论 -
剑破冰山笔记之第二章 常用工具和使用方法
求1…10的质素DECLAREk NUMBER:=0.0;flag BOOLEAN:=TRUE;BEGINFOR i IN 1..10 LOOP SELECT sqrt(i) INTO k FROM dual; FOR j IN 2..k LOOP IF mod(i,j)=0 THEN flag:=FALSE; EXIT; END IF; END LOOP; .原创 2021-05-02 22:17:50 · 114 阅读 · 0 评论 -
剑破冰山笔记之第三章 探索Merge方法
merge的使用业务上用t1表去更新t2表,匹配的更新,不匹配的插入 drop table t1; create table t1(name varchar2(20),money number); insert into t1 values('A',10); insert into t1 values('B',10); drop table t2; create table t2 (name varchar2(20),money number); insert into t2 value原创 2021-05-02 22:12:55 · 143 阅读 · 0 评论 -
PLSQL:做实验代码模板
很多时候需要自己临时写个PLSQL来验证原创 2014-10-12 00:26:22 · 1047 阅读 · 0 评论 -
PLSQL:用exit代替continue
因为11g才支持continue,在有些低的版本中可能需要改写原创 2014-10-12 09:28:33 · 4433 阅读 · 0 评论 -
SQL:SEARCH DEPTH FIRST和 SEARCH BREADTH FIRST
用SQL实现深度优先搜索和广度优先搜索语法举列子:WITH T AS (SELECT 'B' A , 'A' B , 2 N FROM DUAL UNION ALLSELECT 'C' A , 'A' B , 4 N FROM DUAL UNION ALLSELECT 'D' A , 'B' B , 3 N FROM DUAL UNION ALLSELECT 'E' A , 'B...原创 2014-10-20 15:13:42 · 1250 阅读 · 0 评论 -
SQL:某公司dba面试题记录
注:本文来自互联网,收集只为学习之用,权作笔记,请注重个人知识成果,回答是我个人的面试题一:table1(FId,Fclass,Fscore),用最高效最简单的 SQL 列出各班成绩最高的列表,显示班级,成绩两个字段。我的回答:select Fclass,max(Fscore) from table1 group by Fclass;面试题二:有一个表 table1...原创 2014-10-12 10:06:12 · 1113 阅读 · 0 评论 -
SQL:字符的转换
汉字截取,根据字符集的不同,汉字字节数不一样,字符集不一样需要转换select substrb('就业前景',1,3) from dual;select substrb(convert('张瓅杭州','US7ASCII','WE8PC850'),4,1) from dual;原创 2014-10-12 00:15:53 · 801 阅读 · 0 评论 -
SQL函数:replace
需求:就像下面的列子create table num_test( num_name number);insert into num_test values('11111');insert into num_test values('2222');insert into num_test values('33333');insert into num原创 2014-10-11 20:15:53 · 605 阅读 · 0 评论 -
SQL:列的拆分
表里面一个列的记录用逗号分隔,拆分成原创 2014-10-12 00:35:59 · 2418 阅读 · 1 评论 -
SQL:行列转换
简单的列子:建表:create table t_result(d date,result varchar2(4)); 插入数据:insert into t_result values (date '2014-01-01','胜');insert into t_result values (date '2014-01-01','胜');insert into t_re原创 2014-10-12 10:38:04 · 571 阅读 · 0 评论 -
SQL:取重复的行
SQL去掉重复的行有很多种方法:原创 2014-10-12 00:10:56 · 897 阅读 · 0 评论