Oracle笔记(二)


SELECT 语句

SELECT子句中可以直接指定字段名,也可以嵌套使用

concat是连接符,返回两个字段的拼接。

SELECT concat(ename,sal) FROM emp_tzm;
SELECT concat(concat(ename ,':'),sal) FROM emp_tzm;

拼接字符串常使用“||"来连接,更简单

SELECT ename||':'||sal FROM emp;



LENGTH()函数查询字段串字符个数:

SELECT ENAME , LENGTH(ename) FROM emp;

DUAL:ORACLE中的伪表
在使用SELECT语句查询内容时语法要求FROM 子句后面必须要根一个表名,当我们查询的数据不来自热火和一张表时可以使用伪表,这样查询出来的记录只会有一条记录


将给定字符内容转化为全大写,全小写,首字母大写。

对于initcap而言,单子间可以只用空格分隔,那么每个单词瘦子母都会大写。

SELECT UPPER(‘hello world’) FROM DUAL;

TRIM 函数:
去掉字符串中左右两边连续重复的字符。

ltrim rtrim
单独取出字符串左面或右面的字符
SELECT ltrim ('esdeddsdesesdesliteee','dse')FROM dual;

取出左侧或右侧指定字符串中所有字符,
直到指定字符串中没有该字符为止。


lapd ,rpad函数,补位函数:
lpad(char1,len,char2)
其中char2必须是单一的一个字符,作用为:显示char1内容,要求显示len位,若不足则在左侧添加若干char2一大到该位数,若超过,则截取char1内容,只显示len位。

substr(str,m,n)
m:指定位置处从1开始,但也可以是0或者负数。
n:截取字符长度,不写则是截取到末尾,若超过可以截取的长度,则也截取到末尾。


rund 四舍五入,
SELECT round(45.678,2) FROM dual;45.68
SELECT round(45.678) FROM dual;46

trunc(n[,m])
截取数字m默认为0,与rund区别在于仅截取不做四舍五入
SELECT trunc(45.678) FROM dual;45
SELECT trunc(45.678,2) FROM dual;45.67

MOD
MOD(m,n):返回m除以n后的余数
SELECT ename,sal,MOD(sal, 1000) FROM emp_tzm ;

CEIL(n)与floor(n)其中n是数字,通常是小数。
ceil:返回大于给定数字的最小整数(向上取整)
floor:返回小于给定数字的最大整数(向下取整)

SELECT CEIL (45.6780)FROM DUAL;
SELECT FLOOR (45.678)FROM DUAL;

CEIL(45.6780)
-------------
           46

FLOOR(45.678)
-------------
           45


----------------------------------------------------------------------------------------------------------------
oracle日期操作:

CREATE TABLE STUDENT_TZM(
ID NUMBER(4),
NAME CHAR(20),
registerDate DATE DEFAULT SYSDATE
);

日期类型之间可以比较大小,时间晚的大,时间早的小。
日期之间可以做减法操作,作为相差的天数。日期可以减数字,等同与加减指定的天数。

SELECT SYSDATE+1 FROM DUAL;

SELECT ename,hiredate FROM emp_tzm WHERE hiredate>to_date('1981-01-01','yyyy-mm-dd');

to_char()函数
常用与将一个给定的日期按照给定的日期格式转换为字符串


测试RR指定的世纪

SELECT to_char( to_date ('95-12-21','rr-mm-dd'),'yyyy-mm-dd') FROM dual;
SELECT to_char( to_date ('49-12-21','rr-mm-dd'),'yyyy-mm-dd') FROM dual;

TO_CHAR(TO_DATE('95-12-21','RR-MM-DD'),'YYYY-MM-DD')
---------------------------------------------------------------------
1995-12-21                                          

TO_CHAR(TO_DATE('49-12-21','RR-MM-DD'),'YYYY-MM-DD')
----------------------------------------------------------------------
2049-12-21 

日期格式字符串中,除字母与符号外的其他字符都需要使用双引号扩起来。

SELECT to_char(sysdate,'yyyy"年"mm"月"dd')FROM dual;

LAST_DAY(date)
该函数返回给定日期所在月的最后一天:
SELECT LAST_DAY(SYSDATE) FROM DUAL;

SELECT LAST_DAY(HIREDATE) FROM EMP_TZM;


ADD_MONTHS(date,i)
对给定日期加上给定的月。
i可正可负,负数则是减去。
查看每个员工入职20周年纪念日:
SELECT ename,add_months(hiredate, 20*12) FROM emp_tzm;

MONTHS_BETWEEN(date1,date2)

-------------------------------------------------------------------------
NEXT_DAY (date , i)
返回给定日期最近的,还没有过的周几?
1表示周日,7表示周六
LEAST,GREATEST
变长参数,可以传入任意个参数,类型一致即可。
LEAST:返回参数中最小的
GREATEST:返回参数中最大的
SELECT LEAST (SYSDATE,TO_DATE('2008-10-10','yyyy-mm-dd')) FROM dual;

EXTRACT 函数
可以提取一个日期中指定时间分量对应的值:
SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL;
----------------------------------------------------------------------------

判断一个值是否为null不能使用“=”
而要使用 IS null。
判断非空用 IS NOT null

NULL与字符串拼接,等于什么也没做。
NULL与数字运算,结果还是NULL。

查看每个员工的收入(工资+奖金):


NVL(arg1,arg2)
 若arg1为NULL,则函数返回arg2的值,
否则返回arg1.
简单谁就是将NULL值替换男为一个非NULL值


查看员工的奖金情况,有奖金的显示"有奖金"没有奖金的显示“没有奖金”
SELECT ENAME ,SAL ,COMM,(SAL+NVL(COMM,0)) FROM EMP_TZM;



NVL2(arg1,arg2,arg3)
当arg1不为null时函数返回arg2,
当arg1为null时,返回arg3.

NVL后两个参数的类型不用与第一个一致。
只要后两个一致即可。

阅读更多
想对作者说点什么? 我来说一句

oracle笔记二--plsql 编程.txt

2009年08月12日 23KB 下载

oracle笔记总结

2011年06月23日 20KB 下载

Oracle 入门文档

2011年05月12日 62KB 下载

Oracle 入门文档2

2011年06月20日 122KB 下载

Oracle笔记Oracle笔记

2011年08月22日 147KB 下载

oracle学习笔记.docx

2010年08月25日 34KB 下载

oracle经典笔记

2018年01月11日 19.62MB 下载

Oracle 笔记.rar

2009年09月17日 27KB 下载

没有更多推荐了,返回首页

不良信息举报

Oracle笔记(二)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭