Oracle
文章平均质量分 66
白开水Jerry
Every day starts a new journey
展开
-
SQL学习笔记
1. 主流项目一般使用GUID做主键(uniqueidentifier,UUID)2. 通配符:_ 代表通配1个字符,% 代表通配0-n个字符3. 数据库中null表示不知道,而不是没有值;C#中表示空指针;SQL中查询具有空置的记录,不能用等于:错:select * from T_Employeewhere FName = null; 即使有员工的FName字段为Nu原创 2012-06-08 15:56:03 · 493 阅读 · 0 评论 -
Oracle 删除重复数据只留一条
查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 group byId having count(Id) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录转载 2014-10-13 17:12:17 · 723 阅读 · 0 评论 -
Oracle Minus 取差集
Oracle Minus关键字 SQL中的MINUS关键字 SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果中。如果有的话,那这一笔记录就被去除,而不会在最后的结果中出现。如果第二个SQL语句所产生的结果并没有存在于第一个SQL语句所产生的结果内,那这笔资料就被抛弃,其语法如下: [SQL转载 2015-04-08 13:34:00 · 638 阅读 · 0 评论 -
PL/SQL Developer安装配置实践
作为半个DBA,以前总在SQL*Plus下工作,根本不用任何配置文件,直接 sqlplus user/pwd@host/service就可以顺利连接Oracle服务器。现在应开发人员要求,在Windows平台安装PL/SQL Developer,少经挫折,终于顺利完成。现将安装配置过程记录下来,以备后用。基本环境:服务器端:oracle11.2g X64客户端:Wind转载 2017-06-19 10:15:57 · 661 阅读 · 0 评论 -
oracle存储过程中的异常处理
1.问题来源Oracle中可以用dbms_output.put_line来打印提示信息,但是很容易缓冲区就溢出了。可以用DBMS_OUTPUT.ENABLE(1000000);来设置缓冲区的大小。但是有大小,就有可能再溢出(程序写得太烂,错误不断,不好意思)。于是想把异常信息写到一个表中。2.建表这个容易create table wErrorLog( proc原创 2017-08-10 11:33:06 · 9810 阅读 · 0 评论 -
将java的jar包导入oracle,通过oracle调用java方法
最近项目上遇到一个问题,因为项目一些数据设计保密的问题,所以数据库的很多数据都是脱敏存储的;但是需求又需要去模糊查询,这就蛋疼了, 由于项目是用base64脱敏的;第一次想到了把条件进行脱敏之后去数据库匹配, 经过测试之后发现,中文脱敏之后去数据库模糊查询是可行的,但是字母和数字脱敏之后就匹配不上了(这可能与加密方式有关,具体没研究过). 后来又想到了又缓存,把所有数据查出转载 2017-09-05 17:43:48 · 1237 阅读 · 2 评论 -
Oracle并行模式(Parallel)
1. 实例(1)insert 加速insert into /*+ append parallel nologging */ dcustcomposmsgselect /*+ parallel(e,18)*/ * from dcustcomposmsg_new e;commit;(2)select create加速CREATE TABLE TEMP_DCUST_GRA原创 2017-09-06 18:00:39 · 31820 阅读 · 4 评论 -
Oracle同义词创建及其作用
Oracle的同义词(synonyms)从字面上理解就是别名的意思,和试图的功能类似,就是一种映射关系。本文介绍如何创建同义词语句,删除同义词以及查看同义词语句。 oracle的同义词总结: 从字面上理解就是别名的意思,和试图的功能类似。就是一种映射关系。 1.创建同义词语句:create public synonym table_name for user.t转载 2017-09-25 16:48:11 · 414 阅读 · 0 评论 -
ORACLE物化视图与视图区别
物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好。 物化视图:是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照!转载 2017-09-28 17:39:54 · 2683 阅读 · 0 评论 -
oracle权限相关(存储过程、JOB)存过必须要加上Authid Current_User is
创建存储过程一定要加上Authid Current_User is,不然非dba权限其他用户无法调用该过程一、存储过程中创建表没有权限 create or replace procedure p_create_table Authid Current_User is begin Execute Immediate 'create table create_table(原创 2017-09-21 13:03:23 · 2925 阅读 · 0 评论 -
Oracle数据库创建DATABASE LINK
物理上存放于网络的多个ORACLE数据库,逻辑上可以看成一个单一的大型数据库,用户可以通过网络对异地数据库中的数据进行存取,而服务器之间的协同处理对于工作站用户及应用程序而言是完全透明的,开发人员无需关心网络的链接细节、数据在网络节点中的具体分布情况和服务器间的协调工作过程。 数据库之间的链接建立在DATABASE LINK上。要创建一个DATABASE LINK,必须首先在建立链转载 2017-12-25 11:23:14 · 732 阅读 · 0 评论 -
Oracle查出一个用户具有的所有系统权限和对象权限
1. 系统权限1 SELECT *2 FROM DBA_SYS_PRIVS3 WHERE GRANTEE = 'LCAM_SYS_1216'4 UNION ALL5 SELECT *6 FROM DBA_SYS_PRIVS7 WHERE GRANTEE IN8 (SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE原创 2018-01-04 16:36:05 · 763 阅读 · 0 评论 -
ORACLE MERGE INTO语句,unable to get a stable set of rows in the source tables报错解决
ORACLE数据库,MERGE INTO语句,经常会出现 ORA-30926: unable to get a stable set of rows in the source tables 这个错误,如下图所示: 经检查,这个错误是由于数据来源表(即语句中,from关键字后面的表)存在数据重复造成的。在实际项目研发中,我们一般不能随便改动数据表的记录,那么如原创 2014-06-04 17:09:41 · 38334 阅读 · 0 评论 -
查看 MySQL 数据库中每个表占用的空间大小
如果想知道MySQL数据库中每个表占用的空间、表记录的行数的话,可以打开MySQL的 information_schema 数据库。在该库中有一个 TABLES 表,这个表主要字段分别是:TABLE_SCHEMA : 数据库名TABLE_NAME:表名ENGINE:所使用的存储引擎TABLES_ROWS:记录数DATA_LENGTH:数据大小INDEX_LENGTH:索转载 2014-04-22 15:31:02 · 1288 阅读 · 0 评论 -
数据库中in和exists关键字的区别
数据库中in和exists关键字的区别 in 是把外表和内表作hash join,而exists是对外表作loop,每次loop再对内表进行查询。 一直以来认为exists比in效率高的说法是不准确的。 如果查询的两个表大小相当,那么用in和exists差别不大。 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:转载 2013-10-18 17:54:17 · 9732 阅读 · 2 评论 -
Oracle锁表问题解决
Oracle锁表问题解决1. 查看被锁的表2. 查看造成锁表的session3. 删除造成锁表的session原创 2013-09-13 10:20:01 · 1679 阅读 · 0 评论 -
查询出前n条记录的SQL以及Hql语句
1. Oracle DB:Sql: SELECT * FROM user WHERE rownum Hql: from User u order by u.salary desc where rownum2. SQL Server:Sql: SELECT TOP n * FROM user;3. MySQL:Sql: SELECT * FRO原创 2012-08-22 14:41:55 · 9112 阅读 · 0 评论 -
Win7下卸载Oracle11g
Uninstall Oracle Database 11g Windows 7I have an Oracle database 11g standard edition installed in my Windows 7 OS. Today I tried uninstalling it to install a fresh Oracle Database 11g Enterprise转载 2012-11-29 10:10:12 · 1280 阅读 · 0 评论 -
Oracle TO_DATE() 函数格式化时间
TO_DATE格式(以时间:2007-11-02 13:45:25为例):用法:to_date(value, pattern),value是时间参数,pattern是时间的格式 Year: yy two digits 两位年 显示值:07 yyy three digits 三位年 显示值:007转载 2013-01-02 13:50:53 · 12409 阅读 · 0 评论 -
ORACLE中dual的使用和详解
1. 我们先从名称来说,dual不是缩写词,本身就是完整的单词。dual名词意思是对数,做形容词时是指二重的,二元的。2. Oracle中的dual表是一个单行单列的虚拟表。3. Dual表是oracle与数据字典一起自动创建的一个表,这个表只有1列:DUMMY,数据类型为VERCHAR2(1),dual表中只有一个数据'X', Oracle有内部逻辑保证dual表中永远只有一条数据。转载 2013-01-01 22:20:10 · 1066 阅读 · 0 评论 -
数据库性能优化2——使用CLUSTER降低关联查询的IO
表簇(table cluster)是一个数据库对象,它可以将那些经常在相同数据块中一起使用的表进行物理分组。当你处理那些经常连接在一起进行查询的表时,表簇是特别有效的。一个表簇存储簇键(用于将表连接到一起的列),以及簇表中的列值。因为簇中的表都被储存在相同的数据库块中,所以使用簇工作时,I/O操作就减少了。使用典型数据簇的目的是为了在硬盘上将应用程序经常一起使用的行存储在一块,当应用程转载 2013-04-01 16:03:09 · 1127 阅读 · 0 评论 -
数据库性能优化3——Oracle SEQUENCE的概念、作用以及创建(使得并发插入主键唯一)
1. Oracle Sequence的概念Oracle 使用序列 来生成唯一编号,而不是使用 SQL Server 所用的数据类型 uniqueidentifier。无论是哪种情况,主要用途都是为主键列生成一系列唯一编号。与 uniqueidentifier 数据类型不同,序列是与将其用于主键值的一个或多个表无关的数据库对象。Oracle 序列是原子对象,并且是一致的。也就是说,一旦您原创 2013-04-01 17:41:19 · 8239 阅读 · 0 评论 -
oracle修改字段类型,从number(2)改为number(2,1)
今天下午,自己做东西时,发现个小问题,当时建立数据表的时候,把course的course_credit字段建为了number(2)型,这导致了输入类似于:4.5时,精度丢失,打算改表字段的类型,可是该字段有大量数据,在网上找了一圈,结合自己的思考想了个解决方案,如下所示-- course表的course_credit字段的类型需要从number(2)改为number(2,1),可是该字段有原创 2013-04-02 16:42:27 · 8802 阅读 · 0 评论 -
一个完整的Oracle建表的例子
建表一般来说是个挺简单的事情,但是Oracle的建表语句有很多可选的参数,有些我们可能平时不太用,用的时候又不知道怎么用,这里就写一个较完整的建表的例子:CREATE TABLE banping (id NUMBER(5) CONSTRAINT banping_id_pk PRIMARY KEY, last_name VARCHAR2(10) CO转载 2013-04-02 19:29:02 · 800 阅读 · 0 评论 -
数据库性能优化1——正确建立索引以及最左前缀原则
1. 索引建立的原则用于索引的最好的备选数据列是那些出现在WHERE子句、join子句、ORDER BY或GROUP BY子句中的列。仅仅出现在SELECT关键字后面的输出数据列列表中的数据列不是很好的备选列SELECTcol_a FROMtbl1 LEFT JOIN tbl2ON tbl1.col_b = tbl2.col_c WHEREcol_d = e原创 2013-03-24 16:58:56 · 29644 阅读 · 6 评论 -
Oracle中组合索引的使用详解
在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引。在组合索引的使用方面,Oracle有以下特点: 1、 当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL语句的where子句中时,才会使用到该索引; 2、 在使用Oracle9i之前的基于成本的优化器(CBO)时, 只有当组合索引的前导列出现在SQL语句的where子句中时,才可能会转载 2013-03-24 17:07:37 · 3056 阅读 · 0 评论 -
强大的SQL之SQL Cookbook读书笔记1——对字母数字混合的数据排序
最近,在看SQL Cookbook真的很不错的一本书,许多解决方案,都十分精妙,真切的体会到了,SQL的强大。注:我用的是ORACLE 11g下面是书2.4中的一个实例--对字母数字混合的数据序列的排序首先,我们需要书中的一张表emp,书中没有提供建表的文件或者是语句。我用的是ORACLE数据库,按照书上的数据自己建的emp表,随便建一个表,然后把数据存起来,下面是数据插入的S原创 2013-04-10 20:46:21 · 2274 阅读 · 0 评论 -
oracle merge into 的用法详解+实例
作用:merge into 解决用B表跟新A表数据,如果A表中没有,则把B表的数据插入A表;语法:MERGE INTO [your table-name] [rename your table here]USING ( [write your query here] )[rename your query-sql and using just like a table]转载 2013-08-23 15:21:53 · 810 阅读 · 0 评论 -
Java代码调用存储过程和存储方法
1.调用 存储过程:[java] view plain copypackage com.test.demo; import java.sql.CallableStatement; import java.sql.Connection; import org.junit.Test; import oracle.jdbc.internal.OracleTypes; import转载 2018-01-18 13:08:06 · 2607 阅读 · 0 评论