30
2016
11

SQL exists与in

假设如下应用:
两张表——用户表TDefUser(userid,address,phone)和消费表 TAccConsume(userid,time,amount),需要查消费超过5000的用户记录。
用exists:
select * from TDefUser where exists (select 1 from TAccConsume where TDefUser.userid=TAccConsume.userid and TAccConsume.amoun

30
2016
11

oracle - SQL优化规则

1.CBO模式下,表从右到左查询,右边第一个为基础表,选择行数的少作为基础表,三个及三个以上的表,需要选择交叉表(连接另外两个表的表)作为基础表,

2.数据量大的时候,使用exists 而非 in

3.where,自下而上的解析where子句,过滤数据记录的条件写在where字句的尾部,以便在过滤了数据之后在进行表连接处理(即 a.name='张三'的写后面,再让a表中字段name为'张三'的数据去跟b表关联)
select

30
2016
11

oracle - 批处理(sql语句块格式)

declare
   msg    varchar2(32);
   p_name varchar2(32);
   outresult varchar2(64);
 begin
   p_name := 'xxxx';
   select loginname into MSG from

30
2016
11

oracle - jobs(定时器)

--创建调度任务
declare
  jobno number;
begin
  dbms_job.submit(jobno, --定时器ID,系统自动获得
                  what =>'p_update_T_BS;'

30
2016
11

oracle - 超有用的小脚本

1、由表名得到对应的实体类--APPLICANT为表名
select 'private ' || decode(a.DATA_TYPE,
              'VARCHAR2',
          

30
2016
11

oracle - 关于日期的函数

当用到函数时,日期转换里面的格式化参数是不区分大小的,例如,Select to_char(t.vdate,'dd'),t.vdate From test_student t;

'yyyy-mm-dd hh24:mi:ss' 和'YYYY-MM-DD HH24:MI:SS'、'yyyy-MM-dd hh24:mi:ss'、'dd'、'DD'等都没区别

1.日期到字符:

30
2016
11

TRUNCATE,DORP,DELETE的异同

相同点: truncate和不带where子句的delete, 以及drop都会删除表内的数据
不同点:
1. truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的

30
2016
11

Oracle导出DMP文件的两种方法

方法一:利用PL/SQL Developer工具导出:
菜单栏---->Tools---->Export Tables,设置相关参数即可;
可以设置导出的内容,如果不是全表导出,可以设置导出的条件;

方法二:利用CMD命令导出导入:
数据导出:
 1 将数据库XXX完全导出,用户名system 密码aaa, 实例名XXX  导出到D:\DATA.dmp中
   exp 作者:Wendy | 分类:资源备份 | 浏览:801 | 评论:0

19
2016
10

测试文档阅读对象

软件开发工程师
软件测试工程师
项目经理
测试经理
技术经理
平台环境组
项目相关其他人员

19
2016
10

插入CLOB字段的方法

DECLARE
 REALLYBIGTEXTSTRING CLOB := '待插入的海量字符串';
BEGIN

   INSERT INTO test_table VALUES('test', REALLYBIGTEXTSTRING, '0');
end ;
/

commit;