oracle中比较两表表结构差异和数据差异的方法 原作者:li2008xue2008ling  出处:http://blog.csdn.net       在工作中需要完成这么一个需求:比较两个表的表结构是否形相同,并找出差异.比较两个表中的数据是否相同,并找出差异数据? 分析:由于表结构中字段比较多,手工比较很浪费时间,而且不能保证不出错误.对于表中的数据那就能多了,更不能靠这种方式比较. 为了思考问题简单和方便测试,首先先建立两个测试表,并插入一些测试数据吧,sql如下: create ta…
在工作中需要完成这么一个需求:比较两个表的表结构是否形相同,并找出差异.比较两个表中的数据是否相同,并找出差异数据?    分析:由于表结构中字段比较多,手工比较很浪费时间,而且不能保证不出错误.对于表中的数据那就能多了,更不能靠这种方式比较. 为了思考问题简单和方便测试,首先先建立两个测试表,并插入一些测试数据吧,sql如下: create table t_A ( id   VARCHAR2(36) not null, name VARCHAR2(100), age  NUMBER, sex …
一.天数: 在Oracle中,两个日期直接相减,便可以得到天数: select to_date('08/06/2015','mm/dd/yyyy')-to_date('07/01/2015','mm/dd/yyyy') from dual; 二.月数: 计算月数,需要用到months_between函数: select months_between(to_date('01/31/2015','mm/dd/yyyy'),to_date('12/31/2014','mm/dd/yyyy')) "MO…
oracle如何计算两个日期的相差天数.月数.年数.小时数.分钟数.秒数 1.相差天数(两个日期相减) --Oracle中两个日期相差天数-- select TO_NUMBER(TO_DATE('2018-6-5','yyyy-mm-dd hh24:mi:ss')- TO_DATE('2018-5-31','yyyy-mm-dd hh24:mi:ss')) AS 相差天数 from dual; 2.相差小时数.分钟数.秒数 --Oracle中两个日期相差小时数-- ) AS 相差小时数 from…
恢复oracle中误删除drop掉的表   查看回收站中表 --需要在其所在用户下查询 回收站对象 select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recyclebin; 恢复表 SQL>flashback table test_drop to before drop;或SQL>flashback table "BIN$b+XkkO1RS5K10uKo9Bfmu…
1.C#中: 上取整——Math.Ceiling(Double),即返回大于或等于指定双精度浮点数的最大整数(也可称为取天板值): eg:  Math.Ceiling(1.01)=2;      Math.Ceiling(1.37)=2; 下取整——Math.Floor(Double),即返回小于或等于指定双精度浮点数的最大整数(也可称为取地板值): eg:  Math.Floor(1.99) =1;       Math.Floor(1.87) =1; 2.Oracle中: 上取整——ceil…
平时工作中可能会遇到当试图对库表中的某一列或几列创建唯一索引时,系统提示 ORA-01452 :不能创建唯一索引,发现重复记录. 下面总结一下几种查找和删除重复记录的方法(以表CZ为例): 表CZ的结构如下: SQL> desc cz Name Null? Type ------------------------------------------------------------------- C1 ) C10 ) C20 ) 删除重复记录的方法原理: (1).在Oracle中,每一条记录…
package com.swift; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io…
在最近的项目开发中,有个业务需求是界面显示的数字需要保留两位小数,目前我想到的解决方法有两种: (1)在写SQL的时候,直接保留两位小数 (2)在java代码里面将查询出来的数进行格式化处理,保留两位小数 先说第一种方案:在SQL中的处理 我使用的oracle数据库,所以有3个函数可以选择,分别是: (1)ROUND(A/B,2) ROUND()函数是会将计算结果进行四舍五入的,如果所需要的值需要进行四舍五入,就可以选择这个函数,可以有一个参数,也可以有两个参数:如果有两个param,第一个是你…
--方法1 select floor((sysdate - to_date('2006-09-01 08:00:00', 'yyyy-mm-dd hh24:mi:ss'))) as sDays from dual; --ceil(n) 取大于等于数值n的最小整数; --floor(n)取小于等于数值n的最大整数; select ceil(9.6) from dual; --->10 select floor(9.6) from dual; --->9 --方法2 select ROUND(TO…
LAG()和LEAD()统计函数能够在一次查询中取出同一字段的前N行的数据和后N行的值.这样的操作能够使用对同样表的表连接来实现,只是使用LAG和 LEAD有更高的效率.下面整理的LAG()和LEAD()样例: LAG(EXPRESSION,<OFFSET>,<DEFAULT>) SQL> select year,region,profit ,lag (profit,1) over (order by year)  as 51xit_exp from test; YEAR R…
问题描述: 一个表中原本应该存放date类型的数据,但是不知道之前哪位大仙把两个字段的类型建成了NUMBER类型的了,这样在后台看时间肯定不方便.现在需要改成date类型,但是现在库中是有数据的,不能直接从NUMBER改为DATE.所以需要建立先创建两个DATE类型的临时字段,然后把对应字段的数据转换为Date类型的数据之后存到新字段上面,最后删除老字段,将新字段改名为老字段. 一.新建两个临时字段 ALTER TABLE CS_USER ADD (CREATEDATE1 DATE,OPERAT…
有时候我们会遇到这样的一种情况:有一些不同的专业,每个专业中有一些不同的学号,专业+学号能对应到个人.这时,应该如何在数据库中定义列,来保证专业+学号对应的学生的唯一性呢? 把学号定义成唯一(UNIQUE)显然是行不通的,因为A专业和B专业都存在1000这样一个学号. 方法1:联合主键 PRIMARY KEY(major,id); 不推荐.因为联合主键会给表的维护带来不便.另外,可能已经设定好了主键. 方法2:建立联合唯一约束(联合唯一索引)(推荐) 联合唯一约束:(创建唯一性约束时会自动创建唯…
这个题让我更加明白了类创建对象的实质 代码中用到:1.对象作形参;2.对象作返回值 以下用代码具体分析: class Point1{ public double x; public double y; Point1(){} public Point1(double x,double y){ this.x=x; this.y=y; } public void show(){ System.out.println("x="+x+","+"y="+y)…
1.select uat.table_name from user_all_tables uat 该SQL可以获得所有用户表的名称 2.select object_name, created,last_ddl_time from user_objects 该SQL可以获得所有用户对象(包括表)的创建和最后修改时间 综合以上SQL,总结了如下语句: select uat.table_name as 表名,(select last_ddl_time from user_objects where o…
源地址:http://zhidao.baidu.com/link?url=ZgCztNzCScRI5kAqGqug1LJvf7IX311EQs6fJ0-W1kOtWaaR7MrtLoV_228Ed8Fhbk6EZQeOSfZzCDQNcBUvtq select a, count(1) from tab group by a就可以找出a有几条记录 如果要找出多余一条的重复记录select a, count(1) from tab group by a having count(1) >1…
--创建测试表 )); ,'); ,'); ,'); ,'); ,'); ,'); commit; select * from test; --查询相同记录 ); select id,name from test a where rowid > (select min(rowid) from test b where a.id = b.id and a.name = b.name); select id,name from test a where rowid <> (select ma…
表A中为文本(有绿色三角符号),表B为数字(没有三角符号),而自动对比时会检查数据类型,怎么办? 执行对比: 得到结果: 这时候要解决类型问题(即绿色三角形标志) 点击灰色区域全选 哪个黄色感叹号可以选择,“转为数字”就可以了(主要提要全表选中,最好把表头先隐藏)…
1.ROWNUM的使用——TOP-N分析 使用SELECT语句返回的结果集,若希望按特定条件查询前N条记录,可以使用伪列ROWNUM. ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集).简单的说ROWNUM是符合条件结果的序列号.它总是从1开始排起的. 使用ROWNUM时,只能使用<.<=.!=符号. 举例: student(学生)表,表结构为: ID     char(6) --学号 name VARCHAR2(10) --姓名 --建表 cre…
原理: Oracle根据还原表空间信息,利用还原表空间中的数据,类似一致性读取方法,可以把表置于一个删除前的时间点(或SCN),从而将数据找回. 删除删除错误的dml操作的oracle的前提准备: 一.保证可以闪回两个小时之前的数据 show parameter undo_retention 显示事务在undo表空间中至少保存的时间.表示一个事务提交以后,该事务的数据至少要在还原表空间中保存的undo_retention参数指定的时间(秒). alter system set undo_rete…
场景:在书写oracle的sql语句时候,如果语句不存在主键,需要删除几条重复的记录,这个时候如果不知道oracle中的伪列,就需要把所有的重复记录先删除,再插入.这样做好麻烦,可以通过伪列来定位记录. 1 ROWNUM的使用——TOP-N分析 使用SELECT语句返回的结果集,若希望按特定条件查询前N条记录,可以使用伪列ROWNUM. ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集).简单的说ROWNUM是符合条件结果的序列号.它总是从1开始排起的…
oracle中类似indexof用法_instr函数 [sql] 在oracle中没有indexof()函数 但是提供了一个 instr() 方法 具体用法: select instr('保定市南市区','市',1,1)-1 from dual; 解释:1. '保定市南市区' =>可以是表达式,也可以是具体数据           2. '市'=>为分离的标志,这里为两组数据中的“市”这个字           3. 第一个1为从左边开始,如果为-1,则从右边开始.           4.…
转自:http://chenxy.blog.51cto.com/729966/168459 1.相同点       a.都可以删除数据,其中truncate用于全表清空数据,而delete可以选择的删除 2.不同点:       a.回滚,delete支持事物回滚,而truncate不支持.      延伸:在oracle中事物能回滚,是因为oracle中设计的undo表空间.数据再删除后仍能回滚是因为把数据放到了undo表空间         delte属于DML语言,DML语言需要手动提交事…
在oracle中,如何修改已存在数据列名的数据类型 一般人直接在表结构设计这里修改,这里只适合修改列没有数据,可修改 那么,如何这个列是有数据,是怎么修改的呢? 直接修改会Oracle错误 第一步:先创建一个新列名,名字跟修改的名称一样(多了个1),数据类型改成要修改的(如varchar(100)) 第二步:将原列名的数据备份到新列名中,执行赋值操作 --将旧列名的数据迁到新列名--- update TMS_DELIVERY_ITEM_BOX set ITEM_BILL1=ITEM_BILL 第…
学习内容: A.创建数据库和表空间 B.创建用户和分配权限 C.创建数据表 一.创建数据库和表空间 (一)SQL语言的基本概念 1.概念 高级的结构化查询语言:沟通数据库服务器和客户的重要桥梁. PL/sql语言是结构化的查询语言. 2.分类: 数据定义语言  :create  alter  drop 数据操作语言: insert update delete 数据控制语言:select (二)创建数据库的两种方式 方式一:图形界面: 方式二:create  Datebase命令方法.(常用) 具…
分区表MBR与GPT的说明: MBR:主引导记录,是传统的分区机制,应用于绝大多数使用BIOS的PC设备,MBR+BIOS,MBR支持32位和64位系统,支持的分区数量有限,MBR只支持不超过2T的硬盘,超过2T的硬盘将只能用2T空间 GPT:全局唯一标识分区表,是一个较新的分区机制,解决了MBR很多缺点,支持超过2T的磁盘(64位寻址空间),fdisk最大只能建立2TB大小的分区,创建一个大于2TB的分区使用parted.向后兼容MBR,必须在支持UEFI的硬件上才能使用(Intel提出,用于…
在看<MySQL 5.1参考手册>的时候,发现MySQL提供了一种两表关联update操作.原文如下: UPDATE items,month SET items.price=month.price WHERE items.id=month.id; 在MySQL中构造表验证了一下 mysql> select * from test; +------+--------+ | id | salary | +------+--------+ | | | +------+--------+ row…
oracle 中随机取一条记录的两种方法 V_COUNT INT:=0; V_NUM INT :=0; 1:TBL_MYTABLE 表中要有一个值连续且唯一的列FID BEGIN SELECT COUNT(*) INTO V_COUNT FROM  TBL_MYTABLE; SELECT TRUNC(DBMS_RADOM.VALUE(1,V_COUNT+1)) INTO V_NUM FROM DUAL; SELECT * FROM TBL_MYTABLE T WHERE T.FID=V_NUM;…
关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999999999999999.00') as amount 不足之处是,如果数值是0的话,会显示为.00而不是0.00. 另一需要注意的是,格式中小数点左边9的个数要够多,否则查询的数字会显示为n个符号“#”. 解决方式如下: select decode(salary,0,'0.00',(to_char…
ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法 语法 第一种: 通过使用Oracle语句块  --指定文档所有部门都能查看 declare cursor TABLE_DEPT and STATUS>-; begin for c in TABLE_DEPT loop INSERT INTO G_KNOWDOCRIGHT(RID,DIRID,DOCID,USERID) VALUES(SYS_GUID(),'权限编号','文档编号',c.ID); end loop; commit;…