oracle/mysql/PLSQL
javaduqing
duqingfeng.net
展开
-
oracle的rownum原理和使用
对于Oracle的rownum问题,很多资料都说不支持>,>=,=,between……and,只能用以上符号(<、& lt;=、!=),并非说用>,>=,=,between……and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理解好了这个rownum伪列的意义就不应该感到惊 奇,同样是伪列,rownum与rowid可有些不一样,下面以例子说明:转载 2016-07-27 21:12:18 · 370 阅读 · 0 评论 -
oracle 注意点汇总
错误写法SELECT sinfo.linkedSup, sinfo.ID, if ( sinfo.supplierNature='个人' and sinfo.linkedSup is not null ) then sinfo原创 2017-04-08 10:43:17 · 466 阅读 · 0 评论 -
oracle 触发器 详解
一、触发器 数据库触发器是一个与表相关联的、存储的PL/SQL程序。 每当一个特定的数据操作语句(insert、update、delete)在指定的表上发出时,oracle自动执行触发器中定义的程序。 例子:每当往员工表(emp)中插入一条数据,打印“成功插入新员工”create trigger saynewempafter insert on empdeclare原创 2016-09-23 20:52:38 · 464 阅读 · 0 评论 -
PL/SQL for loop
一、数值型循环--数值型For循环procedure loop_num_for( lowest in number, highest in number)isbegin FOR even_number in lowest .. highest --升序 loop --处理非平滑增长的索引 if mod(even_number,2)=0转载 2016-09-19 21:02:07 · 1190 阅读 · 0 评论 -
Mysql Event Scheduler
一、开启SET GLOBAL event_scheduler = ON;SET @@global.event_scheduler = ON;SET GLOBAL event_scheduler = 1;SET @@global.event_scheduler = 1;二、关闭SET GLOBAL event_scheduler = OFF;SET @@global.event_schedul原创 2016-09-10 18:16:08 · 418 阅读 · 0 评论 -
PL/SQL的逻辑值问题
通常我们认为的逻辑值,只有 true,false;然而PL/SQL中有三个,true,false,null。 所以在做在做判断时,要注意情况为null。 例如:declare v_number1 number; v_number2 number :=100;beginif v_number1>v_numer2 then ....else ....end if;end;--改进d原创 2016-09-03 15:37:07 · 505 阅读 · 0 评论 -
oracle存储过程和存储函数(1)
--第一个存储过程create or replace procedure sayhelloworldas begin dbms_output.put_line("hello world");end;--调用存储过程--1.execute exec--2.在存储过程中调用/*begin sayhelloworld();end;*/--带参数的存储过程create or r原创 2016-08-28 22:53:17 · 468 阅读 · 0 评论 -
PL/SQL exception(例外)
/*例外(exception):1.系统定义的例外2.自定义的例外系统例外1.No_data_found 没有找到数据2.Too_many_rows select ... into语句匹配了多个行3.Zero_Divide 被零除4.Value_error 算术或转换错误5.Timeout_resource 在等待资源时发生超时*/--no_data_foundset server原创 2016-08-28 22:12:50 · 571 阅读 · 0 评论 -
PL/SQL 光标的使用
--游标(光标)的使用--查询打印员工的姓名和薪水/*光标的属性%found%notfound%isopen 判读光标是否打开%rowcount 影响的行数*/set serveroutput on declare--定义光标cursor cemp is select ename,sal from emp;--为光标定义变量pename emp.ename%type;ps原创 2016-08-28 21:45:37 · 847 阅读 · 0 评论 -
PL/SQL 控制语句
第一种:--使用while循环打印数字1-10set serveroutput on declarepnum number : = 1;begin while pnum <=10 loop dbms_output.put_line(pnum); pnum := pnum +1; end loop;end;第二种:--使用loop循环打印数字1-10set serv原创 2016-08-28 21:01:58 · 449 阅读 · 0 评论 -
性能优化三 使用索引的注意事项
1.一个查询只会使用一个索引当where中存在多个单列,而且都有索引,则mysql会选择其中的一个索引进行使用。explain SELECT * from student where age > 1 and name = 'zhangsan';我们可以看到真正是用的索引是 name_index;原创 2017-03-20 22:33:22 · 466 阅读 · 0 评论 -
性能优化二 高性能的索引策略
二、高性能的索引策略1.独立的列我们通常会看到一些查询不当地使用索引,或者使得mysql无法使用已有的索引。如果查询中的列不是独立的,则mysql就不会使用索引。“独立的列”是指索引列不能是表达式的一部分,也不能是函数的参数。 例如:下面这个查询也无法使用actor_id列的索引select actor_id from sakila.actor where actor_id + 1 = 5;2.前原创 2017-03-19 15:56:44 · 392 阅读 · 0 评论 -
性能优化一 创建高性能的索引
一、索引基础1.1索引的类型在MYSQL中,索引是在存储引擎层而不是服务器层实现的。所以,并没有统一的索引标准:不同索引引擎的索引的工作方式并不一样,也不是所有的存储引擎都支持所有类型的索引即使多个存储引擎支持同一种类型的索引,其底层的实现也不同BTree索引(B-TREE、B+TREE) 回忆了B-TREE的特点:节点内各值互不相等按从小到大排列。下层节点内的取值总是落在上层节点值所划分原创 2017-03-19 14:18:50 · 430 阅读 · 0 评论 -
第七章 日期运算
/*1.加减日、月、年在oracle中,date类型可以直接加减天数,而加减月份要用add_months函数*/select hiredate hiredate - 5, hiredate + 5, add_months(hiredate,-5), add_months(hiredate,5*12)原创 2017-06-11 16:30:26 · 301 阅读 · 0 评论 -
mysql 注意点汇总
方式一:UPDATE A a, B bSET a.name = b.my_nameWHERE a.id = b.id方式二:UPDATE supplierInfo s, (SELECT a.*,b.* FROM hbkysuptest a LEFT JOIN purchaserthirdsupplier b ON a.supplierId原创 2017-06-02 19:11:38 · 342 阅读 · 0 评论 -
oracle 常用自定义函数
CREATE OR REPLACE FUNCTION FIND_IN_SET(piv_str1 varchar2, piv_str2 varchar2, p_sep varchar2 := ',')RETURN NUMBER IS l_idx number:=0; -- 用于计算piv_str2中分隔符的位置 str varchar2(500); -- 根据分隔符截原创 2017-04-28 08:34:57 · 1638 阅读 · 0 评论 -
oracle invalide number错误
今天遇到了一个奇怪的问题: sql如下 SELECT P .*, d1.dicName noticeTypeName FROM pro_purnotice P LEFT JOIN ( S原创 2016-08-08 20:35:42 · 1286 阅读 · 0 评论 -
oracle group by rollup用法详解
假如有一个薪资表(deptSal)如下: deptNo name sal A zhao 100 A li 200 A zhao 100 A du 1000 B zhao 100 B du 500有如下的查询语句:select deptNo,name,sum(sal) sumSal from deptSal group原创 2016-09-03 19:49:28 · 808 阅读 · 0 评论 -
oracle sequence
create sequence sequence_name [increment by n] --递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1[start with n] --开始的值,递增默认是minvalue 递减是maxvalue[{MAXVALUE n | NOMAXVALUE}] //最大值[{MINVALUE n | NOMINVALUE}] //最小值原创 2016-09-19 20:22:46 · 537 阅读 · 0 评论 -
oracle update set select from 关联更新
SQL>select * from wwn2;TOWN ID-------------------- ----------222 222111 111ww'jj 111llll转载 2016-09-19 20:48:35 · 18457 阅读 · 0 评论 -
oracle dual表
dual是一个虚拟表,用来构成select的语法规则,oracle保证dual表中永远只有一条记录。 我们可以用它来做很多事情,如下:1、查看当前用户select user from dual;2、用来调用系统函数select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--获得当前系统时间select SYS_CONTEXT('USERE转载 2016-09-20 20:59:02 · 348 阅读 · 0 评论 -
oracle jobs 学习
一、准备学习 开始dbms_job学习前,先认识一个参数job_queue_processesa、job_queue_processes参数决定了job作业能够使用的总进程数。 b、当该参数为0值,任何job都不会被执行,建议合理设置该值且至少大于1。 c、对于job运行时间也应该尽量合理的设置间隔以及启动时间。 d、如果同一时间内运行的Job数很多,过小的参数值导致job不得不进行等待。而转载 2016-09-08 20:29:02 · 433 阅读 · 0 评论 -
oracle TOP-N 与分页查询
一、Oracle 12C之前的TOP-N与分页查询 在Oracle 12C之前的查询中,如果要返回查询结果中前N条记录,或对查询结果进行分页显示,需要使用伪列rownum,对查询结果集进行排序。 例如:查询工资排序在6-10名的员工号、员工名、工资及工资排序号select * from(select rownum num,employee_id,first_name,last_原创 2016-09-08 21:10:20 · 1162 阅读 · 0 评论 -
oracle wm_concat
select wm_concat(id) as ids from jj_gc_pro_purbiddetailwhere listid in (...)原创 2016-09-08 22:02:26 · 420 阅读 · 0 评论 -
oracle分析函数详解
一、Oracle分析函数 分析函数是什么? 分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值。分析函数和聚合函数的不同之处是什么? 普通的聚合函数用group by分组,每个分组返回一个统计值,而分析函数采用partition by分组,并且每组每行都可以返回一个统计值。分析函数的形式?转载 2016-09-28 22:08:08 · 600 阅读 · 0 评论 -
Oracle 使用MERGE INTO 语句更新数据
Merge into 详细介绍 MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。 通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询, 连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。 这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。-- 语法MERGE [INTO [schema .转载 2016-11-15 11:28:14 · 757 阅读 · 0 评论 -
Mysql数字字符串按照数字排序
原文地址:http://www.cnblogs.com/yhyjy/archive/2012/07/25/2607818.htmlMySQL字符串相信大家都不陌生,在MySQL字符串排序时经常会遇到一些问题,比如下面的这 今天解决了一个关于MySQL字符串排序的很奇怪的问题,在数据里面定义的是varchar类型,实际存放的是Int类型的数据,按一下查询语句进行排序: 将字段*1或者+0可以将My转载 2017-02-21 15:27:26 · 2950 阅读 · 0 评论 -
Msql 函数find_in_set()用法
原文地址:http://www.cnblogs.com/gpfeisoft/p/5535450.html有了FIND_IN_SET这个函数。我们可以设计一个如:一只手机即是智能机,又是Andriod系统的。比如:有个产品表里有一个type字段,他存储的是产品(手机)类型,有 1、智能机,2、Andriod系统,3、小米系统,4、1000元以下现在有条手机的记录即是1000元以下的,又是智能机,还是A转载 2017-03-03 08:58:43 · 501 阅读 · 0 评论 -
oracle null 和空字符串
null和’’(空字符串)是一个意思在使用AVG,MAX,SUM,COUNT等函数时,为NULL的纪录会被忽略。排序时,NULL作为无穷大处理。原创 2017-04-08 10:54:07 · 973 阅读 · 0 评论 -
第六章 使用数字
/*1.生成累计和使用四中方法- 分析函数- rows开窗- range开窗- 标量方式*/select empno, sal, sum(sal) over(ORDER BY empno), sum(sal) over(ORDER BY empno rows BETWEEN unbounded preceding and原创 2017-06-11 16:01:18 · 311 阅读 · 0 评论