比如在开发人员对employee表进行一个update语句,但更新完之后,才发现更新的语句有误,需要撤销刚才的update操作。如(update employee e set e.block=‘0300100011000000248‘ wheree.block=‘0300100011000000240‘; 更新了10条数据) 1、如果在很短的时间内,可以查询数据库中的versions,记录短时间内的employee表中的update、delete、insert的操作。(时间多长取决于数据库中的相关设置参数) <pre name="code" class="sql">...
dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。我们可以用它来做很多事情,如下: 1、查看当前用户,可以在 SQL Plus中执行下面语句 select user from dual;2、用来调用系统函数 select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss‘) from dual;--获得当前系统时间 select SYS_CONTEXT(‘USERENV‘,‘TERMINAL‘) from dual;--获得主机名 select SYS_CONTEXT(‘USERENV‘,‘langua...
oracle中spfile和pfile详解标签:本文系统来源:http://www.cnblogs.com/login2012/p/5510411.html
1、单引号 那么如果字段的内容中包含了单引号要怎么插入呢?例如:It‘s fine。方法同样有三方法一:使用转义字符 SQL > Select ‘test‘ || ‘‘‘‘ from dual; 注意:这里的‘‘‘‘四个单引号是什么意思呢?首先第一个和最后一个都是Oracle中的字符串连接符,这个没有异议。那么第二个‘和第三‘又表示什么意思呢?第二个‘是一个转义字符 第三个‘才是我们真正的内容方法二:同样是使用转义字符,只不过方式不同...
: 有学生成绩表student,现在要用decode函数实现以下几个功能:成绩>85,显示优秀;>70显示良好;>60及格;否则是不及格。 假设student的编号为id,成绩为score,那么:select id, decode(sign(score-85),1,‘优秀‘,0,‘优秀‘,-1, decode(sign(score-70),1,‘良好‘,0,‘良好‘,-1, decode(sign(score-60),1,‘及格‘,0,‘及格‘,-1,‘不及格‘))) from student;数据库ORACLE中函数decode的用法标签:本文系统来源:http://www.cnb...
创建用户 SQL> -- 例如创建一个用户名为xiaoming,密码为a123的用户 SQL> create user xiaomingidentified by a123; 用户已创建。 SQL> show user USER 为 "SYS" 2.给用户授予权限 SQL> -- 给用户xiaoming授予权限 SQL> grant connect,resource,dba to xiaoming; 授权成功。 SQL> -- 登录xiaoming用户 SQL> conn xiaoming/a123 已连接。 3.创建表空间 SQL> -- 创建表空间 SQL> create tablespace xiaoming_data logging...
解决办法:oracle的环境变量UNQNAME没设或设置不正确export ORACLE_UNQNAME=orcl(换上你自己的)export这个参数和em企业管理器有关。 linux下安装oracle中遇到的一些问题标签:本文系统来源:http://www.cnblogs.com/nucdy/p/5597569.html
TABLE "GG_USER" ("USERID" VARCHAR2(255 BYTE) NOT NULL,"ISPART" VARCHAR2(255 BYTE) DEFAULT NULL,"ACTUALPOSITIONID" NUMBER(11) DEFAULT NULL,"BEGINWORKTIME" TIMESTAMP(0) DEFAULT NULL,"BIRTHDAY" TIMESTAMP(0) DEFAULT NULL,"CARDNO" VARCHAR2(255 BYTE) DEFAULT NULL,"EMAIL" VARCHAR2(255 BYTE) DEFAULT NULL,"GENDERID" NUMBER(11) DEFAULT NULL,"HEALTHID" NUMBER(11) DEFAULT NULL,"HOME" VARCHAR2(255 BYTE) DEFAUL...
在Oracle中,用函数返回结果集有时候要用到,下面是demo:1 2 3 4 5 6 7create or replace type t_test as object ( id integer, create_time date, object_name varchar2(60) ); create or replace type t_test_table as table of t_test;1.用数组的方式1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20create or replace function f_test(n in number default null) return t_test_table as v_test t_test_table := t_test_ta...
由于oracle中是没有自动增长的的,需要自己去进行写触发器等方式去进行设置: 找了一下他人写的,有两种方法可以设置主键,一种是自增长主键,另一种就是生成唯一序列。 一、自增长主键 我创建一个用户的信息表 -- Create tablecreate table USERINFO( USERNO NUMBER not null, USERNAME NVARCHAR2(20), USERPWD NVARCHAR2(20))tablespace MYPRODUCT pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K ne...
set city_name=(select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id)where exists (select 1from tmp_cust_city bwhere b.customer_id=a.customer_id)实例: update bd_psndoc set bd_psndoc.indutydate=(select begindate from (select a.pk_psnbasdoc as pk_psnbasdoc, max(b.begindate) as begindate from temp_psnbasdoc a left join hi_psndoc_deptchg b on a.pk_psnbasdoc=b.pk_psn...
在Oracle中,不等号有三种:<>,!=,^= 例如:select * from test where name<>‘xn‘。返回的结果是name不为xn,且name不空的记录。但是这与我们想要得到的结果有出入,因为我们的目的是得到name为xn的全部记录,当然这也包括name为空的记录,所以这些写SQL语句是有问题的。为了解决这个问题,我们可以采用以下两种方案:select * from test where instr(concat(name,‘xx‘),‘xn‘) = 0 ;select * from test where nvl(name,‘x...
一、单个IF 1、if a=... then ......... end if;2、if a=... then ...... else .... end if;二、多个IFif a=.. then ...... elsif a=.. then .... end if; 这里中间是“ELSIF”,而不是ELSE IF 。这里需要特别注意 2、decode函数DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else)表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。 3、case whencase when...
ename,hiredate FROM emp ORDER BY hiredate DESC; DESC为降序,ASC为升序 如果要对多个列进行排序则 SELECT ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate; 先按depptno排序,如果deptno相等,则按hiredate 也可以对组合结果排序,如对某两行的乘积排序SELECT empno, ename, sal*Months_between(sysdate,hiredate) AS total FROM emp ORDER BY total; 2在项目进行过程中,遇到了一个生僻字,在组成json数据 时...
1、IN和EXISTS IN语句:SELECT * FROM hr.employees t1 WHERE t1.employee_id IN (SELECT t2.employee_idFROM hr.job_history t2 );EXISTS语句:SELECT * FROM hr.employees t1 WHERE EXISTS (SELECT 1FROM hr.job_history t2WHERE t2.employee_id = t1.employee_id ); 可以看到两者的结果是一样的,这意味着两个查询都能够满足我们业务的需求。但是问题来了,那个以查询更快呢? ...