`
zw7534313
  • 浏览: 826475 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
评论排行榜
最新评论
Rss 文章列表
  Oracle外键级联删除和级联更新 Oracle在外键的删除上有NO ACTION(类似RESTRICT)、CASCADE和SET NULL三种行为。 1.1 NO ACTIONNO ACTION指当删除主表中被引用列的数据时,如果子表的引用列中包含该值,则禁止该操作执行。 现在学生外键级联删除是NO ACTION,执行删除班级操作Oracle会提示违反完整性约束: ORA-02292 1.2 SET NULL SET NULL指当删除主表中被引用列的数据时,将子表中相应引用列的值设置为NULL值。SET NULL有个前提就是外键引用列必须可以设置为NULL。 把学生表(TB ...

Oracle Job

      声明一个job:   declare   jobno number;   begin         dbms_job.submit(jobno,                                    'procedure_test;',     //存储过程procedure_test名称后加分号                                     sysdate,                                     'sysdate+1/24');        //时间间隔1小时 end;     ...
一、数据库死锁的现象程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错。二、死锁的原理当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提交,另一条对于这一列数据做更? ...
create global temporary table  CLTBALANCE(  AMOUNT                 NUMBER(21,6),  DEDATE              DATE,  ECONTRACTENDDATE   DATE,  ECONTRACTSTARTDATE DATE)on commit preserve rows;     用Hint 提示减少操作时间     INSERT   /*+Append*/   INTO     tab1                 SELECT   *   FROM   tab2;     over ...
查找死循环:select * from v$session where sid in (select session_id from v$locked_object) 解决死循环:alter system kill session 'sid,serial' Immediate; --立即杀掉

PL/SQL批绑定 FORALL

批绑定:   PL/SQL语名块中的SQL语句被送往SQL引擎执行: FOR v_count IN  1..500 LOOP  INSERT INTO tab values(v_count);END LOOP;     运行这个语句块之后,就向tab中插入500行。但是每个INSERT语句都是单个执行的,这就需要在PL/SQL和SQL之间进行500次文本交换。 可以一次将整个PL/SQL表传给SQL引擎,从而只进行一次文本交换。这就是批绑定。批绑定使用FORALL语句完成: FORALL  v_count IN 1..500  INSERT INTO tab values(v_ ...
自定义Type:   create Type arr_Type  IS Table of varchar2(128);   使用:               v_arr  arr_type;        v_arr:=arr_type();  --初始化               v_arr.extend;         --增加一个空间        v_arr(v_arr.count):='abc';          v_arr.delete;              --消毁  
oracle数据库的游标和存储过程 spool abc.log                  --开始记录日志 create or replace procedure db.PROC_FIRST(FLAG OUT INTERGER,     T_DATE IN VARCHAR2) AS   varno varchar2(20);   varprice varchar2(20);   CURSOR mycur(vartype number) is   select emp_no,emp_zc from cus_emp_basic   where com_no = vartype;   ...
为了简化Oracle数据库中的大表管理,因而Oracle8推出了分区选项。分区主要是将表分离在N个不同的相关表空间上。将大表分割成较小的分区可以改善表的维护、备份、恢复、事务及查询性能。针对当前社保及电信行业的大量日常业务数据, 分区的优点: 1 、增强可用性:如果表的一个分区由于系统故障而不能使用,表的其余好的分区仍然可以使用; 2 、减少关闭时间:如果系统故障只影响表的一部分分区,那么只有这部分分区需要修复,故能比整个大表修复花的时间更少; 3 、维护轻松:如果需要重建表,独立管理每个分区比管理单个大表要轻松得多; 4 、均衡I/O:可以把表的不同分区分配到不同的磁盘来平衡I/O改 ...
1.Oracle分页查询:SELECT * FROM  (  SELECT A.*, ROWNUM RN  FROM        (SELECT * FROM tab) A         WHERE ROWNUM <= 40  )               WHERE RN >= 21; 这个分页比下面的执行时间少,效率高。   2.select * from        (select c.*,rownu ...
Oracle数学函数和SQL Server中的数学函数不太一样。   ①绝对值      S:select abs(-1) value      O:select abs(-1) value from dual ②取整(大)      S:select ceiling(-001) value      O:select ceil(-001)   value from dual ③取整(小)      S:select floor(-001) value         O:select floor(-001) value from dual ④取整(截取)      S:select ...
  oracle多列子查询是oracle数据库中的一种查询方式:   多列子查询: oracle子查询一般都是返回单列,实际上数据库对此并没有进行限制,子查询也可以返回多列.oracle多列子查询的例子:检索每种产品在其类型中价格最低的产品:步骤: 1.通过分组查询,统计每类产品的最低价格: select product_type_id,min(Price) from products group by product_type_id 结果为: PRODUCT_TYPE_ID MIN(PRICE)--------------- ----------              1   ...
1.去重复数据:select * from b a where id > (select min(id) from b b where a.name=b.name) 2.测试SQL语句执行时间的方法和步骤:SQL> set timing on; 步骤: 1. alter system flush shared_pool; --刷新一下shared_pool       2. set timing on ; --允许统计时间   3. select ... ; --执行sql语句 举例说明: SQL/Plus SQL> set timing on SQL> se ...
ORACLE 左连接:1.使用(+)表示:SELECT A.OID,       A.VALUE,       A.NE_TYPE_OID,       NVL(B.STATUS, '1') STATUS,       A.TYPE,       A.STARTTIME START_TIME  FROM ALARM_E A, ALARM_E_CLEAR_TIME B WHERE A.OID = B.ALARM_EVENT_OID(+);                       2.使用left join表示:SELECT A.OID,       A.VALUE,       A.NE ...
Oracle SQL 性能优化技巧   1.选用适合的ORACLE优化器 ORACLE的优化器共有3种 A、RULE (基于规则) b、COST (基于成本) c、CHOOSE (选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS 。 你当然也在SQL句级或是会话(session)级对其进行覆盖。 为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行analyze 命令,以增加数据库中的对象统计信息(obj ...

列转行 sql

如表ROW2COLUMN2有以下数据: 名字 课程 分数 1 张三 语文 80   2 张三 数学 86 3 张三 英语 754 李四 语文 785 李四 数学 856 李四 英语 78 想变成下面记录: 名字 语文 数学 英语 1 李四 78 85 782 张三 80 86 75 代替:      名字       课程     分数 A          A1        80  A    B1     86  B    A1       75  C          C1        78  C    A1        85 变成 : 名字    A1   B1   ...

Exists 和In

 
3
1.ORA-08002:序列s_seq.currval沿未在此进程中定义   2.insert into student(id,name) values(student_seq.nextval,'张伟'),(student_seq.nextval,'李四'); 插入多条语句   3.raw类型   4.timestamp类型  yyyy-mm-dd 如何在数据库里保存yyyy-mm-dd这样的形式   5.ORA-01658: 无法为表空间SHOP中的段创建INITIAL区   6.not exists   7.delete truncate的区别:   8.多表使用 ...

Oracle 优化

http://www.iteye.com/topic/508161
ORACLE数据库的PL/SQL语句执行的优化器   http://blog.sina.com.cn/s/blog_4c705ccb0100cf4n.html   ORACLE--性能优化 http://blog.sina.com.cn/s/blog_4c705ccb0100cfq3.html
DBA在SQL语句调优的过程中遇到的一个很常见的问题就是,如何优化那些在WHERE子句中使用了函数的语句。因为在以前,在WHERE子句中使用函数会使在这个表上创建的索引没法利用,从而难以提高这个语句的性能。 例子: 使用基于成本的优化器,索引为标准的B树索引,建立在SURNAME列上。 SQL>create index non_fbi on sale_contacts (surname); SQL>analyze index non_fbi compute statistics; SQL>:analyze table sale_contacts compute statisti ...
固定数组    declare      type type_array is varray(10) of varchar2(20);     --一维数组,字符串类型  var_array type_array:=type_array('ggs','jjh','wsb','csl','dd','bb');    begin      for i in 1..var_array.count loop                           --数组的长度用count       dbms_output.put_line(var_array(i));      end l ...
DBMS_JOB系统包是Oracle“任务队列”子系统的API编程接口。DBMS_JOB包对于任务队列提供了下面这些功能:提交并且执行一个任务、改变任务的执行参数以及删除或者临时挂起任务等。   设置初始化参数来进行的。下面就是该参数: JOB_QUEUE_PROCESSES = n  其中,n可以是0到36之间的任何一个数。     名称 类型 描述 DBMS_JOB.ISUBMIT 过程 提交一个新任务,用户指定一个任务号 DBMS_JOB.SUBMIT 过程 提交一个新任务,系统指定一个任务号 DBMS_JOB.REMOVE 过程 从队列中删除一个 ...
 数据库逻辑备份方法    ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份和完全备份。    表模式    备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式。    若备份到本地文件,使用如下命令:    exp icdmain/icd rows=y indexes=n compress=n buffer=65536  feedback=100000 volsize=0  file=exp_icdmain_csd_yyyymmdd.dmp  log=exp_icdmain_csd_yyyymmdd.log  tables=icdmain.commoninformat ...
select pinyin('张伟') from dual; select user_id,username from t_user order by pinyin(username)  按首字母排序 create or replacefunction pinyin(hz in varchar2) return varchar2 iszm varchar2(1);tmp integer;begin    select ascii(hz) into tmp from dual;    case    when tmp>=45217 and tmp<=45252 then zm: ...
求模:select  mod(7,2) from dual; 1.oracle日期时间格式: 年:     yy  两位年  显示值:07     yyyy四位年  显示值:2007 月:     mm  两位月  显示值:11     month/mon  显示值:11月   日:     dd  当月第几天  显示值:02     ddd  当年第几天  显示值:02     dy  当周第几天  显示值:星期五   小时:      hh  12小时间  显示值:01      hh24  24小时  显示值:13   分钟:      mi  显 ...

PL/SQL Developer

SQL 
报告窗口:        打开一个新的报表窗口后,输入一个查询语句,执行报表,布局将使用默认风格属性。为精制标准布局,切换到布局(版面)(Layout)标签页,如果定义字段属性后,需要刷新字段列表键。   显示(displayed):    最左侧的复选框列控制布局项是否被显示 描述(description):  改变列的标题 样式(style):            样式控制布局项的外观   中断(break):         如果想在每个中断后重复标题,使用break+Header选项\   布局选项(Layout options): 分页(Page break) : ...
1.实例模式查询(query by example mode)          执行完一个select 语句后,如果你想查找其中的一个特殊记录,可以点击结果集上方的实例查询. 在显示的表格中,输入条件。   2.关联查询(Linked Queryies)         当你想查看? ...
打开PL/SQl  Developer 在"SQL窗口"或者“命令窗口”都可以执行pl/sql程序块   写一个匿名的程序块: (1)declare w  varchar2(20);                //变量声明,类型在后 begin select *  into w from dual;  //没有into也执行不了 dbms_output.put_line(w); end; /     (2)declare vjob varchar(10);  //如果字符长度超过10会报错vnum number:=0;vdate date:=sys ...
1.安装oracle客户端出问题:ORA-12154:TNS:could not resolve the connect identifier specified???     http://download.oracle.com/otn/nt/oracle11g/win32_11gR1_client.zip  oracle客户端安装下载(487M)   配置:打开plsql,“工具”--》“首选项”(点第一个):               oracle主目录名:(改为客户端安装的目录)               oci库:(改为oci.dll具体路径)    
Global site tag (gtag.js) - Google Analytics