数据库-oracle
文章平均质量分 72
fhuan123
这个作者很懒,什么都没留下…
展开
-
数据库主键到底是用自增长(INT)好还是UUID好
之前在参加长沙互联网大会的时候问过微信DBA一个问题,数据库主键到底是用自增长好还是UUID好?DBA回答:自增长好,因为自增长有占用空间小、索引快等特点。但这一定是最好的吗?最近在做一个项目刚好也遇到了同样纠结的问题,其实这个问题我已经查过很多资料也问过很多人了,最后总结归纳下,仅供大家参考。其实针对使用自增长还是UUID,大家讨论最多的就是速度和存储空间,这里我加入了安全性和分布式,具体对...原创 2018-03-09 17:02:19 · 685 阅读 · 0 评论 -
Oracle开发专题之:%TYPE 和 %ROWTYPE
1. 使用%TYPE 在许多情况下,PL/SQL变量可以用来存储在数据库表中的数据。在这种情况下,变量应该拥有与表列相同的类型。例如,students表的first_name列的类型为VARCHAR2(20),我们可以按照下述方式声明一个变量: DECLARE v_FirstName VARCHAR2(20); 但是如果first_name列的定义改变了会发生什么(比...原创 2010-05-18 11:46:02 · 71 阅读 · 0 评论 -
Oracle过程快查询成条记录,以及如何编写游标
Declare Cursor emp_cur is select * from masamk.tb_mk_reward_act_sub_corp t ; l_emp masamk.tb_mk_reward_act_sub_corp%rowtype;Begin Open emp_cur; Loop fetch emp_cur...2010-05-18 11:29:39 · 94 阅读 · 0 评论 -
Oracle时间日期操作
Oracle时间日期操作sysdate+(5/24/60/60) 在系统时间基础上延迟5秒sysdate+5/24/60 在系统时间基础上延迟5分钟sysdate+5/24 在系统时间基础上延迟5小时sysdate+5 在系统时间基础上延迟5天add_months(sysdate,-5) 在系统时间基础上延迟5月add_months(sysdate,-5*12) 在系统时间基础上延迟5年上月末...原创 2010-05-17 17:31:31 · 101 阅读 · 0 评论 -
Oracle 排序中常用的NULL值处理方法
1、缺省处理 Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前2、使用nvl函数 nvl函数可以将输入参数为空时转换为一特定值,如nvl(employee_name,’张三’)表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name通过这个函数可以定制null的排序位置。3、使用decode函...2010-02-26 15:34:16 · 82 阅读 · 0 评论 -
ORACLE函数大全
SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制数;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A A ZERO SPACE--------- --------- --------- --------...2010-02-24 17:56:53 · 81 阅读 · 0 评论 -
Oracle中的Union、Union All、Intersect、Minus
众所周知的几个结果集集合操作命令,今天详细地测试了一下,发现一些问题,记录备考。假设我们有一个表Student,包括以下字段与数据:drop table student; create table student(id int primary key,name nvarchar2(50) not null,score number not null); insert into st...原创 2010-02-24 16:36:12 · 54 阅读 · 0 评论 -
Oracle插入数据时获取自增ID
自增字段: 表atable(id,a) id需要自增 首先建立一个序列: create sequence seq_atable minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 nocache 有二种方式使用自增字段: 使用序列+触发器实现自增,插入语句不需要管自增字段 如:create or replace tr...2010-02-24 16:19:06 · 204 阅读 · 0 评论 -
Oracle错误一览表(3)
ORA-09751: pw_attachPorts: 服务器调用 pws_attach 失败 ORA-09752: pw_attachPorts: port_allocate 失败 ORA-09753: spwat: 无效的进程号 ORA-09754: sppst: 传送给 sppst 的进程号无效 ORA-09755: osngpn: 端口配置失败 ORA-09756: os...原创 2010-07-31 16:20:54 · 803 阅读 · 0 评论 -
聚合字符串的几种方法
怎么合并多行记录的字符串,一直是oracle新手喜欢问的SQL问题之一,关于这个问题的帖子我看过不下30个了,现在就对这个问题,进行一个总结。 什么是合并多行字符串(连接字符串)呢,例如:SQL> desc test;Name Type Nullable Default Comments ------- ------------ -------- ------- -...原创 2010-05-26 16:18:00 · 806 阅读 · 0 评论 -
sqlplus中改变日期的输出格式
工作中碰到用spool导出数据,其中有日期格式的字段,因为format了各列,就不想用to_char把日期再format了,而且用to_char的话还要把要所有的列都写在select语句中。.................... 工作中碰到用spool导出数据,其中有日期格式的字段,因为format了各列,就不想用to_char把日期再format了,而且用to_char的话还要把要所有的列都写...原创 2010-06-08 13:04:13 · 325 阅读 · 0 评论 -
Oracle job为什么不能自动执行,手工执行可以
用sysdba登录,执行show parameter job_queue_process看看结果是不是0如果是这个原因,可以修改此参数ALTER SYSTEM SET job_queue_processes = 10;原创 2016-02-26 10:11:03 · 866 阅读 · 0 评论 -
oracle job 定时执行 存储过程
oracle job 定时执行 存储过程一:简单测试job的创建过程案例: 1,先创建一张JOB_TEST表,字段为a 日期格式SQL> create table JOB_TEST(a date);Table createdSQL> commit;Commit complete2,创建一个存储过程 bb 作用是往pig表中插入数...原创 2016-02-26 10:10:34 · 157 阅读 · 0 评论 -
MySQL、Oracle和SQL Server的分页查询语句
假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql、Oracle和SQL Server分页查询student表。 1、Mysql的分页查询SELECT * FROM student LIMIT (PageNo - 1) * PageSize,PageSize; 理解:(Limit n,m) =>从第n行开始取m条记录...原创 2017-01-06 14:10:34 · 114 阅读 · 0 评论 -
oracle查询表结构
方法1 --按照表明查询select * from ALL_TAB_COLS A where lower(A.Table_Name) = 'vw_all_res_search_view' 方法2--按照用户查询,当前用户下面的所有表结构select b.TABLE_NAME as "表名", c.comments as "表说明", ...2010-10-18 16:50:15 · 82 阅读 · 0 评论 -
oracle中查看用户权限
1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users;2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限): select * from dba_sys_privs; select * from user_sys_privs; 3.查看角色(只能查看登陆...原创 2010-06-17 09:16:00 · 87 阅读 · 0 评论 -
oracle append 用法
1、今天PL/SQL导出数据时,忘将删除记录选项去除。结果,以前的历史数据都让我改清空了。汗一个。还好老大有备份,吓了一跳偶。恢复数据时,反映超快,下午才明白原来是append的作用:insert /*+append*/ into RKNJ_RKS_SFXB select * from AS08_RKS_SFXB 2、http://www.itpub.net/viewthread.php?...原创 2010-06-13 15:24:32 · 2293 阅读 · 0 评论 -
oracle删除重复记录
比如现在有一人员表 (表名:peosons)若想将姓名、身份证号、住址这三个字段完全相同的记录查询出来 select p1.* from persons p1,persons p2 where p1.id<>p2.id and p1.cardid = p2.cardid and p1.pname = p2.pname and p1.address = p2.addre...原创 2010-06-11 11:50:47 · 82 阅读 · 0 评论 -
Oracle多行记录合并/连接/聚合字符串的几种方法
怎么合并多行记录的字符串,一直是oracle新手喜欢问的SQL问题之一,关于这个问题的帖子我看过不下30个了,现在就对这个问题,进行一个总结。 什么是合并多行字符串(连接字符串)呢,例如:SQL> desc test;Name Type Nullable Default Comments ------- ------------ -------- ------- -...原创 2010-06-11 11:37:12 · 91 阅读 · 0 评论 -
Oracle错误一览表(2)
ORA-02201: 此处不允许序列(号) ORA-02202: 此群集中不允许添加其它表 ORA-02203: 不允许的 INITIAL 存储选项 ORA-02204: 不允许 ALTER, INDEX 和 EXECUTE 用于视图 ORA-02205: 只有 SELECT 和 ALTER 权限对序列有效 ORA-02206: 重复的 INITRANG 选项说明 ORA-02207: 无效的 I...原创 2010-07-31 16:20:01 · 1497 阅读 · 0 评论 -
Oracle错误一览表(1)
ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程;无法转换会话 ORA-00022: 无效的会话 ID;访问被拒绝 ORA-00023: 会话引用进程私用内存;无法分离会话 ORA-00...原创 2010-07-31 16:19:11 · 96 阅读 · 0 评论 -
ORACLE常用函数和SQL性能忧化
NVL(eExpression1, eExpression2) 如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。 如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和 eExpression2 可以是任意一种数据类型。 如果 eExpression1 与 eExpr...原创 2010-05-12 22:33:20 · 75 阅读 · 0 评论 -
用于表空间和表分区的方法
CREATE OR REPLACE FUNCTION MASAMKt.fun_add_table_partitionst(v_table_owner in varchar2,v_table_name in varchar2,v_partition_name in varchar2,v_subpartition_name in varchar2,v_object_type in...原创 2010-07-08 14:07:09 · 122 阅读 · 0 评论 -
Oracle常用语句
整理如下:友情提示:commit是执行完后需要的。当然如果你执行另外的语句更新就不需要了。否则你可能会发现刚才的更新没有用。1 以DBA的身份登录数据库connect sys/change_on_install@hhxx as sysdba; 2 查看日期等的DUAL表查询SELECT SYSDATE FROM DUAL;3 查看用户的默认表空间select usernam...2010-04-30 10:01:29 · 77 阅读 · 0 评论 -
几个SQL语句示例
1.SQL分页查询:假设有一个学生表studentselect * from (select m.* , rownum r from (select s.* from student s order by id asc) m)where r < = pageNum+PageFirst and r > pageFirst;注:pageFirst 表示从第几个记录显示 ...2010-04-20 09:39:21 · 84 阅读 · 0 评论 -
ORACLE数据库链接Server数据库配制方法pms
我是用的是oracle10g,我们一般要在oracle的控制台中进行配置,今天我知道了可以在oracle的文件中进行配置。oracle的文件位置:D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN文件名(要增加数据库的文件):tnsnames.ora原来是: # tnsnames.ora Network Configuration F...2009-07-14 14:42:54 · 183 阅读 · 0 评论 -
SQL语句中的 where 1=1啥意思
在组合查询条件时候多用: String sql="select * from user where 1=1 "; if(username!=null) sql=sql+ " and username='"+username+"'"; if(password!=null) sql=sql+ " and password='"+password+"'"; 这样方便很多,及时username,passw...2009-01-13 21:14:40 · 845 阅读 · 0 评论 -
oracle 存储过程的基本语法 及注意事项
oracle 存储过程的基本语法1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER) IS变量1 INTEGER :=0;变量2 DATE;BEGINEND 存储过程名字2.SELECT INTO STATEMENT 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中...2010-03-31 10:48:37 · 88 阅读 · 0 评论 -
oracle学习--循环语句
loop循环: create or replace procedure pro_test_loop isi number;begini:=0;loop i:=i+1; dbms_output.put_line(i); if i>5 then exit; end if;end loop;end pro_test_loop;...2010-03-31 10:38:48 · 87 阅读 · 0 评论 -
用java调用oracle存储过程总结
这段时间开始学习写存储过程,主要原因还是因为工作需要吧,本来以为很简单的,但几经挫折,豪气消磨殆尽,但总算搞通了,为了避免后来者少走弯路,特记述与此,同时亦对自己进行鼓励。一:无返回值的存储过程存储过程为:CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) ASBEGIN INSE...2010-03-25 15:56:57 · 56 阅读 · 0 评论 -
Oracle左连接,右连接
数据表的连接有: 1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2、外连接: 包括 (1)左外连接(左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 3、自连接(连接发生在一张基表内) select a.studentno, a.studentname, b.classname from students a, classes b...2010-05-05 10:18:18 · 92 阅读 · 0 评论 -
[Oracle]高效的PL/SQL程序设计(一)--伪列ROWNUM使用技巧
--1. 取前10行 select * from hr.employees where rownum<=10 --2. 按照first_name升序,取前10位--正确方法 oracle处理机制: --> hr.employees全表扫描 --> SORT ORDER BY STOPKEY 只排序前10行,作为一个矩...2010-05-05 10:32:01 · 158 阅读 · 0 评论 -
[Oracle]高效的SQL语句之分析函数(四)--lag()/lead()
有时候报表上面需要显示该笔操作的上一步骤或者下一步骤的详细信息,这个时候可以按照下面的做法:先创建示例表:-- Create tablecreate table LEAD_TABLE( CASEID VARCHAR2(10), STEPID VARCHAR2(10), ACTIONDATE DATE)tablespace COLM_DATA pctfree 10 init...2010-05-05 14:55:23 · 92 阅读 · 0 评论 -
[Oracle]高效的SQL语句之分析函数(三)--row_number() /rank()/dense_rank()
有些时候我们希望得到指定数据中的前n列,示例如下:得到每个部门薪水最高的三个雇员:先创建示例表create table empasselect * from scott.emp;alter table empadd constraint emp_pkprimary key(empno);create table deptasselect * from scott.dept;alter table ...2010-05-05 14:39:34 · 91 阅读 · 0 评论 -
[Oracle]高效的SQL语句之分析函数(二)--max()
如果我们按照示例想得到每个部门薪水值最高的雇员的纪录,可以有四种方法实现:先创建示例表create table empasselect * from scott.emp;alter table empadd constraint emp_pkprimary key(empno);create table deptasselect * from scott.dept;alter table dept...2010-05-05 14:23:44 · 130 阅读 · 0 评论 -
[Oracle]高效的SQL语句之分析函数(一)--sum()
实际应用中我们可以通过sum()统计出组中的总计或者是累加值,具体示例如下:1.创建演示表create table empasselect * from scott.emp;alter table empadd constraint emp_pkprimary key(empno);create table deptasselect * from scott.dept;alter table de...2010-05-05 14:15:45 · 122 阅读 · 0 评论 -
[Oracle]高效的PL/SQL程序设计(六)--%ROWTYPE的使用
在PL/SQL程序中, 我们会遇到需要先从一个结果集中取出若干记录, 然后对每一条记录进行处理的情况, 最理想的做法是在一条SQL语句中完成, 但有时候因为需求的关系所以不一定能实现, 所以我们通常会定义几个变量, 然后对结果集做循环, 赋值给变量. 最典型的就是select XX into XX。我们也可以用定义一个记录%rowtype的方法, 减少不必要的代码量, 还能避免由于表中字段的变更造...2010-05-05 13:58:58 · 159 阅读 · 0 评论 -
[Oracle]高效的PL/SQL程序设计(四)--批量处理
批量处理一般用在ETL操作, ETL代表提取(extract),转换(transform),装载(load), 是一个数据仓库的词汇!类似于下面的结构:for x (select * from...)loop Process data; insert into table values(...);end loop; 一般情况下, 我们处理大笔的数据插入动...2010-05-05 11:58:14 · 96 阅读 · 0 评论 -
[Oracle]高效的PL/SQL程序设计(三)--Package的优点
使用Package的优点在于提供了必需的程序设计结构, 促进了模块化编程设计, 最重要的是Package断开了依赖链, 使得对某个数据库模式的改动不会导致整个模式的无效,从而避免了昂贵的重编译! 例如: 存在table t , procedure p1 p2, view v, function f, 它们之间引用关系如下:select name,type,referenced_n...2010-05-05 11:31:46 · 96 阅读 · 0 评论 -
[Oracle]高效的PL/SQL程序设计(二)--标量子查询
ORACLE允许在select子句中包含单行子查询, 使用标量子查询可以有效的改善性能,当使用到外部连接,或者使用到了聚合函数,就可以考虑标量子查询的可能性1. 取消外部连接的使用外部连接的做法:select a.username,count(*) from all_users a,all_objects bwhere a.username=b.owner(+)group b...2010-05-05 11:23:50 · 214 阅读 · 0 评论