自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (8)
  • 收藏
  • 关注

原创 Oracle SQL 优化精萃

-- Start-- 更多参见:Oracle  精萃-- 声明:转载请注明出处-- Last edited on 2015-06-29-- Created by ShangBo on 2015-06-29-- End

2015-06-29 13:01:56 3335

原创 Oracle 短路评估

-- StartOracle 按照从左到右的顺序评估条件表达式,一旦确定结果就停止后面的评估,所以我们应该尽量将轻量级的条件放在最左边。IF (x > 10) OR function(parameter) THEN-- 更多参见:Oracle SQL 优化精萃-- 声明:转载请注明出处-- Last edited on 2015-06

2015-06-30 14:58:13 1238

原创 Oracle 字符串处理

-- Start如果你需要处理复杂字符串,尽量不要自己编写函数,Oracle 提供了大量的字符串函数供我们使用。点击此处察看 Oracle 支持哪些函数。如果还是不能满足你的要求,我们还可以使用正则表达式。可以说正则表达式几乎没有处理不了的字符串问题。如果你还不知道什么是正则表达式,点击此处(正则表达式精萃),如果你不知道如何在 Oracle 中使用正则表达式, 点击此处察看如

2015-06-30 14:43:01 725

原创 Oracle 数据类型使用注意事项

-- StartOracle 支持 NUMBER,BINARY_FLOAT, BINARY_DOUBLE 等数值数据类型,NUMBER 更精确,BINARY_FLOAT 或 BINARY_DOUBLE 更高效,所以如果有可能,尽量优先使用 BINARY_FLOAT 或 BINARY_DOUBLE此外,PL/SQL 还支持好多它们的子类型,有些子类型是由约束的,如不允许 NULL,尽量不

2015-06-30 14:26:24 1006

原创 Oracle 尽量少用循环语句

-- Start下面是一个使用循环语句删除表记录的例子。DECLARE TYPE NumList IS TABLE OF NUMBER; emps NumList := NumList(10, 30, 70);BEGIN FOR i IN emps.FIRST..emps.LAST LOOP DELETE FROM employees WHERE employee

2015-06-30 13:49:54 1170

原创 Oracle 指定子程序 OUT 或 IN OUT 参数为引用传递

-- Start通常,子程序的 OUT 或 IN OUT 参数为值传递,为了防止程序可能发生的异常,Oracle 将它保存到临时变量中,当程序正常退出时,Oracle 把临时变量中值赋给实际参数,异常退出时,保持实际参数不变。当OUT 或 IN OUT 参数返回大批量数据时,由于使用了临时变量导致占用大量内存,这时我们可以在参数的后面加上 NOCOPY 来提示Oracle使用引用传递.

2015-06-30 11:06:27 2018

原创 Oracle 避免在查询中使用函数

-- Start一个查询可能要搜索上百万行数据,在查询中使用函数就可能被调用上百万次,这会严重影响性能,下面是一个简单的例子。-- 创建表CREATE TABLE Department ( Department_Id NUMBER(9,0), Department_Name VARCHAR2(40));CREATE TABLE Employee( Em

2015-06-29 16:32:01 1786

原创 Oracle 动态 SQL

-- Start如果你还不知道什么是动态 SQL,请参考PL/SQL 动态 SQL如果有可能,尽量不要使用动态 SQL,动态 SQL需要运行时编译,影响性能。如果一定要使用动态 SQL,Oracle 推荐我们优先使用 EXECUTE IMMEDIATE,它要比 DBMS_SQL 性能更好。-- 更多参见:Oracle SQL 优化精萃-- 声明:转载请注

2015-06-29 14:28:40 714

原创 Oracle 子程序内联

-- Start如果子程序 A 调用 B,内联可以把 B 的代码合并到 A 中,从而减少子程序调用,提高性能,下面是一个简单的例子。-- 子程序 APROCEDURE A ISBEGIN -- 指定下面的子程序 B 内联 PRAGMA INLINE (B, 'YES') B(1); -- 注意此处的子程序不会内联 B(2);END A; -- 子程序 B

2015-06-29 14:15:08 1099

原创 Oracle 行转列

-- Start在网上看到这样一个问题.班级 科目 分数1 语文 88001 数学 84201 英语 78122 语文 87152 数学 85112 英语 8512要求转换成下面这样的结果.班级 语文 数学 英语1 8800 8420 78122 8715 8511 8512这是一个非常经典的 4

2015-06-23 11:03:32 2531 1

原创 Oracle 如何写出高效的 SQL

-- Start要想写出高效的SQL 语句需要掌握一些基本原则,如果你违反了这些原则,一般情况下SQL 的性能将会很差。1. 减少数据库访问次数连接数据库是非常耗时的,虽然应用程序会采用连接池技术,但与数据库交互依然很耗时,这就要求我们尽量用一条语句干完所有的事,尤其要避免把SQL 语句写在循环中,如果你遇到这样的人,应该毫不犹豫给他两个耳光。2. 避免在有索引的字段上使用

2015-06-23 10:51:15 2058

原创 Oracle 分页查询

-- Start提起分页查询,除了那些还不知道什么是分页的人,大多数人的都会想到一个词,那就是LIMIT,不过很可惜,Oracle 不支持这个关键字,那么Oracle 的分页查询到底该怎么写呢?只要你学会了分析函数,分页查询是非常简单的。即使你不会分析函数,按照下面的SQL 照猫画虎也可以,如下:SELECT * FROM( SELECT B.*, ROW_NUMBER() OVE

2015-06-19 17:43:34 1600

原创 Oracle 临时集合

-- StartSELECT * FROM ;看到上面的语句了吗?这是我们在熟悉不过的一条语句,我们中的大多人学习SQL 正是从这条语句开始的。所以大多数人认为FROM 语句后只能接一个表或视图(或者压根就没多想),有这种想法的人我非常能理解,因为我曾经也是这其中的一员。其实FROM 后面可以接任何集合(表)。说到这,关于集合和表,我特别想多少几句。SQL 的理论基础是数学中的集合理论,所

2015-06-19 17:35:32 1204

原创 Oracle WITH语句的使用

-- Start说起 WITH 语句,除了那些第一次听说 WITH 语句的人,大部分人都觉得它是用来做递归查询的。那只是它的一个用途而已,其实,它是用来定义临时集合的。下面是一个简单的例子。CREATE TABLE EMPLOYEE (NAME VARCHAR2(20) NOT NULL,---姓名GENDER NUMBER(9,0),---性别(1、男2、女)BIR

2015-06-19 17:21:08 4394 1

原创 Oracle 数据类型转换

-- StartOracle 为每种数据类型都提供了相应的函数,一般情况下它们之间的相互转换是非常简单的,Oracle 提供的函数有:CAST 将一种类型转成另一种类型TO_DATE 将字符串转成 DATETO_TIMESTAMP 将字符串转成 TIMESTAMPTO_TIMESTAMP_TZ

2015-06-19 16:23:11 7652 1

原创 Oracle 尽量避免在 SQL语句中使用 LIKE

-- Start前面,我们介绍了尽量避免在SQL语句的WHERE子句中使用函数,因为这样做会使该字段上的索引失效,影响SQL 语句的性能。基于同样的道理,我们也应该避免使用LIKE。考虑下面的情况:CREATE TABLE PEOPLE(NAME VARCHAR(20) NOT NULL,---姓名MYNUMBER VARCHAR(18)---身份证号码);现在要求你把

2015-06-19 14:21:35 2518

原创 Oracle 尽量避免在 SQL语句的WHERE子句中使用函数

-- Start在 WHERE 子句中应该尽量避免在列上使用函数,因为这样做会使该列上的索引失效,影响SQL 语句的性能。即使该列上没有索引,也应该避免在列上使用函数。考虑下面的情况:CREATE TABLE EMPLOYEE(NAME VARCHAR2(20) NOT NULL,---姓名REGISTERDATE TIMESTAMP---注册时间);现在要

2015-06-19 14:17:15 6940

原创 Oracle IN 与 DISTINCT

-- Start在开始本文之前,我们先看条SQL 语句,如下:SELECT FROM WHERE IN(SELECT DISTINCT FROM );怎么样?看上去是不是很熟悉,可能你曾经写过或者看到别人写过这样的语句,或者压根就没注意。上述语句想表达的意思是:去掉结果集中的重复值,然而却画蛇添足了。写出这样语句的人没有很好的领会 IN 的意图。其实IN只关心集合中有

2015-06-19 13:33:26 1562

原创 Oracle 采集样本数据

-- Start我们经常会遇到这样的情况,想看看某个表中的若干条数据,如10 条、20 条等。我们可以这么写:SELECT * FROM WHERE ROWNUM 不知道你注意到没有,以上这条语句无论你执行多少遍,结果集是不变的。那么我想每次随机的查询10 条记录看看,该怎么处理呢?可以使用下面的SQL:SELECT * FROM (SELECT * FROM ORD

2015-06-19 13:28:46 1704

原创 Oracle 在 ORDER BY 子句中加入主键或唯一键

-- StartORDER BY 子句非常简单,正因为简单,很多人不太在意,随意使用ORDER BY 子句很可能出现逻辑错误,考虑如下情况:CREATE TABLE STUDENT(STUDENT_ID NUMBER(9,0),---学号NAME VARCHAR(20) NOT NULL,---姓名BIRTHDAY DATE---生日);ALTER T

2015-06-19 12:40:21 2102

原创 Oracle 多字段查询

-- Start假设现在有如下表:CREATE TABLE EMPLOYEE(NAME VARCHAR2(20) NOT NULL,---姓名BIRTHDAY DATE,---生日DEGREE VARCHAR2(20));现在,要求你把生日是1980-8-8,学历是硕士的人找出来,很简单,我们可以这么写:SELECT * FROM EMPLOYEE W

2015-06-19 12:28:42 1987

原创 Oracle 相关子查询

-- Start我们先来看两个表的定义:--用户CREATE TABLE EMPLOYEE(USERID NUMBER(9,0) NOT NULL,---用户IDCOMPANYID NUMBER(9,0),---公司IDTELNO VARCHAR2(12)---用户电话);ALTER TABLE "EMPLOYEE" ADD CONSTRA

2015-06-19 12:13:08 6766 1

原创 Oracle 中删除数据

-- Start大家对如何删除数据都不陌生,我们习惯性的这么写:DELETE FROM WHERE ;其实这么写性能并不好,尤其是删除大量数据的时候,要想获得更好的性能,可以采用如下方式:DELETE FROM(SELECT * FROM WHERE );那如果要把一个表的所有数据都删除了,该怎么办?有人可能会说,这简单啊,把WHERE子句去掉不就可以了。回答

2015-06-18 17:22:23 1286 1

原创 Oracle UPDATE 语句

-- Start我估计,只要是知道SQL 语句的人都会用UPDATE 语句,可是大部分人不知道UPDATE 语句有两种写法,首先,考虑下面的情况:CREATE TABLE STUDENT(ID INT,---学号NAME VARCHAR(20) NOT NULL,---姓名BIRTHDAY DATE---生日);INSERT INTO STUDENT (ID,NAME,BIR

2015-06-18 17:10:31 26799 3

原创 Oracle INSERT 语句

-- Start--更多参见:Oracle SQL 精萃-- 声明:转载请注明出处-- Last edited on 2015-06-17-- Created by ShangBo on 2015-06-17-- End

2015-06-17 21:46:16 71354

原创 Oracle 在字符串中输入单引号或特殊字符

-- Start字符串是用单引号括起来的,如果想在字符串中输入单引号该怎么办呢?有两种方法。方法一:是用两个单引号代表一个单引号SELECT 'I''m Shangbo' FROM DUAL;方法二:使用 Oracle 特殊语法SELECT q'/I'm Shangbo/' FROM DUAL;--更多参见:Oracle SQL 精萃-- 声

2015-06-17 21:39:25 19013 1

原创 Oracle 连接字符串

-- Start如何将两个或多个字符串连接起来呢?Oracle 提供了两种方法,如下所示:方法1(利用运算符):SELECT 'A' || 'B' FROM DUAL;方法2(利用函数):SELECT CONCAT('A', 'B') FROM DUAL;一般来说,当要连接多个字符串的时候,使用运算符要简单一点。--更多参见:Oracle SQL

2015-06-17 21:32:10 3189

原创 Oracle 递归查询

Oracle 递归查询递归查询的一个典型的例子是对树状结构的表进行查询,考虑如下的情况:论坛首页--数据库开发----DB2------DB2 文章1--------DB2 文章1 的评论1--------DB2 文章1 的评论2------DB2 文章2----Oracle--Java 技术以上是一个论坛的典型例子,下面我们新建

2015-06-16 22:08:11 2729

原创 Oracle 格式化日期

-- Start所谓格式化日期指的是将日期转为字符串,或将字符串转为日期,下面几个函数可以用来格式化日期。TO_CHAR(datetime, 'format')TO_DATE(character, 'format')TO_TIMESTAMP(character, 'format')TO_TIMESTAMP_TZ(character, 'format')我们先来看看通过下面的

2015-06-15 13:24:37 82571 1

原创 Oracle 格式化数字

-- Start所谓格式化数字指的是将数字转为字符串,或将字符串转为数字,下面几个函数可以用来格式化数字。TO_CHAR(number, 'format')TO_NUMBER('character', 'format')TO_BINARY_FLOAT('character', 'format')TO_BINARY_DOUBLE('character', 'format')我们

2015-06-12 16:31:42 25823

原创 基金

-- Start什么是基金基金是一种投资工具,把众多投资人的钱集中起来,由银行托管,由基金管理公司管理和运营,投资股票或债券等实现收益。开放式和封闭式基金开放式基金可以随时认购或赎回,基金的总份额会随着认购或赎回而变化。封闭式基金不可以随时认购或赎回,到期才能赎回,但你可以转让给其他投资人,基金的总份额保持不变。股票型,债券型和混合型基金

2015-06-11 23:21:52 1460

Korn Shell 精萃

我是一名Java 程序员,在过去的几年中,我偶尔要用ksh 来完成一些工作,由于不经常使用ksh,再加上年岁以高记忆力差,每次写ksh 的时候都需要到处查找样例代码,在经历了无数次这样的事情后,终于痛下决心,将ksh 中最基本的操作写成本书,以便日后查找,如果你也有类似的经历,那么本书不可错过。

2015-12-20

DB2 SQL 精粹

全面介绍了 DB2 SQL 的使用

2010-05-30

javaMail的使用

用java发mail的例子

2008-03-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除