Oracle Function(函数) 和 同义词


   
   
  1. --__________________________________Function(函数)_______________________________
  2. /*dual 表 是Oracle 中一个虚拟的表,有一行一列,所有者是sys,可以被数据库中所有的用户使用
  3. 用户不得插入数据, 是使用此表选择系统变量或计算一个表达式的值*/
  4. --_________________________________转换函数(5)__________________
  5. --1.to_char(d|n [.fmt]): 用于将日期和数字按指定的格式转化为varchar2()类型的数据. d:日期 n:数字 fmt:日期或数字的格式
  6. select to_char( sysdate, 'yyyy-mm-dd') 格式日期 from dual;
  7. select to_char( sysdate, 'yyyy年mm月dd天') 格式日期 from dual;
  8. select to_char( 12.34567, '9999.99') 格式化数字 from dual; 12.35
  9. select to_char( 12.34567. 'L9999.99') 格式化数字 from dual; ¥12.35
  10. --2.to_date(char [,fmt]):将字符串转化为日期数据类型
  11. select to_date( '2011-4-8', 'yyyy-mm-dd') - to_date( '2011-4-10', 'yyyy-mm-dd') 日期差距 from dual; --->2
  12. --3.to_number(char);将包含数字的字符串转化为Number类型,从而实现运算
  13. select to_numner( '123')+ 2 求和 from dual; --->125
  14. select '123'+ 2 求和 from dual; --->125 {Oracle 可以对数字字符串自动进行隐式转换}
  15. --4.NVL: 将null值 替换为指定的值
  16. nvl(expr1,expr2): ===> expr1!=null ? expr1:expr2;
  17. NVL2(expr1,expr2,expr3):===> expr1!=null ? expr2:expr3; --->记得是NVL2
  18. --5.Decode:相当于 if; 将输入值与函数中的参数列表进行比较,根据输入值返回一个对应值。
  19. --语法: decode(input_value,value,result [,value,result,value,result] [,default_result]);
  20. update employees set salary=salary+ decode(deparment_id, 20, 100, 30, 80, 40, 120, 20); --->20 表示默认值 (找不到匹配的后)
  21. --表示 department_id==20 ? 100:(department_id==30? 80 : (department_id==40 ? 120 :20));
  22. --____________________________基本函数(6)_______________________
  23. --1 获取系统的时间
  24. select sysdate 当前系统的时间 from dual;
  25. --2 add_months(d,n):在制定日期上添加月数后的值 d:表示 要操作的日期 n:表示月数
  26. select add_months( sysdate, 1) 新的日期 Form dual; --返回 当前日期上月数+1后的日期
  27. --3 months_between(d1,d2):返回两个日期之间的月份数
  28. select sysdate from dual; ---返回 8-4月-11
  29. select months_between( '6-7月-11', sysdate) 相差的月份 from dual; --- 返回 2.62636789
  30. select floor(months_between( '6-7月-11', sysdate)) 相差的月份 from dual; --返回 2
  31. --4 last_Day(d):返回制定日期月份后的最有一天
  32. select sysdate 当前日期, last_day( sysdate) 当月最后一天 form dual;
  33. --5 next_day(d,day):返回指定下星期几的日期 d:制定的日期 day:一周内的第几天
  34. select sysdate 当前日期,next_day( sysdate, '星期五') 下个星期五是 from dual --返回系统日期本周星期五的日期
  35. --6 extract(fmt,from d):获取日期中指定特定部分
  36. --1 获取当前时间中的 年 月 日
  37. select sysdate, extract( year from sysdate) 年, extract( month from sysdate) 月, extract( day from sysdate)日 from dual; --> 12-4月-11 --- 2010 --- 4 ----12
  38. --2 在oracle 中日期是一个特殊的数字, 以天为单位;所以 可以进行 日期 + || - 数字=日期 日期-日期=数字
  39. select sysdate 当前日期, sysdate+ 1 日期加数字, sysdate -1 日期减数字, sysdate- to_date( '2011-7-6', 'yyyy-mm-dd') 日期减日期, floor( sysdate- to_date( '2011-7-6', 'yyyy-mm-dd')) 日期差距取整 from dual;
  40. --返回 8-4月-2011 9-4月-2011 7-4月-2011 2.62636789 2
  41. --______________________________数学函数(7)_________________________________
  42. --1.Abs:取绝对值
  43. select abs( -1) form dual; --->1
  44. --2.Ceil: 向上取整
  45. select ceil ( 1.33) from dual; --->2
  46. --3.Floor:向下取整
  47. select floor( 1.33) from dual; --->1
  48. --4.Power:求幂
  49. select power( 2, 3) from dual; --->8;
  50. --5.Mod:取余
  51. select mod( 10, 3) from dual; --->1
  52. --6.Round:四舍五入
  53. select round( 12.126, 2) from dual; --->12.13
  54. --7.Trunc:截断
  55. select trunc( 12.126, 2) from dual; --->12.12
  56. 三角函数 ....
  57. --_______________________字符函数(9)_____________________
  58. --1.Lower(c):小写转换
  59. select lower( 'SccE') from dual; ---> scce
  60. --2.Upper(c):大写转换
  61. select upper( 'scce') from dual; ---> SCCE
  62. --3.Ltrim(c1[,c2]): 删除c1 左侧所包含的c2 任何字符,遇到不属于c2中的字符时 返回剩下的字符(c2 省略 默认表示空格)left trim;
  63. select ltrim( ' adminscce') from dual; --> adminscce 如果 c2 不写 表示 去除空格(' ')
  64. select ltrim( 'adminscce', 'ad') from dual; --->minscce
  65. --4.Rtrim(c1[,c2]):删除c1 右侧所包含的c2 任何字符,遇到不属于c2中的字符时 返回剩下的字符(c2 省略 默认表示空格) right trim;
  66. select rtrim( 'adminscce ') from dual; --> adminscce 如果 c2 不写 表示 去除空格(' ')
  67. select rtrim( 'adminscce', 'scce') from dual; --->admin
  68. --5.Replace(c1,c2[,c3]):将c1中岀现c2都替换成c3;c3默认为空,如果c3为null,所有出现c2的地方都被删除,如果c2为null,则返回c1,如果c1为null,返回null
  69. select replace( 'a*b*', '*', '/') from dual; --->a/b/
  70. select replace( 'a*b*', '*') from dual; --->ab
  71. select replace( 'a*b*') from dual; ---> a*b*
  72. select replace() from dual; ---->null
  73. --6.Instr(c1,c2): 在c1中搜索c2首次出现的位置, 找不到 返回 "0"
  74. select instr( 'abcdbc', 'bc') from dual; --->2
  75. --7.Substr(c,m[,n]):返回c的子串,m是子串的开始位置,n是子串的长度,省略n则截取从m开始的所有子字符串
  76. select substr( 'scce', 2, 2) from dual; -->cc
  77. --8.Concat(c1,c2):连接字符串
  78. select concat( 'scc', 'e') from dual; --->scce
  79. --9.Length(c):返回字符串的长度
  80. select length( 'scce') form dual; --->4;



   
   
  1. ----------------------------------同义词 ---------------------------------------
  2. --1.方案同义词 :要权限 create synonym 或者 create any synonym
  3. grant create syonoym to scott;
  4. grant create any synonym to scott;
  5. --获得权限
  6. create [ or replace] synonym syn_dept for dept; --为dept 表创建同义词 syn_dept
  7. --2.公用同义词 :要权限 create pulic syonoym
  8. grant create public synonym to scott;
  9. create [ or replace] public synonym pubsyn_dept for dept; -- pubsyn_dept 为名字
  10. --3.方案同义词的使用
  11. --1.scott使用自己的
  12. select * from syn_dept;
  13. --2.hr 使用 scott用户 创建的同义词
  14. conn scott/tiger@scce;
  15. grant select on dept to hr; -- 要scott给hr 赋权限
  16. conn hr/tiger@scce; --自己登录后 拿着 scott的钥匙(方案) 开门后 查看资源
  17. select * from scott.syn_dept;
  18. --3 hr 为scoot用户中的资源创建 同义词 但是 必须要scott 给hr 权限 否则 创建了 使用 不了
  19. conn hr/tiger@scce;
  20. create or replace synonym syn_scott_dept for scott.dept; --为scoot用户的dept资源创建 同义词
  21. -- select * from syn_scott_dept; -->此时写会报错 没有权限反问 要下面 的操作
  22. conn scott/tiger@scce;
  23. grant select on dept to hr; --scott 给 hr 权限
  24. conn hr/tiger@scce;
  25. select * from syn_scott_dept; --此时才有用
  26. --4.公用同义词的使用 重要是要有权限 就 有了
  27. conn hr/tiger@scce;
  28. select * from pubsyn_dept;
  29. conn scott/tiger@scce;
  30. revoke select on dept from hr; --移除了 hr 的select 权限
  31. conn hr/tiger@scce;
  32. select * from pubsyn_dept; --报错没有 权限
  33. --5.删除方案同义词
  34. --1.scott 可以删除 自己的任何同义词
  35. drop synonym syn_dept;
  36. --2.scoot 要删除 别人中的方案同义词 必须要有 drop any synonym 权限
  37. conn sys/admin@scce;
  38. grant drop any synonym to scott;
  39. conn scott/tiger@scce;
  40. drop synonym syn_scott_dept; --syn_scott_dept 是 hr 创建的同义词
  41. --6.删除公用同义词 用户要有 drop public synonym 权限
  42. conn sys/admin@scce;
  43. grant drop public synonym to scott;
  44. conn scott/tiger@scce;
  45. drop public synonym pubsyn_dept; --- 删除 名为 pubsyn_dept 公用同义词
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值