随笔分类 -  Oracle

摘要:比如在Northwind数据库中有一个查询为SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID)这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID里面啊,这是如何匹配的呢?EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或FalseE 阅读全文
posted @ 2014-02-16 11:19 残星 阅读(4267) 评论(0) 推荐(0) 编辑
摘要:一.如何用slq语句把一个表中的某几个字段的数据插入到另一个新表中,就要用下面这条slq语句: insert into 表名1(字段1,字段2) select 字段1,字段2 from 表名2这里有一点值得注意的是这2个字段要一一对应,并且按顺序。 二.如果另一个表是已经有数据的表,只希望更改其中的一列或几列的话,则用下面的sql语句: update 表名1,表名2 set 表名1.字段1 = 表名2.字段1 where 表名1.字段2 = 表名2.字段2因为第二个表是更新,所以只要指定与第一个表的关系,目的是数据的更新的时候能一一对应。 阅读全文
posted @ 2014-02-11 22:58 残星 阅读(10578) 评论(0) 推荐(0) 编辑
摘要:本文主要介绍如何结合Sql脚本和PL/SQL Developer工具来实现创建表空间、创建数据库、备份数据库、数据导出等操作,然后实现Oracle对象创建、导入数据等操作,方便我们快速了解、创建所需要的部署Sql脚本和数据库操作。1、 准备数据库创建脚本[sql]createtablespacewhc_tbsdatafile'E:\oracle\oradata\whcdb\whc.dbf'size100M;--DROPTABLESPACEwhc_tbsINCLUDINGCONTENTSANDDATAFILESCASCADECONSTRAINTS;createuserwhcide 阅读全文
posted @ 2013-08-28 22:41 残星 阅读(97049) 评论(1) 推荐(3) 编辑
摘要:取出sql表中第31到40条的记录(以自动增长ID为主键):Sql Server 下:方案1:select top 10 * from t where id not in (select top 30 id form t order by id) order by id;方案2:select top 10 * from t where id in (select top 40 id from t order by id) order by id desc;MySql 下:select * from t order by idlimit 30,10;Oracle 下:select * from 阅读全文
posted @ 2013-08-13 17:46 残星 阅读(409) 评论(0) 推荐(0) 编辑
摘要:1、使用dba权限登录2、建表 阅读全文
posted @ 2012-12-03 11:07 残星 阅读(422) 评论(0) 推荐(0) 编辑
摘要:declarejobno number;begin dbms_job.submit( jobno,--定时器ID,系统自动获得 'PRC_INSERT;',--what执行的过程名 sysdate,--next_date,定时器开始执行的时间,这样写表示立即执行 'sysdate + 15/1440'--interval,设置定时器执行的频率,这样写每隔15分钟执行一次);commit;end;这里第一个参数是任务编号,系统自动赋值。也可以采用isubmit来手动指定第二个参数是需要执行的任务过程,代码长的话,可以将它写到一个存储过程里,再放到里面调用,比如&# 阅读全文
posted @ 2012-06-06 12:43 残星 阅读(24874) 评论(1) 推荐(0) 编辑
摘要:1.字符串拼接update tbl_main d set d.area_id='0'||d.area_id2.存储过程及游标create or replace procedure PRC_INSET_DEALasbegin declare cursor main_depart is select * from main_bak ; temp main_bak%rowtype; begin open main_depart; loop fetch main_depart into temp; exit when main_depart%notfound; insert into 阅读全文
posted @ 2012-06-02 17:26 残星 阅读(264) 评论(0) 推荐(0) 编辑
摘要:删除数据库某个表中的一列alter table tablename drop clumn clumnname;因为需求的变更,所以,有要对数据库中的一些字段进行修改.查了下网络上在资料,字段名称是无法修改的.唯一的办法,就是删了再添加.如何修改oracle数据库中表的结构(字段的名称、长、类型、是否为空)?改类型、长度、是否为空: alter table mytable modify (mycol varchar2(20) not null); 要修改类型,字段必须是空的; 要修改长度,如果字段是空的,完全可以改,如果字段不空,则只能增加长度,不能减小; 要修改是否为空,字段必须符合cons. 阅读全文
posted @ 2012-05-10 10:11 残星 阅读(393) 评论(0) 推荐(0) 编辑
摘要:卸载步骤如下,只供参考: 1、在系统服务中停止所有oracle的服务。 2、打开控制面板,程序卸载,卸载所有有关oracle的程序 3、点击“开始,所有程序”找到oracle主程序下的Oracle Installation Products,点击“Universal Installer”。点击卸载,选择所有产品。卸载后查看“安装产品”,应该为空。 4、删除注册表相关选项:运行regedit, a、选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE b、选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet... 阅读全文
posted @ 2012-05-03 13:02 残星 阅读(1063) 评论(0) 推荐(0) 编辑
摘要:相信很多人都有过统计某些数据的经历,比如,要统计财务的情况,可能要按每年,每季度,每月,甚至每个星期来分别统计。那在oracle中应该怎么来写sql语句呢,这个时候Oracle的日期函数会给我们很多帮助。常用日期型函数 1。Sysdate 当前日期和时间SQL> Select sysdate from dual;SYSDATE----------21-6月 -052。Last_day 本月最后一天 SQL> Select last_day(sysdate) from dual;LAST_DAY(S----------30-6月 -053。Add_months(d,n) 当前日期d后 阅读全文
posted @ 2012-04-17 12:54 残星 阅读(354) 评论(0) 推荐(0) 编辑
摘要:from: 把Oracle表里的数据导成insert语句有些时候我们需要把oracle里的数据导入其他数据库里。生成insert into 表名 .... 是一种很简单直接的方法。 今年六月份从www.arikaplan.com/oracle.html看到一个可以生成insert into 表名 ....语句的存储过程genins_output。按中文习惯的时间格式YYYY-MM-DD HH24:MI:SS改了改,并新写了一个存储过程genins_file.sql。 它可以把小于16383条记录表里的数据导成(insert into 表名 ....)OS下文件。 调用它之前,DBA要看看数据库 阅读全文
posted @ 2012-03-28 15:38 残星 阅读(1849) 评论(0) 推荐(0) 编辑
摘要:from: brucelau@CSDN大体的分为三种方法:一、可以通过toad、plsql develop等第三方工具进行导出DLL操作,用这种办法的好处在于操作简单方便,但需要安装,下面简单介绍一下用这两个工具获得DLL语句的操作。二、直接通过EXP/IMP工具Oracle提供的最原始最实用的导入导出工具,我们大体上可以分为三种办法实现导出DDL。a. 通过imp指定indexfile参数,但这种办法不爽在于有每行前会有REM语法大体如下:exp userid=... tables=emp rows=n file=emp.dmp imp userid=... file=emp.dmp ind 阅读全文
posted @ 2012-03-28 15:37 残星 阅读(8259) 评论(0) 推荐(0) 编辑
摘要:在Oracle安装路径下找到tnsnames.ora如:D:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN下打开该文件,在其最后加上服务器名=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS =(PROTOCOL = TCP)(HOST = 服务器IP地址)(PORT = 端口号)) ) (CONNECT_DATA = (SERVICE_NAME = 服务器名) ) ) 阅读全文
posted @ 2012-03-28 11:53 残星 阅读(469) 评论(0) 推荐(0) 编辑
摘要://创建临时表空间 create temporary tablespace test_temptempfile 'E:\oracle\product\10.2.0\oradata\testserver\test_temp01.dbf'size 32mautoextend onnext 32mmaxsize 2048mextent management local; //创建数据表空间 create tablespace test_datalogging datafile 'E:\oracle\product\10.2.0\oradata\testserver\test_ 阅读全文
posted @ 2012-03-28 11:44 残星 阅读(1584) 评论(0) 推荐(0) 编辑
摘要:package cn.ng.db;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;public class DbConnect { private final String url = "jdbc:oracle:thin:@服务器IP地址:1521:数据库名"; private final String className = "oracle.jdbc.driver.OracleD 阅读全文
posted @ 2012-03-22 10:12 残星 阅读(414) 评论(0) 推荐(0) 编辑
摘要:单行函数格式:函数名【(参数1,参数2,参数3,...)】其中参数可以为用户定义的常量、变量、列名和表达式。单行函数只对表中的一行数据进行操作,并且对每一行数据只产生一个输出结果。单行函数可用在SELECT、WHERE和ORDER BY的子句中,而且单行函数可以嵌套。单行函数包含字符型。数字型、日期型、转换型和一般型函数。1.单行字符型函数(1)LOWER(列名|表达式):该函数用于把字符转换成小写。SELECT LOWER('SQL: Structural Query Language')FROM dual;dual是系统的一个虚表(伪表),原因:在查询语句中必须包含SELE 阅读全文
posted @ 2012-03-17 13:41 残星 阅读(6641) 评论(0) 推荐(1) 编辑
摘要:1.脚本文件(1)生成SELECT empno,ename,job,salFROM empWHERE sal>=1500ORDER BY job,sal DESC;将SQL缓冲区中的语句存入D:\SQL\SAMPLE.sql文件中。SAVE D:\SQL\SAMPLESAVE命令把SQL缓冲区的内容存入指定的文件,该文件称为脚本文件。L(2)编辑GET D:\SQL\SAMPLE.sqlL此时,可以使用C、A、n或DEL等命令来编辑SQL缓冲区中的语句。/ed D:\SQL\SAMPLE(3)直接运行@D:\SQL\SAMPLE.sql"@"或START命令是把指定脚 阅读全文
posted @ 2012-03-17 09:20 残星 阅读(246) 评论(0) 推荐(0) 编辑
摘要:1.日期显示问题依次执行以下命令:(1)alter session set NLS_DATE_LANGUAGE='AMERICAN;(2)col hiredate for a15(3)COL ENAME FOR A82.列的别名:在列名和别名别名之间放上AS或空格就可以了。当别名没有被双引号括起来时,其显示结果为大写。如果别名中包含了特殊字符,或想让别名原样显示,你就要使用双引号把别名括起来。SELECTempno AS "Employee Number",ename name,(sal+500)*12 "Annual Salary"FROM emp;3 阅读全文
posted @ 2011-11-29 19:31 残星 阅读(20547) 评论(0) 推荐(0) 编辑