Oracle学习记录 六 又一本学习资料练习

学习过最简单的几种语句了,也安装过了几次数据库,本来在看那个高级编程的,但是还有一本入门的没看,就先看了再说,

多练习,熟悉掌握最基本的操作。

  1. 我以前登录的时候都是用conn回车,然后再输入密码,这个文档第一个就介绍了另一种登录方法。

conn scott/xx

这样就直接登录了,/前是用户名,/后是密码

conn sys/xx as sysdba

这个就是用管理员登录

2. 然后是把刚才输入的sql保存成文件用.sql后缀

select * from emp;

save /home/oracle/sql/1.sql;

这样就把这个文件保存到了这个路径下,打开1.sql就可以看到上面那个指令了。

如果想重新保存一个别的语句,还想在这个文件,就用替换

save /home/oracle/sql/1.sql replace;

如果要运行文件中的语句,可以这样

@ /home/oracle/sql/1.sql;

这样就运行了。

3. 然后是用户下的一些操作

显示当前用户

show user;

显示这个用户下所有表

select * from tab;

显示其中一个表的结构

describe emp;

或者

desc emp;

在这个用户下查看别的用户的表,前面要加上那个用户的名用点分开

select * from oe.orders;

当然了,你必须有查看别人表的权限才行,一般用sys来查看别的都可以,这里要是用scott就看不了。

4. 一些基本的练习,基于表scott.emp的

每个员工的奖金和工资的和

select ename, sal+comm from emp;

这里有一个问题,就是奖金为null的,得不出来结果。需要解决一下。

这里使用NVL()这个函数

select ename, nvl(sal+comm, sal) from emp;

这个意思就是如果sal+comm为null,则返回sal,如果不为null就返回sal+comm,如果都为null就返回null

要不说得多练习,多找东西看呢,现在又发现一种写法

select ename, sal+nvl(comm,0) from emp;    这是我在练习下一章的时候看到的,回来补充一下。

找出部门10中既不是‘MANAGER‘也不是‘CLERK‘,并且工资大于2000的员工

select ename from emp

where deptno=10 and job not in (‘MANAGER‘, ‘CLERK‘) and sal>2000;

找出什么工作有奖金

select distinct job from emp

where comm is not null and comm>0;

下面开始函数练习

单行函数 之 字符函数

这里要用到dual这个虚拟表了,相关介绍看这个

http://www.cnblogs.com/qiangqiang/archive/2010/10/15/1852229.html

select upper(‘aaaa‘) from dual;

把aaaa全变大写

比如:

select * from emp where ename=upper(‘smith‘);

相当于

select * from emp where ename=‘SMITH‘;

当然还有都变成小写的lower

select lower(‘FFF‘) from dual;

还有首字母大写,比如弄人名的时候

select initcap(ename) from emp;

下面又是那个连接的了concat和||

select concat(ename, job) from emp;

select (ename || ‘ ‘ || job) from emp;

计算字符串长度

select ename, length(ename) from emp;

输出子串

select ename, substr(ename, 2, 2) from emp;

替换字符

select ename, replace(ename, ‘S‘, ‘SS‘) from emp;

查找子串位置

select instr(‘hello world‘, ‘or‘) from emp;

结果是or所在的位置索引

还可以设置从哪开始查找,并且第几次找到的

select instr(‘hello world or and‘, ‘or‘, 6, 2) from emp;

这就是从第6个字符开始,第二次遇到的位置值

lpad和rpad是限制字符长度,并且不足的用特定符号补齐

select lpad(ename, 8, ‘*‘) from emp;

select rpad(ename, 8, ‘*‘) from emp;

去掉边上的头尾的空格trim ltrim rtrim

select trim(‘    ddd    ‘) from dual;

select ltrim(‘     ddd   ‘) from dual;

select rtrim(‘     ddd   ‘) from dual;

四舍五入函数round

select round(454,-2) from dual;

select round(454.3456, 2) from dual;

第二个参数是负,就是正数从第几位四舍五入

第二个参数是正,就是保留几们小数,后面四舍五入

求余mod

select mod(3,4) from dual;

select mod(4,3) from dual;

截断函数trunc和round相似,不过不进行四舍五入

select trunc(455666, -2) from dual;

select trunc(45.6666, 2) from dual;

http://database.51cto.com/art/201004/197703.htm

计算两个日期之间的月数months_between

select months_between(sysdate, hiredate) from emp;

这就可以用上上面的round了

select round(months_between(sysdate,hiredate),0) from emp;

http://blog.sina.com.cn/s/blog_63c5e4a80100o7pl.html

给日期加上月数,得到新的日期

select add_months(sysdate, 2) from dual;

select add_months(sysdate, -2) from dual;

http://blog.sina.com.cn/s/blog_4cbadf5a0100fafh.html

一个给定日期的下一个指定日期

select next_day(sysdate, ‘sunday‘) from dual;

当前日期的下一个周日

http://blog.csdn.net/chenjinlin1/article/details/6582761

不过这个文章里一个问题,他说什么返回的都是这周的周期几,那是因为就是要返回这个,并不是说要返回下一周的周几

得到月的最后一天last_day

select last_day(sysdate) from dual;

http://www.360sdn.com/oracle/2013/0615/401.html

时间: 2024-10-01 08:45:00

Oracle学习记录 六 又一本学习资料练习的相关文章

ASP.net中的AJAX学习记录六 无刷新的数据编辑(GridView和DetailsView结合实例)(转)

本篇博客是仿照书中实例,实现GridView和DetailsView结合无刷新的数据编辑效果,页面效果:当点击GridView1的行或换页时,都会引发DetailsView1的数据绑定显示至页面,同时当使用DetailsView1编辑.删除.添加时,也会引起GridView1的重新绑定,整体页面实现无刷新. 页面布局: 1.新建AJAX窗口,命名为:"NoRefreshEdit.aspx".要想实现页面无刷新编辑,就必须使用两个Updatepanel. 2.在NoRefreshEdit

[转]Oracle学习记录 九 Prc C学习

经过前面的了解,现在想用C语言来编程了,搜索了很多东西,后来决定先用Pro C来进行学习 在安装完Oracle数据库后就可以进行编程了,里面有一个命令proc就是对程序进行预编译的. 在这记一下,这是一个学习PL/SQL的网站,挺好的 http://www.cnblogs.com/huyong/archive/2012/07/30/2614563.html 创建用户是 create user xx identified by xx account unlock; grant connect, r

Oracle学习记录 九 Prc C学习

经过前面的了解,现在想用C语言来编程了,搜索了很多东西,后来决定先用Pro C来进行学习 在安装完Oracle数据库后就可以进行编程了,里面有一个命令proc就是对程序进行预编译的. 写一个test.pc然后 proc iname=test.pc oname=test.c 但是我这怎么也不行,一直出问题 后来我用 proc PARSE=NONE CODE=KR_C LINE=YES INAME=test.pc MODE=ORACLE DBMS=V8 UNSAFE_NULL=YES 这下才生成了t

Oracle学习记录 十 高级分组学习

group by cube 先执行一个语句看一下: select deptno, job, sum(sal) sal from emp group by cube(deptno, job) order by sal; 这个输出结果可以看到,有deptno为空的,有job为空的,还有都为空的,当然还有两者都有的. http://honeybinshun.iteye.com/blog/1474242 先对deptno,job进行group by 这个就是两者都有的那些项,然后对deptno进行gro

zeromq学习记录(六)C语言示例

考虑到官方的示例c语言是最多的 后面可能有些例子就使用VC编译C语言例子 /************************************************************** 技术博客 http://www.cnblogs.com/itdef/ 技术交流群 群号码:324164944 欢迎c c++ windows驱动爱好者 服务器程序员沟通交流 **************************************************************

TMS320F28035学习记录六

1.TMS320F28035的引脚绝对不能输入5V的电压,当引脚内部上拉或下拉时,会产生100uA的电流,这个参数在低功耗设计中会很有用,说明上拉下拉设置是不好随便来的.所有具有输出功能的引脚,其输出缓冲器驱动能力的典型值是4mA,这样是比51或M3内核的控制器的引脚驱动能力弱很多的. 2.TMS320F28035工作电压分为两部分:3.3V的Flash电压和1.8V的内核电压. 3.在AD采样过程中,当AD采样端口悬空时,采集进来的值是随机值,所以没有用到的AD端口建议接地. 4.影响ADC采

python学习记录六

返回函数 def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax def lazy_sum(*args): def sum(): ax = 0 for n in args: ax = ax + n return ax return sum 返回的不是求和结果,而实求和函数 >>> f = lazy_sum(1,3,5,7,9) >>> f <function lazy_sum.<loc

Ansible学习记录五:PlayBook学习

0.介绍 Playbooks 是 Ansible 管理配置.部署应用和编排的语言,可以使用 Playbooks 来描述你想在远程主机执行的策略或者执行的一组步骤过程等 类似于一组任务集,定义好像项目,组织结构,配置文件等信息,通过task将所要做的事情一步一步的组织在一起就是完整的Playbook 官方Demo资料:https://github.com/ansible/ansible-examples Playbooks是采用YMAL语言结构,基础语法请参考:http://docs.ansibl

KMP算法学习记录----Jake Boxer博文学习部分

如需转载,请保留本文链接. Jake Boxer 英文博文链接:http://jakeboxer.com/blog/2009/12/13/the-knuth-morris-pratt-algorithm-in-my-own-words/ 如何使用部分匹配表 1.作用:使用部分匹配表跳过那些已经做过的,旧的比较部分,从非重复匹配部分开始. 2.if(匹配表结果大于1) { 允许跳过的字符数量 = 匹配长度 - 部分匹配表[匹配长度-1]; } else { 允许跳过的字符数量 =  部分匹配表[匹