`
Anybing
  • 浏览: 127016 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle中比较实用的命令和操作技巧

阅读更多
oRACLE
   1、查询系统的相关信息
SELECT * FROM USER_TABLES
SELECT * FROM USER_INDEXES;
   2、修改表结构信息
*ALTER TABLE SCHEMA_NAME.TABLE_NAME MOVE TABLESPACE TTPRDDATA STORAGE(INITIAL 64K)
  3、修改索引的结构信息
*ALTER INDEX SCHEMA_NAME.INDEX_NAME REBUILD STORAGE(INITIAL 64K)
4、查询/设置当前的SCHEMA
*SELECT SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA')FROM DUAL;
*ALTER SESSION SET CURRENT_SESSION='QUIXD'
5、DB LINK
*SELECT * FROM DBA_DB_LINKS;
6、显示表的结构信息
*在command上输入:desc table tableName;
*select * from col where tname=upper('wbts_tmp');
*select * from user_tab_columns where table_name=upper('表名');
7、oracle错误信息提示及关键字
*DUP_VAL_ON_INDEX (oracle内部异常dup_val_on_index问题)
*NO_DATA_FOUND(没有找到信息)
*OTHERS (其他情况)
*通过SQLCODE/SQLERRM 来取得错误信息,想得到具体信息 通过 SQLERRM (SQLCODE)
*DUP_VAL_ON_INDEX 如果主键重复、则抛出此异常
*******************************************
*EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE_APPLICATION_ERROR(-20103,'In adding Non Standard template name'||SQLERRM);
8、Oracle函数
*SUBSTR
*SIGN  eg:select sign(900-800) from dual;值为1
*DECODE(可以代替if-then-elsif-then-else或switch语句)
*-1、0、1分别代表小于、等于、大于
*NVL 判断不能为空,如果为空的:nvl(字段名,0),就是当你选出来的时候,这个字段虽然为空,但是显示的是0,当然这个0也可以换成其他东西,如: 1,2,3……
9、动态执行SQL语句
*V_SQL :='SELECT * FROM  ' ||V_TBNAME;
    EXECUTE IMMEDIATE V_SQL;
10、 Oracle转义
*select * from dba_tables where  table_name like 'U/_%'ESCAPE'/'  单引号转义v_sql := 'select * from tb where t_co='||''''||value||'''';
11、ORacle系统经常用到的一些表
*dba_segments、DBA_INDEXES、DBA_TABLES....;
12、 FUNCTIONAL-BASED-INDEX
*SELECT * FROM DBA_INDEXES WHERE OWNER='TTPRD'  AND INDEX_TYPE='FUNCTION-BASED NORMAL'
13、导出对象的方法
* select dbms_metadata.get_ddl('INDEX','QUIX_LEGACY_ID_XREF_IDX02') from dual;
14、创建历史表&向历史表中插入数据
*执行语句:CREATE TABLE 新表名 AS SELECT * FROM 旧表名;
*插入数据:INSERT INTO WBTS_T2 SELECT * FROM WBTS_T1;
15、定义一个参数的类型为游标类型
*TYPE quixnotescurtype IS REF CURSOR;
*TYPE trenddates IS RECORD (closedate DATE, submitdate DATE);
*TYPE trendtable IS TABLE OF trenddates INDEX BY BINARY_INTEGER;
16、重置用户密码
*alter user system identified by NewPasswordHere;
*备注:记得username and password values should add ""
17、INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)
*例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置
默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。
所以SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "Instring" FROM DUAL的显示结果是
Instring
14
18、Loop Methods(If you want to exit the loop,you can by the key word "exit"):
* LOOP
      EXIT WHEN p_cursordata%NOTFOUND;
        FETCH p_cursordata INTO v_trendtable (v_i);
v_i := v_i + 1;
     END LOOP;
* FOR i IN 1 .. v_trendtable.LAST
      LOOP
         IF (i = 1)
        THEN
              v_mindate := v_trendtable (i).submitdate;
       ELSIF (v_mindate > v_trendtable (i).submitdate)
       THEN
            v_mindate := v_trendtable (i).submitdate;
       END IF;
    END LOOP;
19、Trunc(for number)
*grammar:TRUNC(number[,decimals])
decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分
下面是该函数的使用情况:
TRUNC(89.985,2)=89.98
TRUNC(89.985)=89
TRUNC(89.985,-1)=80
注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。
20、Round(for number)
*grammar:ROUND( number, decimal_places )
select round(123.456, 0) from dual; 回传 123
select round(123.456, 3) from dual; 回传 123.456
21、动态执行SQL 语句
*    EXECUTE IMMEDIATE 'select ts_name_new from yan.ts_users_reform t where ts_id=:vts_id'
            INTO   sts_name
            USING nts_id;(变量赋值)
22、Union vs Union All ====Intersect vs Minus
*UNION在进行表链接后会筛选掉重复的记录
*在查询中会遇到 UNION ALL,它的用法和union一样,只不过union含有distinct的功能,它会把两张表了重复的记录去掉,而union all不会,所以从效率 上,union all 会高一点,但在实际中用到的并不是很多
*************************************************************************8
*ntersect和Minus的操作和Union基本一致,这里一起总结一下:
*Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
*Union All,对两个结果集进行并集操作,包括重复行,不进行排序;
*Intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
*Minus,对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。

可以在最后一个结果集中指定Order by子句改变排序方式。
23、Exists

24、ALL_USERS vs DBA_USERS vs USER_USERS
*Related Views
*DBA_USERS describes all users of the database, and contains more columns than ALL_USERS.
*USER_USERS describes the current user, and contains more columns than ALL_USERS.
*ALL_USERS lists all users of the database visible to the current user. This view does not describe the users (see the related views).
25、INITCAP 将第一个字母转换成大写
26、select * from tb for update 、select  * from tb, td for update of tb.field1(只锁定tb 这个表)
*关于NOWAIT(如果一定要用FOR UPDATE,我更建议加上NOWAIT)
*如果加了for update后 该语句用来锁定特定的行(如果有where子句,就是满足where条件的那些行)。当这些行被锁定后,其他会话可以选择这些行,但不 能更改或删除这些行,直到该语句的事务被commit语句或rollback语句结束为止。
因为FOR   UPDATE子句获得了锁,所以COMMIT将释放这些锁。当锁释放了,该游标就无效了。
27、Sotre procedure/Function diff
*function 与 procedure 的比较
--都可以通过使用out参数返回一个以上的值
--当返回多个值时,用procedure较好
--当返回一个值时,用function较好
--function可以在sql语句中调用,而procedure则不可
28、跳转loop----->>>>continue               终止loop------>>return
29、Oracle中,单独申明一个Varchar2类型的字段field1,它定义的长度应为 <=32767
        如果在表(或者是视图)中定义一个类型为Varchar2的列column1,它的最大长度不能超过4000.

30、函数LENGTHB这个方法不能对Clob的字段进行操作,如果想获取Clob字段的长度应用函数DBMS_LOB.getlenght(CLOB)
32、In oracle. & is a key word. if using it.you should use ascii as  chr(39)
33、Set table’s column datatype :usage>>ALTER TABLE
wbts_tmp MODIFY
(
STATUS varchar2(1) not null
)
34、Pls get the first five places  via sql :YOU NEED USE RANK  FUNCTION
*SELECT * FROM
( SELECT RANK() OVER(PARTION  BY GENDER  BY GRADE)  RK,
ST.* FROM TS_STUDENT ST) 
  WHERE RK <=5;

*row_number() 按序分配序列,如: 1, 2 ,3 ,4 ,5
*rank() 并列排名会占取下一个名次,如: 1, 2, 2, 4, 5
*dense_rank() 并列名次不会占取下一名次,如:1, 2, 2, 3, 4, 5
35、Unlock a user account
*Command : ALTER USER username ACCOUNT UNLOCK;
36、 Make sure the output words can display in command window, you should use below command:
*SET SERVEROUTPUT ON
37、If you wann to get millisecond you should  use SYSTIMESTAMP not the SYSDATE
*MILLISECOND FORMAT PATTERN: .FF  e.g: YYYY/MM/DD HH24:MI:SS.FF
38、Startup the listener
*lsnrctl startup listener
39、According the condition to insert records to difference table
*eg:insert all when
  (account_name = 'A') then  into quixpct.wbts_tmp
  (account_name,STATUS)
values
  (account_name || '>>A','N')
else into quixpct.wbts_tmp(account_name,STATUS) values(account_name || '>>AAA','Y') select account_name from quixpct.wbts_tmp;
0
0
分享到:
评论

相关推荐

    Oracle常见命令操作.zip

    以上就是压缩包中涉及的一些Oracle命令操作的知识点,理解和熟练应用这些知识能帮助数据库管理员更高效地管理Oracle数据库,解决日常遇到的问题。对于开发者来说,了解并掌握这些技巧能够提升数据库操作的效率和安全...

    Oracle 数据库实用操作技巧

    以上只是Oracle数据库实用操作技巧的部分内容,实际工作中DBA还需要不断学习和实践,以适应不断变化的业务需求和技术发展。通过深入理解和熟练运用这些技巧,DBA可以更有效地管理Oracle数据库,确保系统的稳定、高效...

    oracle实用笔记 命令 文档 pdf

    这份"Oracle实用笔记 命令 文档 PDF"很可能是对Oracle数据库管理、查询和维护的一份详细指南,涵盖了各种关键的Oracle命令和操作技巧。下面我们将深入探讨其中可能涉及的一些重要知识点。 1. **Oracle SQL语法**:...

    Oracle8i9i命令大全

    总的来说,这份“Oracle8i9i命令大全”是Oracle数据库初学者和有经验的专业人士的重要学习资源,它涵盖了从基础到进阶的各种主题,通过实例和技巧分享,帮助读者快速理解和应用Oracle数据库技术。无论你是DBA、...

    Mysql与Oracle常用命令比较

    ### MySQL与Oracle常用命令比较详解 #### 一、概述 本文档旨在对比MySQL与Oracle数据库管理系统中的常用命令,为数据库管理员或开发人员提供一个清晰的参考指南。通过本指南,读者可以更好地理解这两种数据库系统...

    Oracle 导入导出命令集.rar

    总的来说,"Oracle 导入导出命令集"这个资料包含的命令和技巧对于任何Oracle DBA或开发者来说都是宝贵的资源,它可以帮助他们更有效地管理和维护数据库。通过学习和掌握这些命令,用户能够更好地应对各种数据迁移和...

    Oracle数据库备份和恢复的命令

    ### Oracle数据库备份与恢复的关键知识点 #### 一、Oracle数据库备份流程详解 ...通过上述步骤,您可以较为系统地了解Oracle数据库备份与恢复的基本流程和技术要点,从而更好地管理和保护您的数据库资源。

    ORACLE的命令及操作

    本资料包主要涵盖了Oracle数据库的命令操作和常用概念,包括SQL语法、数据对象、并发处理、触发器、存储过程、事务处理、视图以及简化SQL语法等内容,非常适合初学者和进阶者学习。 首先,`ORACLE 常用的SQL语法和...

    oracle备份脚本命令

    Oracle数据库是企业级广泛使用的数据库管理系统,为了保证数据的安全性和可恢复性,定期进行数据库备份至关重要。...同时,配合使用Oracle的闪回技术和数据泵导出/导入功能,可以构建更全面的数据保护方案。

    oracle及sql命令大全

    SQL命令.pdf可能涵盖了这些基本的SQL操作,而orcal.txt可能包含Oracle特有的命令和管理技巧。例如,Oracle的备份与恢复、性能优化、数据导入导出、分布式数据库等高级特性,都是其强大功能的体现。 在实际工作中,...

    Oracle 命令速查V2(CHM格式)

    "Oracle命令速查V2"是一部非常实用的参考资料,对于学习和掌握Oracle操作有着极大的帮助。CHM(Compiled HTML Help)格式的文档通常包含了丰富的文本、图像和超链接,易于检索和查阅。 本书主要涵盖了以下几个关键...

    Oracle数据导入导出技巧之imp/exp命令

    ### Oracle数据导入导出技巧之imp/exp命令 #### 数据导入详解 ##### 1. 基础导入命令 - **基本语法**: ```shell imp 用户名/密码@数据库名 file=文件路径 ``` - **示例**: ```shell imp system/manager@...

    OracleRAC常用维护工具和命令

    在Oracle RAC中,最常用的命令是“srvctl”,它允许管理员管理和控制数据库服务、实例以及应用程序的集群资源。通过“srvctl”可以启动和停止数据库实例,也可以对服务进行故障转移、重新定位等操作。另外,“onsctl...

    oracle数据库基础命令总结(纯手工打造)

    Oracle数据库是世界上最流行的...总的来说,Oracle数据库基础命令涵盖了从概念理解到实际操作的各个方面,掌握这些命令是有效管理和操作Oracle数据库的关键。通过学习和实践,可以更好地理解和利用Oracle的强大功能。

    oracle命令大全.pdf

    在学习Oracle数据库时,掌握基本的命令和操作语句是至关重要的。以下是一些Oracle数据库的关键知识点: 1. **Oracle服务与监听器控制**: - `net start oracleservice`:启动Oracle服务,确保数据库实例能够运行。...

    Oracle数据库实用教程

    Oracle数据库实用教程主要涵盖了Oracle数据库系统...通过深入学习和实践这些Oracle数据库实用教程中的知识点,无论是数据库管理员还是开发人员,都能更好地理解和使用Oracle数据库,从而提升数据库系统的稳定性和效率。

    oracle操作手册.zip

    2. **SQL语言基础**:Oracle基于SQL(结构化查询语言)进行数据操作,手册会详细介绍SQL的语法,如DML(数据操纵语言)的INSERT、UPDATE、DELETE命令,以及DDL(数据定义语言)的CREATE、ALTER和DROP用于创建、修改...

    oracle语法和命令大全

    Oracle数据库是全球广泛使用的大型...这个压缩包“oracle命令大全”应该包含了更详细的命令用法和示例,对于熟悉和掌握Oracle数据库系统大有裨益。建议读者根据个人需求逐步学习,不断实践,才能真正掌握Oracle的精髓。

    oracle语法及常用命令

    Oracle 语法及常用命令 Oracle 语法是关系型数据库管理系统的核心语言,用于管理和操作数据库。下面是 Oracle 语法及常用...通过学习 Oracle 语法及常用命令,可以更好地管理和操作数据库,提高工作效率和数据安全性。

    oracle命令大全及关于oracle 1000问 日志管理,表空间管理,表,索引等等等等

    本文将围绕"Oracle命令大全及关于Oracle 1000问"的主题,深入讲解日志管理、表空间管理、表操作和索引管理等关键知识点。 首先,日志管理在Oracle数据库中至关重要,因为它是数据恢复的基础。主要涉及Redo Logs和...

Global site tag (gtag.js) - Google Analytics