Oracle常见问题

  1. /+NOCACHE(TABLE)/
    当进行全表扫描时,CACHE提示能够将表的检索块放置在缓冲区缓存中最近最少列表LRU的最近使用端
    例如:
    SELECT /*+FULL(BSEMPMS) NOCAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;

  2. /+APPEND/
    直接插入到表的最后,可以提高速度.
    insert /+append/ into test1 select * from test4 ;

  3. /+NOAPPEND/
    通过在插入语句生存期内停止并行模式来启动常规插入.

insert /+noappend/ into test1 select * from test4 ;

ORACLE内部函数篇

  1. 如何得到字符串的第一个字符的ASCII值?
    ASCII(CHAR)
    SELECT ASCII('ABCDE') FROM DUAL;
    结果: 65

  2. 如何得到数值N指定的字符?
    CHR(N)
    SELECT CHR(68) FROM DUAL;
    结果: D

  3. 如何连接两个字符串?
    CONCAT(CHAR1,CHAR2)
    SELECT CONCAT('ABC','DEFGH') FROM DUAL;
    结果: 'ABCDEFGH'

  4. 如何将列中的数值代替为字符串?
    DECODE(CHAR,N1,CHAR1,N2,CHAR2...)
    SELECT DECODE(DAY,1,'SUN',2,'MON') FROM DUAL;

  5. INITCAP(CHAR)
    将字符串CHAR的第一个字符为大写,其余为小写.
    SELECT INITCAP('ABCDE') FROM DUAL;

  6. LENGTH(CHAR)
    取一字符串CHAR的长度.
    SELECT LENGTH('ABCDE') FROM DUAL;

  7. LOWER(CHAR)
    将字符串CHAR全部变为小写.
    SELECT LOWER('ABCDE') FROM DUAL;

  8. LPAD(CHAR1,N,CHAR2)
    用字符串CHAR2包括的字符左填CHAR1,使其长度为N.
    SELECT LPAD('ABCDEFG',10'123') FROM DUAL;
    结果: '123ABCDEFG'

  9. LTRIM(CHAR,SET)
    从字符串CHAR的左边移去字符串SET中的字符,直到第一个不是SET中的字符为止.
    SELECT ('CDEFG','CD') FROM DUAL;
    结果: 'EFG'

  10. NLS_INITCAP(CHAR)
    取字符CHAR的第一个字符大写,其余字符为小写.
    SELECT NLS_INITCAP('ABCDE') FROM DUAL;

  11. NLS_LOWER(CHAR)
    将字符串CHAR包括的字符全部小写.
    SELECT NLS_LOWER('AAAA') FROM DUAL;

  12. NLS_UPPER(CHAR)
    将字符串CHAR包括的字符全部大写.
    SELECT NLS_UPPER('AAAA') FROM DUAL;

  13. REPLACE(CHAR1,CHAR2,CHAR3)
    用字符串CHAR3代替每一个列值为CHAR2的列,其结果放在CHAR1中.
    SELECT REPLACE(EMP_NO,'123','456') FROM DUAL;

  14. RPAD(CHAR1,N,CHAR2)
    用字符串CHAR2右填字符串CHAR1,使其长度为N.
    SELECT RPAD('234',8,'0') FROM DUAL;

  15. RTRIM(CHAR,SET)
    移去字符串CHAR右边的字符串SET中的字符,直到最后一个不是SET中的字符为止.
    SELECT RTRIM('ABCDE','DE') FROM DUAL;

  16. SUBSTR(CHAR,M,N)
    得到字符串CHAR从M处开始的N个字符. 双字节字符,一个汉字为一个字符的.
    SELECT SUBSTR('ABCDE',2,3) FROM DUAL;

  17. SUBSTRB(CHAR,M,N)
    得到字符串CHAR从M处开始的N个字符. 双字节字符,一个汉字为二个字符的.
    SELECT SUBSTRB('ABCDE',2,3) FROM DUAL;

  18. TRANSLATE(CHAR1,CHAR2,CHAR3)
    将CHAR1中的CHAR2的部分用CHAR3代替.
    SELECT TRANSLATE('ABCDEFGH','DE','MN') FROM DUAL;

  19. UPPER(CHAR)
    将字符串CHAR全部为大写.

  20. ADD_MONTHS(D,N)
    将N个月增加到D日期.
    SELECT ADD_MONTHS(SYS2003-10-17,5) FROM DUAL;

  21. LAST_DAY(D)
    得到包含D日期的月份的最后的一天的日期.
    SELECT LAST_DAY(SYS2003-10-17) FROM DUAL;

  22. MONTH_BETWEEN(D1,D2)
    得到两个日期之间的月数.
    SELECT MONTH_BETWEEN(D1,D2) FROM DUAL;

  23. NEXT_DAY(D,CHAR)
    得到比日期D晚的由CHAR命名的第一个周日的日期.
    SELECT NEXT_DAY(TO_2003-10-17('2003/09/20'),'SATDAY') FROM DUAL;

  24. ROUNT(D,FMT)
    得到按指定的模式FMT舍入到的最进的日期.
    SELECT ROUNT('2003/09/20',MONTH) FROM DUAL;

  25. SYS2003-10-17
    得到当前系统的日期和时间.
    SELECT SYS2003-10-17 FROM DUAL;

  26. TO_CHAR(D,FMT)
    将日期D转换为FMT的字符串.
    SELECT TO_CHAR(SYS2003-10-17,'YYYY/MM/DD') FROM DUAL;

  27. TO_2003-10-17(CHAR,FMT)
    将字符串CHAR按FMT的格式转换为日期.
    SELECT TO_2003-10-17('2003/09/20','YYYY/MM/DD') FROM DUAL;

  28. ABS(N)
    得到N的绝对值.
    SELECT ABS(-6) FROM DUAL;

  29. CEIL(N)
    得到大于或等于N的最大整数.
    SELECT CEIL(5.6) FROM DUAL;

  30. COS(N)
    得到N的余弦值.
    SELECT COS(1) FROM DUAL;

  31. SIN(N)
    得到N的正弦值.
    SELECT SIN(1) FROM DUAL;

  32. COSH(N)
    得到N的双曲余弦值.
    SELECT COSH(1) FROM DUAL;

  33. EXP(N)
    得到N的E的N次幂.
    SELECT EXP(1) FROM DUAL;

  34. FLOOR(N)
    得到小于或等于N的最小整数.
    SELECT FLOOR(5.6) FROM DUAL;

  35. LN(N)
    得到N的自然对数.
    SELECT LN(1) FROM DUAL;

  36. LOG(M,N)
    得到以M为底N的对数.
    SELECT LOG(2,8) FROM DUAL;

  37. MOD(M,N)
    得到M除以N的余数.
    SELECT MOD(100,7) FROM DUAL;

  38. POWER(M,N)
    得到M的N幂.
    SELECT POWER(4,3) FROM DUAL;

  39. ROUND(N,M)
    将N舍入到小数点后M位.
    SELECT (78.87653,2) FROM DUAL;

  40. SIGN(N)
    当N<0时,得到-1;
    当N>0时,得到1;
    当N=0时,得到0;
    SELECT SIGN(99) FROM DUAL;

  41. SINH(N)
    得到N的双曲正弦值.
    SELECT SINH(1) FROM DUAL;

  42. SORT(N)
    得到N的平方根,N>=0
    SELECT SORT(9) FROM DUAL;

  43. TAN(N)
    得到N的正切值.
    SELECT TAN(0) FROM DUAL;

  44. TANH(N)
    得到N的双曲正切值.
    SELECT TANH(0) FROM DUAL;

  45. TRUNC(N,M)
    得到在M位截断的N的值.
    SELECT TRUNC(7.7788,2) FROM DUAL;

  46. COUNT()
    计算满足条件的记录数.
    SELECT COUNT(*) FROM TABLE1 WHERE COL1='AAA';

  47. MAX()
    对指定的列求最大值.
    SELECT MAX(COL1) FROM TABLE1;

  48. MIN()
    对指定的列求最小值.
    SELECT MIN(COL1) FROM TABLE1;

  49. AVG()
    对指定的列求平均值.
    SELECT AVG(COL1) FROM TABLE1;

  50. SUM()
    计算列的和.
    SELECT SUM(COL1) FROM DUAL;

  51. TO_NUMBER(CHAR)
    将字符转换为数值.
    SELECT TO_NUMBER('999') FROM DUAL;

ORACLE内部函数篇

  1. CHARTOROWID(CHAR)
    将包含外部语法ROWID的CHAR或VARCHAR2数值转换为内部的二进制语法,参数CHAR必须是包含外部语法的ROWID的18字符的字符串.
    SELECT NAME FROM BSEMPMS WHERE ROWID=CHARTOROWID('AAAAfZAABAAACp8AAO');
    NAME : LEIXUE

  2. CONVERT(CHAR,DEST_CHAR_SET,SOURCE_CHAR_SET)
    CONVERT将字符串CHAR中的字符从SOURCE_CHAR_SET标识的字符集转换为由DEST_CHAR_SET标识的字符集

SELECT CONVERT('GroB','US7ASCII','WE8HP') 'CONVERSION' FROM PUBS;
CONVERSION: Gross

  1. HEXTORAW(CHAR)
    将包含十六进制的CHAR转换为一个RAW数值.
    INSERT INTO BSEMPMS(RAW_COLUMN) SELECT HEXTORAW('7D') FROM TEST;

  2. RAWTOHEX(RAW)
    将RAW数值转换为一个包含十六进制的CHAR值.
    SELECT RAWTOHEX(RAW_COLUMN) 'CONVERSION' FROM BSEMPMS;
    CONVERSION: 7D

  3. ROWIDTOCHAR(ROWID)
    将一个ROWID数值转换为VARCHAR2数据类型.
    SELECT ROWID FROM BSEMPMS WHERE ROWIDTOCHAR(ROWID) LIKE '%BR1AAB%';

  4. TO_MULTI_BYTE(CHAR)
    将CHAR中的单字节转换为等价的多字节字符.
    SELECT TO_MULTI_BYTE('ASFDFD') FROM TEST;

  5. TO_SINGLE_BYTE(CHAR)
    将CHAR中的多字节转换为等价的单字节字符.
    SELECT TO_SINGLE_BYTE('ASFDFD') FROM TEST;

  6. TRANSLATE USING(TEXT USING {CHAR_CS|NCHAR_CS})
    将文本TEXT按照指定的转换方式转换成数据库字符集和民族字符集.
    其中TEXT是待转换的.
    USING CHAR_CS参数转换TEXT为数据库字符集,输出数据类型是VARCHAR2.
    USING NCHAR_CS参数转换TEXT为数据库字符集,输出数据类型是NVARCHAR2.
    CREATE TABLE TEST(CHAR_COL CHAR(20),NCHAR_COL NCHAR(20));
    INSERT INTO TEST VALUES('HI,N'BYE');
    SELECT * FROM TEST;

  7. DUMP(EXPR,RETURN_FORMAT,START_POSITION,LENGTH)
    返回一个包含数据类型代码,字节长度等内部表示信息的VARCHAR2值.返回结果是当前数据库字符集,数据类型按照下面规定的内部数据类型的编码作为一个数字进行返回:
    代码 数据类型
    0 VARCHAR2
    1 NUMBER
    8 LONG
    12 2003-10-17
    23 RAW
    24 LONG RAW
    69 ROWID
    96 CHAR
    106 MSSLABEL
    参数RETUEN_FORMAT指定按照下面的基数表示返回的数值.
    RETURN_FORMAT RESULT
    8 8进制
    10 10进制
    16 16进制
    17 单字符表示
    如果参数RETURN_FORMAT没有指定,则按十进制表示返回.
    如果参数START_POSITION和LENGTH被指定,则从START_POSITION开始的长为LENGTH的字节将被返回,缺省是返回整数表示.
    SELECT DUMP('ABC',1016) FROM TEST;
    select dump(ename,8,3,2) 'example' from emp where name='ccbzzp';

  8. empty_b|clob()
    返回一个空的LOB定位符,用在初始化LOB变量,或用在INSERT及UP2003-10-17声明去初始化LOB列或将其属性置为空.
    INSERT INTO TABLE1 VALUES(EMPTY_BLOB());
    UP2003-10-17 TABLE1 SET CLOB_COL=EMPTY_BLOB();

  9. BFILENAME('DIRECTORY','FILENAME')
    返回一个BFILE定位符,相关的二进制LOB物理文件在服务器的文件系统上.目录DIRECTORY是指在服务器的文件系统上实际搜索路径全名的别名. FILENAME是指服务器的文件系统的文件名.
    INSERT INTO FILE_TAB VALUES(BFILENAME('LOB_DIR','IMAGE1.GIF'));

  10. GREATEST(EXPR,EXPR,...)
    GREATEST返回参数的最大值.
    SELECT GREATEST('HARRY','HARRIOT','HAROLD') 'SAMPLE' FROM TABLE1;

  11. LEAST(EXPR,EXPR,...)
    LEAST返回参数的最小值.
    SELECT LEAST('HARRY','HARRIOT','HAROLD') 'SAMPLE' FROM TABLE1;

  12. NLS_CHARSET_DECL_LEN(BYTECNT,CSID)
    返回一个NCHAR列的宽度.
    SELECT NLS_CHARSET_DECL_LEN(200,NLS_CHARSET_ID('JA16EEFDFDF')) FROM TABLE1;

  13. NLS_CHARSET_ID(TEXT)
    返回相应于NLS字符集名字的NLS字符集ID数.
    SELECT NLS_CHARSET_D('JADFDFFDF') FROM TABLE1;

  14. NLS_CHARSET_NAME(N)
    返回相应于ID数N的NLS字符集名称.
    SELECT NLS_CHARSET_NAME(2) FROM TABLE1;

  15. NVL(EXPR1,EXPR2)
    若EXPR1是NULL,则返回EXPR2,否则返回EXPR1.
    SELECT NAME,NVL(TO_CHAR(COMM),'NOT APPLICATION') FROM TABLE1;

  16. UID
    返回唯一标识当前数据库用户的整数.
    SELECT UID FROM TABLE1;

  17. USER
    用VARCHAR2数据类型返回当前ORACLE用户的名称.
    SELECT USER,UID FROM TABLE1;

  18. USERENV(OPTION)
    返回当前的会话信息.
    OPTION='ISDBA'若当前是DBA角色,则为TRUE,否则FALSE.
    OPTION='LANGUAGE'返回数据库的字符集.
    OPTION='SESSIONID'为当前会话标识符.
    OPTION='ENTRYID'返回可审计的会话标识符.
    OPTION='LANG'返回会话语言名称的ISO简记.
    OPTION='INSTANCE'返回当前的实例.
    SELECT USERENV('LANGUAGE') FROM DUAL;

  19. VSIZE(EXPR)
    返回EXPR内部表示的字节数.
    SELECT NAME,VSIZE(NAME) FROM TABLE1;

  20. DEREF(E)
    返回参数E的对象引用.
    SELECT DEREF(C2) FROM TABLE1;

  21. REFTOHEX(R)
    将参数R转换为16进制.
    SELECT REFTOHEX(C2) FROM TABLE1;

  22. MAKE_REF(TABLE,KEY,KEY...)
    通过把给定的键作为主键来创建给定视图对象中一行的引用.
    CREATE TYPE T1 AS OBJECT(A NUMBER,B NUMBER);
    CREATE TABLE TB1(C1 NUMBER,C2 NUMBER,PRIMARY KEY(C1,C2));
    CREATE VIEW V1 OF T1 WITH OBJECT OID(A,B) AS SELECT * FROM TB1;
    SELECT MAKE_REF(V1,1,3) FROM PUBS;

  23. STDDEV(DISTINCT|ALL X)
    STDDEV给出一组行值的标准差.
    SELECT STDDEV(SALARY) AS EXAMPLE FROM EMPLOYEE;

  24. VARIANCE(DISTINCT|ALL X)
    VARIANCE返回一组行中所有VALUE的方差.
    SELECT VARIANCE(SALARY) AS EXAMPLE FROM EMPLOYEE;

9I管理的V$视图。

  1. V$ACCESS

显示当前被锁定的数据库中的对象及正在访问他们的会话.

  1. V$ACTIVE_INSTANCES

为当前安装的数据库中出现的所有实例建立从实例名到实例号的映射.

  1. V$ACTIVE_SESS_POOL_MTH

所有活动的会话池资源分配方法.

  1. V$AQ

当前数据库中的队列的统计量.

  1. V$ARCHIVE

归档所需的重做日志文件中的信息.

  1. V$ARCHIVE_DEST

当前实例的所有归档日志目的文件及它们的当前值,模式,状态.

  1. V$ARCHIVE_PROCESSES

为一个实例提供不同的ARCH进程状态的信息.

  1. V$ARCHIVE_LOG

控制文件中的归档日志信息.

  1. V$BACKUP

所有联机数据文件的备份状态.

  1. V$BACKUP_ASYNC_IO

从控制文件中显示备份集的信息.

  1. V$BACKUP_CORRUPTION

从控制文件中显示数据文件备份中有关损坏的信息.

  1. V$BACKUP_DATAFILE

从控制文件中显示备份数据文件和备份控制文件的信息.

  1. V$BACKUP_DEVICE

显示关于支持备份设备的信息.

  1. V$BACKUP_PIECE

从控制文件中显示备份块的信息.

  1. V$BACKUP_REDOLOG

从控制文件中显示关于备份集中归档日志的信息.

  1. V$BACKUP_SET

从控制文件中显示备份集的信息.

  1. V$BACKUP_SYNC_IO

从控制文件中显示备份集的信息.

  1. V$BGPROCESS

描述后台进程.

  1. V$BH

是9I的实时应用集群视图.为系统全局区中的每一个缓冲区给出了状态和探查次数.

  1. V$BSP

显示用在缓存中块服务器后台进程上的统计信息.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 如何将小表放入keep池中? alter table xxx storage(buffer_pool keep);...
    一点也不想吃辣阅读 331评论 0 2
  • ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year:...
    雨一流阅读 653评论 0 2
  • Oracle安装完成后的初始口令? internal/oracle sys/change_on_install s...
    一点也不想吃辣阅读 542评论 0 1
  • 1.简介 数据存储有哪些方式?电子表格,纸质文件,数据库。 那么究竟什么是关系型数据库? 目前对数据库的分类主要是...
    乔震阅读 1,699评论 0 2
  • H1 Title H2 Title H3 Title H4 Title Main body Content
    Chinese空腹阅读 351评论 0 0