常用系统表和视图
具体的字段信息到Oracle官网去查看,上面的内容非常的详细:
NAME | TYPE | OWNER | Description |
---|
DBA_OBJECTS | VIEW | SYS | 当前数据库里的所有对象 |
USER_OBJECTS | VIEW | SYS | 当前用户拥有的所有对象(不显示OWNER字段) |
ALL_OBJECTS | VIEW | SYS | 当前用户能够访问的所有对象,注意object_type 和 owner字段 |
DBA_TABLES | VIEW | SYS | 当前数据库里所有的关系表 |
ALL_TABLES | VIEW | SYS | 当前用户可访问的关系表 |
USER_TABLES | VIEW | SYS | 当前用户拥有的关系表 |
ALL_TAB_COLUMNS | VIEW | SYS | 系统视图,存放表信息(数据库名 表名,表字段名,字段类型,字段长度,默认值等) |
DBA_TABLESPACES | VIEW | SYS | 数据库中的所有表空间 |
USER_TABLESPACES | VIEW | SYS | 当前用户可访问的表空间 |
DBA_INDEXES | VIEW | SYS | 当前数据库里所有的索引 |
ALL_INDEXES | VIEW | SYS | 当前用户可访问的索引 |
USER_INDEXES | VIEW | SYS | 当前用户拥有的索引,不显示OWNER字段 |
ALL_SOURCE | VIEW | SYS | 记录了该用户可访问的所有数据库对象的脚本信息(DDL) |
常用来查数据库问题的表:
NAME | Description | Use |
---|
V$SQLAREA | 列出了共享SQL区域的统计信息,同时为每个SQL字符串保存一条记录。它提供关于内存中、已解析并准备执行的SQL语句的统计信息 | |
V$SQL | 列出了没有group by操作的共享SQL区域的统计信息,同时为原始的SQL保存所有的child信息,正常情况下,当query执行完成,显示在V$SQL中的统计信息会被更新。但是,如果是一个运行长时间的查询,每5秒钟会更新一次。因此,通过这些信息可以很容易的发现那些正在长时间运行的SQL语句所造成的影响。 | 可以使用V$SQLAREA中的SQL_ID字段来查询执行的sql信息 |
重要字段说明
名字 | 字段 | 说明 |
---|
ALL_INDEXES | STATUS | 表示当前index的状态,VALID 或者 UNUSABLE |
ALL_SOURCE | TYPE | 对象类型,如FUNCTION, JAVA SOURCE, PACKAGE, PACKAGE BODY, PROCEDURE, TRIGGER, TYPE, TYPE BODY等 |
常用函数
注意,下面例子中的英文单引号显示成了中文单引号,需要修改。这个是csdn显示的问题。
数值型函数
函数名 | 描述 | 例子 | 结果 |
---|
ABS(n) | 返回绝对值 | select ABS(-100), ABS(‘100’) from dual; | 100 100 |
MOD(n2,n1) | 返回n2除以n1的余数 | select MOD(5,2) from dual; | 1 |
ROUND(n,integer) | 它将参数n四舍五入成第二个参数指定的形式的十进制数。参数integer要求是整数,如果不是整数,那么它就会被自动截取为整数部分 | | |
TRUNC | 数值n根据integer的值进行截取,和integer的正负有关;integer要求是整数,如果不是整数,那么它就会被自动截取为整数部分;当integer为正整数,表示n将截取到integer位小数,如果integer为负数,则截取到小数点左第integer位,被截取部分用0代替 | | |
字符函数
函数名 | 描述 | 例子 | 结果 |
---|
|| | 并置运算符 | select ‘abc’||‘def’ from dual; | abcdef |
lower | 将字符串全转为小写 | select lower(‘ABc’) from dual; | abc |
upper | 将字符串全转为大写 | select upper(‘ABc’) from dual; | ABC |
initcap | 将字符串的首字母全转为大写 | select upper(‘how are you’) from dual; | How Are You |
concat | 连接两个参数并返回 | select concat('How ', ‘are you’) from dual; | How are you |
substr | 对字符串进行截取,语法:substr(char, position, [substring_length]) 其中position为要截取字符串的开始位置,初始为1,如果该值为负,则表示从char的右边算起 | | |
length | 求字符串的长度 | select length(‘ABc’) from dual; | 3 |
instr | 在字符串中搜索另一个字符串 | select instr(‘ABc’, ‘B’) from dual; | 2 |
rpad | 结构rpad(expr1, n[, expr2]),在字符串expr1的右边用字符串expr2填充,直到整个字符串的长度为n为止 | | |
lpad | 结构lpad(expr1, n[, expr2]),在字符串expr1的左边用字符串expr2填充,直到整个字符串的长度为n为止 | | |
trim | LTRIM(X[,Y]), 去掉字符串X左边的Y字符串,Y不填时,默认的是字符串X左边去空格 | | |
replace | 结构REPLACE(X,old,new),查找字符串X中old字符,并利用new字符替换 | | |
日期型函数
函数名 | 描述 | 例子 | 结果 |
---|
sysdate | 系统日期和时间 | select sysdate from dual; | |
systimestamp | 该函数没有参数,可以得到系统的当前时间,该时间包含时区信息,精确到微秒 | select systimestamp from dual; | |
dbtimezone | 返回数据库时区 | select dbtimezone from dual; | |
last_day | 返回参数指定日期对应月份的最后一天 | select last_day(sysdate) from dual; | |
next_day | 返回参数指定日期的下一天 | select next_day(sysdate) from dual; | |
round | ROUND(r[,f])函数:将日期r按f的格式进行四舍五入。如果f不填,则四舍五入到最近的一天 | | |
trunc | TRUNC(r[,f])函数:将日期r按f的格式进行截取。如果f不填,则截取到当前的日期 | | |
控值处理函数
函数名 | 描述 | 例子 | 结果 |
---|
NVL(expr1, expr2) | 如果expr1的值为空值,则返回expr2的值,否则返回expr1的值(expr1和expr2的数据类型必须相同) | | |
NVL2(expr1, expr2, expr2) | 上面的增强版;如果expr1的值为空值,则返回expr3的值,否则返回expr2的值(expr1为任何数据类型;而表达式expr2和expr3为除LONG数据类型外的任何数据类型) | | |
NULLIF(expr1, expr2) | 比较两个表达式,如果二者相等,则返回NULL,否则返回第一个表达式的值。要求第一个表达式的值不能为NULL | | |
特殊格式日期函数
函数名 | 描述 | 例子 | 结果 |
---|
Y或YY或YYY | 年的最后一位,两位,三位 | select to_char(sysdate,‘YYY’) from dual; | 如果是2019年,则输出 019 |
DDD | 当年第几天 | select to_char(sysdate, ‘DDD’) from dual; | |
DD | 当月第几天 | select to_char(sysdate, ‘DD’) from dual; | |
D | 当周第几天 | select to_char(sysdate, ‘D’) from dual; | |
转换函数
函数名 | 描述 | 例子 | 结果 |
---|
to_char | 将数字型或者日期型转为字符型 | select to_char(sysdate, ‘YYYYMMDD’) from dual; | |
to_date | 将字符型数据转化为日期型数据 | select to_date(‘20180101’, ‘YYYYMMDD’) from dual; | |
to_number | to_number(x[,f]) 可以把字符串x按照格式f进行格式化转换为数值类型结果 | select to_number(‘123.74’,‘999.99’) from dual | |
注意:其中数值的格式f可以参考下表
参数 | 示例 | 说明 |
---|
9 | 999 | 指定位置返回数字 |
. | 99.9 | 指定小数点的位置 |
, | 99,9 | 指定位置返回一个逗号 |
$ | $99.9 | 指定开头返回一个美元符号 |
EEEE | 9.99EEEE | 指定科学计数法 |
逻辑判断函数
函数名 | 描述 | 例子 | 结果 |
---|
CASE | | | |
DECODE | 格式: DECODE(col|expression, search1,result1 [search2, result2, …,] [, default]) 与CASE有相同的功能,先判断search1的值是否和col或expression的值相等,如果相等,返回result1的值,否则判断search2,依次类推,如果都不相等,返回默认值default | | |