设为首页 收藏本站
查看: 1315|回复: 0

[经验分享] Oracle SQL语言应用基础

[复制链接]

尚未签到

发表于 2018-9-6 09:01:37 | 显示全部楼层 |阅读模式
  数据操纵
  主要是对表或视图进行插入(insert),修改(update),删除(delete)操作.
  分组统计查询
  使用聚合函数需要注意的事项:
  1.count(*)统计所有的记录数,count(字段名)字段值为null时列不统计
  2.聚合函数的出现顺序
  3.统计不重复的行信息distinct
  [* 字符函数 *]
  1.字符串连接:concat(ch1,ch2)
  返回字符串ch1与字符串ch2连接的字符串
  如:
  select concat('hello ','world!') from dual;   //hello world!
  或
  select 'hello '||'world!' from dual;   //hello world!
  2.字符串首字母大写
  initcap(char) :将字符串char中每个单词的首字母大写,其他字母小写
  如: select initcap('hello,world') from dual ;//Hello,World 可以使用任何分隔符,进行分隔
  3.字符索引位置:instr(ch1,ch2,[m[,n]])
  返回指定字符串ch2在字符串ch1中的位置,m起始搜索位置,n表示ch2在ch1出现的次数
  如:
  select * from emp where instr(ename,'C')>0 ;//从1开始找
  select * from emp where instr(ename,'c')=2 ;//查询出ename下标为2为'C'的员工
  4.计算字符串的长度:length(char)
  5.字符的大小写转换:
  lower(char):把字符串char转换为小写
  upper(char):把字符串char转换为大写
  6.替换字符串:replace(ch1,ch2,ch3)
  把字符串ch1中的字符串ch2替换成字符串ch3
  如:select replace(sal,sal,'*****') from emp ;//把emp表中的员工的工资替换为*****
  7.截取字符串:substr(ch,起始位置,截取多少位)
  如:select substr('hello world',6,5) from dual ;//world
  注:下标是从1开始的
  8.去掉字符串空格
  trim(char):去除两边的空格
  ltrim(char,[ch]):去掉字符串左空格或去掉左边包含ch的字符串
  select ltrim('abcdef','abc') from dual ;-->def,去除char左边包含abc的字母
  rtrim(char,[ch]):去掉字符串右空格或去掉右边包含ch的字符串
  select rtrim('abcdef','abc') from dual ;-->abc,去除char左边包含def的字母
  9.instr(char1,char2,[m[,n]]) : 返回char2在char1中的位置,m表示起始索引位置,n表示cha2在char1出现的次数
  select instr('abcde','d') from dual ;//下标从1开始查找,返回d所在字符串的位置,返回4
  instr(char,char,n)【在一个字符串中搜索另一个字符串,n>0从前向后,你3
  select instr('abcabc','c',-1) from dual;-->6
  10.chr(n):返回ASCII码值为n的字符
  select CHR('65') from dual ;//A
  ASCII(char):返回制定字符的ASCII码
  select ascii('A') from dual;-->65--返回A字符的ASCII码
  11.lpad(char1,n[,char2]):如果char1的长度大于n,那么返回char1左边n个字符,如果n大于char1的长度,使用
  char2在char1左边填充使其长度达到n
  select lpad('abc',2,'dd') from dual ;//ab--如果char1小于n的长度,直接输出n对应char1中的字符
  select lpad('abc',5,'dd') from dual ;//ddabc
  12.RPad(char1,n[,char2]):使用char2补充在char1右侧,使char1的长度达到n,如果n小于char1的长度,截掉后面多的部分
  select rpad('abc',5,'a') from dual;-->abcaa
  select rpad('abc',2) from dual;-->ab
  select length(rpad('abc',5)) from dual;-->5【右边加多了2个空格】
  13.Translate(char1,form,to):用to替换form,然后用form替换char1中匹配内容
  select translate('abc','ab','a') from dual;--->ac
  [日期函数]
  1.dbtimezone:返回数据库所在的时区
  select dbtimezone from dual ;
  2.extract(depart from date) :从日期date中获取depart对应部分的内容,depart的取值可以有:
  year,month,day,hour,minute,second,timezone_hour,timezone_minute
  timezone_region,timezone_abbr
  select extract(year from sysdate) from dual ;//2016
  3.add_months(d,n) :返回日期d添加n个月所对应的日期时间,n为正数表示d之后的日期,n为负数表示d之前的日期
  select add_months(sysdate,2) from dual ;//今天是2016-7-31日,加两个月,那么就是2016-9-30日
  select add_months(sysdate,-1) from dual ;//今天是2016-8-1日,-1代表上一个月,即是2016-7-1日
  4.next_day(日期,星期几):
  参数说明:
  星期几:可以使用,星期日-星期六
  可以使用1-7,1代表星期日
  select next_day(sysdate,'星期一') from dual ;
  select next_day(sysdate,'星期二') from dual ;
  select next_day(sysdate,'星期三') from dual ;
  select next_day(sysdate,'星期四') from dual ;
  select next_day(sysdate,'星期五') from dual ;
  select next_day(sysdate,'星期六') from dual ;
  select next_day(sysdate,'星期日') from dual ;
  select next_day(sysdate,1) from dual ;
  select next_day(sysdate,2) from dual ;
  select next_day(sysdate,3) from dual ;
  select next_day(sysdate,4) from dual ;
  select next_day(sysdate,5) from dual ;
  select next_day(sysdate,6) from dual ;
  select next_day(sysdate,7) from dual ;
  5.last_day(d):返回d所在月份的最后一天
  select last_day(sysdate) from dual ;//获取当前月份的最后一天
  6.trunc(d,[fmt]):返回截断日期时间数据
  select trunc(sysdate,'yy') from dual ;//返回当前年份的第一天
  select trunc(sysdate,'mm') from dual ;//返回当前月份的第一天
  7.months_between(d1,d2):返回d1和d2两个日期之间相差的月数
  select abs(months_between(sysdate,add_months(sysdate,3))) from dual ;
  假如今天是2016-8-1,加3个月,那么变成了2016-11-1,所以相差3个月
  8.round(d[,fmt]):返回日期d的四舍五入结果
  select round(sysdate) from dual ;//比如今天是2016-8-1日,今日已过半了,那么久是2016-8-2日了
  9.to_date('字符串格式',date日期格式):把字符串格式的日期转换为指定格式的date日期
  select to_date('2016-8-1','yyyy-mm-dd') from dual ;
  10.to_char(date,'字符串格式'):把date格式的日期,转换为指定格式的字符串日期
  select to_char(sysdate,'yyyy-mm-dd') from dual ;
  11.systimestamp:返回timesamp with time zone 类型的系统日期和时间
  select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ssxff6') from dual;
  注:xff6中的6表示保留多少位
  12.soundex(char):用来比较发音相同的字符串
  [数值函数]
  1.trunc(m[,n]):对m进行截取操作,不考虑四舍五入
  select trunc(108.123) from dual ;//-->108,当省略时,表示截取数值的整数部分
  select trunc(108.123,2) from dual ;//-->108.12,当n>0时,表示截取到小数点右边第n位
  select trunc(1082.123,-1) from dual ;//-->1080,当n0返回1;n=0返回0;n

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-563832-1-1.html 上篇帖子: 安装oracle时提示框显示不全 下篇帖子: oracle11g database control
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表