oracle学习笔记-命令和函数

 以下是我这几天学习oracle的笔记,有些凌乱,整理出来,也算是个复习

 

命令符

使用格式

说明

示例

Desc

Desc 表名

显示表结构

Desc bk_bookinfo

Set line

Set line n

将屏幕的输出置为n个字符宽

Set line 100

L

L

显示sql缓冲区的内容

L

N

N text

N为在SQL缓冲区的语句行号

Text为替代出错的sql语句

2 from studentinfo

/

/

运行sql缓冲区的语句

/

n

n

把缓冲区第n行作为当前行

3

A

A text

text 增加到当前sql缓冲区后

A ,bookname

del

Del (n)

删除缓冲区第n行,无参数则删除当前行

Del 4

c

C /原文/新的正文

修改缓冲区中的sql语句

注意先用 n命令定位到当前行

C /tmp/dept

save

Save filepath

sql缓冲区语句存入指定文件

Save c:\1.sql

Get

get filepath

将脚本文件装载到sql缓冲区

Get c:\1.sql

Edit

Edit (filepath)

编辑脚本文件(缓冲区sql语句)

Edit edit c:\1.sql

@

@ filepath

直接运行脚本文件

@ c:\1.sql

 

1.导出oracle数据

 新建c:\test.sql 键入

   Set line 120

Set pagesize 10000

Set heading off

Spool c:\data.txt

Select bookID||’,’||bookname from bb_bookinfo;

Spool off

 sql> @ c:\test.sql

2.自动化导出数据

 新建 c:\auto.bat 键入

 Sqlplus /nolog @ 1.sql

 Exit

 注意这里sqlplus@命令必须在一行,我第一次没有执行找了半天,问题就出现在此

 C:\1.sql

 Set termout off

 connect scott/tiger@orcl-89

set line 120

set pagesize 1000

set heading off

set feedback off

spool c:\data.txt

select bookID||','||name from bk_bookinfo where rownum<100;

spool off

exit

 

函数名

用法

说明

示例

lower

Lower(列名|表达式)

把字符转换成小写

Lower(‘THIS IS’)

Upper

Upper (列名|表达式)

把字符转换成大写

Upper(‘this is’)

Initcap

Initcap (列名|表达式)

把每个字头一个字母大写

Initcap(‘this is test’)

concat

Concat(列名|表达式. 列名|表达式)

把第一个字符串和第二个字符串链接

Concat(‘a’,’b’)

substr

Substr(列名|表达式,m,[n])

返回指定字符

Substr(‘abc’,3,1)
结果是c

Instr

Instr(列名|字符串,’字符串’,[m],[n])

返回所给字符串的数字位
m 从第m个字符搜索 n 出现的次数mn默认为1

Instr(‘abcd’,’A’)

返回0
instr(‘abcd’,’b’)

返回2
说明字符串区分大小写

Length
注意无缩写len

Length(列名| 字符串)

返回表达式字符长度

Length(‘aabcde’)

ltrim

Ltrim(列名| 字符串)

去掉表达式左侧空格

Ltrim(‘ aaa’)

rtrim

Rtrim(列名|字符串)

去掉表达式右侧空格

Rtrim(‘aaa ’)

trim

Trim(列名|表达式)

去掉表达式两侧空格

Trim(‘ aaa ’)

Trim([leading|trailing|both]要去掉的字符 from 源字符串)

去掉表达式中的指定字符

Trim(‘?’ from ‘?aa?’) 结果aa

Trim(leading ‘?’ from ‘?aa?’); aa?
trim(trailing ‘?’ from ‘?aa?’); ?aa

round

Round(列名|表达式,n)

将表达式的数值四舍五入到小数点n

Round(168.88,1)

trunc

Trunc(列名|表达式,n)

将表达式的数值截取到小数点后n

Trunk(168.88,1)

mod

Mod(m,n)

m/n后的余数

Mod(6/7)

 

日期函数:

to_date(列名|字符串,[格式]

格式说明:
        Year:     
        yy two digits
两位年                显示值:07
        yyy three digits
三位年                显示值:007
        yyyy four digits
四位年                显示值:2007
           
        Month:     
        mm    number    
两位月              显示值:11
        mon    abbreviated
字符集表示        显示值:11,若是英文版,显示nov    
        month spelled out
字符集表示       显示值:11,若是英文版,显示november
         
        Day:     
        dd    number        
当月第几天        显示值:02
        ddd    number        
当年第几天        显示值:02
        dy    abbreviated
当周第几天简写    显示值:星期五,若是英文版,显示fri
        day    spelled out  
当周第几天全写 显示值:星期五,若是英文版,显示friday       
            
         Hour:
              hh    two digits 12
小时进制            显示值:01
              hh24 two digits 24
小时进制            显示值:13
             
        Minute:
              mi    two digits 60
进制                显示值:45
             
              Second:
              ss    two digits 60
进制                显示值:25
             
             
其它
              Q     digit        
季度                  显示值:4
              WW    digit        
当年第几周            显示值:44
              W    digit         
当月第几周            显示值:1

1. 日期和字符转换函数用法(to_date,to_char

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;   //日期转化为字符串  

select to_char(sysdate,'yyyy') as nowYear   from dual;   //获取时间的年  

select to_char(sysdate,'mm')    as nowMonth from dual;   //获取时间的月  

select to_char(sysdate,'dd')    as nowDay    from dual;   //获取时间的日  

select to_char(sysdate,'hh24') as nowHour   from dual;   //获取时间的时  

select to_char(sysdate,'mi')    as nowMinute from dual;   //获取时间的分  

select to_char(sysdate,'ss')    as nowSecond from dual;   //获取时间的秒

   

select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')    from dual

2求某天是星期几

select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;     

   星期一

3查找月份。

select months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;     

1

 

2Months_between(日期1,日期2)

   返回日期1和日期2之间的月数

   select months_between(

        to_date('2010-2-1','yyyy-mm-dd'),

        to_date('2010-3-1','yyyy-mm-dd')

        ) from dual;

 结果:-1

3.Add_months(日期,n)

   把n个月加到日期上

select add_months(sysdate,'1') from dual;

结果:2010-9-24 15:53:12

 

4.Next_day(日期,字符串)

返回下一个由字符串(星期几)指定的日期

select next_day(to_date('2010-2-1','yyyy-mm-dd'),'星期一') from dual;

结果:2010-2-8

注意:因为安装时中文的oracle 所以这里要用星期一

5Last_day(日期)

 返回该日期所在月份的最后一天

 select last_day(to_date('2010-2-1','yyyy-mm-dd')) from dual;

 结果:2010-2-28

6、to_char(日期,格式)

格式:

   Yyyy:完整的年份

   Year:年份的英文表示

MM:两位数表示月份

Month:月份完整的英文表示

Dy:用3个英文字符缩写表示星期几

Day: 星期几的完整英文表示

DD:几号的数字表示

select to_char(to_date('2010-2-1','yyyy-mm-dd'),'dy') from dual;

结果:星期一

select to_char(to_date('2010-2-1','yyyy-mm-dd'),'yyyy') from dual;

结果:2010

   select to_char(to_date('2010-2-1','yyyy-mm-dd'),'year') from dual;

   结果:twenty ten

   select to_char(to_date('2010-2-1','yyyy-mm-dd'),'month') from dual;

   结果:2

  

7To_char(数字,格式)

 格式:

   9:一位数字

   0:显示前导零

   $:显示美元符号

L: 显示本地货币符号

.:显示小数点

,:显示千位符

MI: 在数的右边显示减号

PR:把复数用尖括号括起来

select to_char(20,9) from dual;

结果:##

select to_char(2,9) from dual;

结果:2

select to_char(3434,9999.99) from dual;

结果:3434.00

select to_char(3434,9999.90) from dual;

结果:3434.0

select to_char(03434,'L99999.00') from dual;

结果:          3434.00

select to_char(03434,'L09999.00') from dual;

结果:         03434.00

select to_char(123,'009') from dual;

结果:123

select to_char(123,'00999') from dual;

结果:00123

select to_char(-123,'999PR') from dual;

结果:<123>

select to_char(-123,'999MI') from dual;

结果:123-

8To_number(字符串)

 

 

你可能感兴趣的:(oracle学习)