- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
20个案例掌握L SQL 基础
20个案例掌握PL/SQL 基础 有MS SQL基础,学习了两周多的PL/SQL,做了一些事例,但是很多信息在网上难以找到太多正确的答案,看到一篇又一篇的PL/SQL博文,案例方面的博文一篇又一篇的雷同,一看就是是Ctrl+C的复制.给一些博主留言希望得到解答,但是等到却是我也是复制来的,具体的没测试. 狠心之下,花了不少时间学习.做了一些例子,搞定之余,留下点供参考的例子. 阅读本篇博文之前,建议你学习一下基础,这是推荐的两个PL/SQL博客,
EricHu 胡勇:Oracle编程详解 传送门
liulun: ??PL/SQL学习笔记 索引帖 传送门?
测试:SQL Navigator 3+Oracle;远程连接
用以下案例来总结 PL/SQL相关知识:
1.将2010-12-06转换成Dec-06-2010的格式.
错解:
1 select to_char to_date 2010-12-06,yyyy-mm-dd ,mon-dd-yyyy from dual
PS:如果安装的系统默认语言为EN,那么这种执行结果正确,但是若是CN那就错了.所以,需要设置一下显示的语言才能保证Dec的出现.
正解:
1 select to_char to_date 2010-12-06,yyyy-mm-dd ,mon-dd-yyyy,NLS_DATE_LANGUAGE American from dual
2.PL/SQL中常用round函数,trunc函数,instr函数,substr函数的区别.正解:
1 round x,y 以小数点右边第y位四舍五入x;
2 trunc x,y 舍去小数点右边第y位以后的数字;
不要去看网上的所谓负数出现的解释,没什么用,以后出现的机会也不会存在
3 instr str1,str2,num Str1:原字符串,str2要查找的字符串,num第几次出现 返回要查找的str2在原字符串str1中第num次出现的位置,若不存在,则返回0;
4 substr str1,num1,num2 截取字符串str中 从num1位开始之后的num2个,num1为负数时反向
3.外连接与内连接:
正解:oracle外连接中左.右.全连接的区别 ?传送门
4.如何删除重复的记录.
错解:
1 select * from 表 where Id in select Id from 表 group by Id having count Id 1
PS:仔细看了一下代码,自己居然粗心地把所有重复记录数据的都按 id 删除了,但是是不是该保留一行呢?!
正解:
1 delete from table
2 where id in
3 4 select id from table
5 group by id
6 having count id 1
7 and rowid not in
8 9 select min rowid from table
10 --记住oracle中独有的标识列字段rowid,
11 --查询所有重复id但是不包括最小 min 的id,删除之;最大的效果同理.
12 --但是是不是还有个问题,id必须是递增而且是设为主键的,要不然,这道例子
13 14
5.返回今天星期几 5.1返回 星期五;5,2返回Friday 正解:
5.1
1 select to_char sysdate,day,nls_date_language simplified chinese from dual
5.2
1 select to_char sysdate,day,nls_date_language American from dual
PS:这个和和第一题类似.注意5.1的simplified chinese后面的3个单引号,因为是字符串.所以在
simplified chinese要加上单引号simplified chinese,但是因为两个单词中间有空格,再加上一层
simplified chinese,再有一个单引号就是转义符,变成了 simplified chinese.反正有点混乱,看我在论坛问的这个解答: /topics/座机电话号码6
6.返回当前月的最后一天.
?正解:
1 select last_day add_months sysdate,0 from dual
PS:如果把sysydate加法或者减法,结果就是求出加法或者减法之后的月份的最后一天
7.使用Oracle自带函数实现输入5.5,分别得到6和5;正解:
1 select round 5.5,0 from dual--得到6
2 select trunc 5.5,0 from
文档评论(0)