通过trigger禁止用户删除或修改等DDL操作
有时,为了防止意外删除数据库中的表或者其他数据库对象,可以通过人为的增加一个trigger来实现。如下:create or replace trigger ddl_denybefore create or alter or drop or truncate on databasedeclare ...
Oracle 中 Over() 函数学习总结
Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。 开窗函数指定了分析函数工作的数据窗口大小,这个数...
SQL 中使用WMSYS.WM_CONCAT把列转为行来显示
为了增强应用的可扩展性,有时会把某一列的数据,单独存储到一个子表中,比如用户表(t_user)和角色表(t_role),为了保存他们之间的对应关系,需要设计一个中间表(t_userrole)用来保存用户与角色的对应关系。假...
Oracle 中文字符及中文乱码判断
Oracle里面如何识别存储字段里面是否存在中文?方法一: 使用length和lengthb,如果中文的话length是一个字符,但是lengthb是两个字节。但是这个方法不适合数据库字符集非gbk的情况。select * ...
Oracle 的 merge 更新和插入操作
使用merge比传统的先判断再选择插入或更新快很多。 1)主要功能 提供有条件地更新和插入数据到数据库表中 如果该行存在,执行一个UPDATE操作,如果是一个新行,执行INSERT操作 — 避免了分开更新...
Oracle 的 bulk collect用法
采用bulk collect可以将查询结果一次性地加载到collections中,而不是通过cursor一条一条地处理。可以在select into,fetch into,returning into语句使用bulk collect。注意:在使用bulk collect时,所有的into变...
Oracle 的 INSERT ALL和INSERT FIRST
描述性的东西就不来了,搞技术的,最喜欢实在的实例。通过下面的例子,大家很快就能明白insert all 与 insert first 的功能,比文字描述更通俗易懂。 一、INSERT ALL 不带条件用法SQL> ...
Oracle聚合函数/分析函数
oracle函数分两类:单行函数、多行函数。多行函数又分为聚合函数、组合函数,参数为数组,数据大小为记录数,这种数组不是普通高级语言的数组,是一种虚拟数组,当记录数大时,会将数据写入硬盘,内存中放的只是影像...
外连接与连接顺序
在Oracle 9i中,外连接决定了连接的顺序,比如TEST1.id=TEST2.id(+),那么表TEST1一定是驱动表(即从表TEST1去join表TEST2),不管采用nest loop join或者hash join。因为外连接中,表TEST1的所有记录都要返回,所...
Oracle 的 hash join连接方式
hash join是oracle里面一个非常强悍的功能,当做hash join时,oracle会选择一个表作为驱动表,先根据过滤条件排除不必要的数据,然后将结果集做成hash表,放入进程的hash area,接着扫描第二张表,将行的键值做hash...
Oracle循环语句
假如我们要循环读取1到10的数字,以下列出各种实现方式:一、Loop循环declare i number := 0;begin loop if i >= 10 then exit; ...
(转)ORACLE 中IN和EXISTS的区别
EXISTS的执行流程 select * from t1 where exists ( select null from t2 where y = x ) 可以理解为: for x in ( select * from t1 ) loop if ( exists ( s...
Multitable Insert简介
假如我们有表sales,结构如下: ProdidProdnameMon_AmtTue_AmtWed_AmtThu_AmtFri_AmtSat_Amt101102AIWAAKAI2000190025002100223021302900310030002800210...