實驗五 oracle高級數據查詢技術
實驗目的:
1、掌握日期型數據的操做技術
2、掌握層次查詢技術
3、理解情景查詢與翻譯查詢技術
4、瞭解統計查詢技術session
實驗內容:
1、日期型數據的操做
日期型數據的查詢顯示oracle
select hiredate from emp;ui
不一樣語言環境下日期型數據查詢結果的差別spa
alter session set nls_date_language='AMERICAN';翻譯
select hiredate from emp;code
alter session set nls_date_language='SIMPLIFIED CHINESE';orm
select hiredate from emp;字符串
SESSION 每創建一個鏈接connection會建立一個session會話string
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select hiredate from emp;
it
自由控制日期型數據的顯示格式的方法
select to_char(hiredate,'y,yyy/mm/dd hh24:mi:ss day')from emp;
日期型數據的使用方法
select to_char(to_date('19-06-15','rr-mm-dd'),'yyyy-mon-dd')as systime
from dual;
不一樣語言環境下添加記錄時日期型數據的使用方法
select to_char(sysdate,'yyyy-Mon-dd hh:mi:ss') as chinatime
from dual;
alter session set nls_date_language='AMERICAN';
select to_char(sysdate,'yyyy-Mon-dd hh:mi:ss') as Americantime
from dual;
與當前的語言環境一致的格式
select to_char(hiredate,'yyyy/mm//dd')
from emp;
自由控制不一樣形式的日期型數據在數據添加與修改中的應用
select to_char(hiredate,'yyyy/mm/dd'),
to_char(hiredate,'y,yyy-mon-dd'),
to_char(hiredate,'rrrr-RM-dd')
from emp;
避免使用2位年份,先用其餘方式處理使之成爲4位
select to_char(sysdate,'yyyy-mm-dd'),
to_char(to_date('97-10-03','yy-mm-dd'),'yyyy-mon-dd'),
to_char(to_date('02-05-07','yy-mm-dd'),'yyyy-mon-dd')
from dual;
避免使用文字化的月份
alter session set nls_date_language='AMERICAN';
select to_char(sysdate,'yyyy/Mon/dd hh24/mi/ss')as chinatime
from dual;
注意事項:2位數的年份會致使意外狀況
當前世紀前半葉後半葉的區別
2、層次查詢技術
深度遍歷的層次查詢
select fieldName
from tableName
start with rootCondition
connect by prior fieldname = fieldname
select empno,ename,mgr
from emp
start with empno=7839
connect by prior empno=mgr;
上級節點的字段 當前節點的字段
廣度遍歷的層次查詢
select * from emp;
select empno,ename,mgr
from emp
start with empno=7839
connect by prior empno=mgr
order by level;
造成環路的層次查詢
select empno,(lpad('',(level-1)*2)||ename)as ename,mgr,level
from emp
start with empno=7839
connect by prior empno=mgr;
再也不成爲一棵樹或森林了trees 圖 graph net
select empno,(lpad('',(level-1)*2)||ename)as ename,mgr,level
from emp
start with empno=7902
connect by prior mgr=empno;
3、情景查詢與翻譯查詢技術
情景查詢
decode(fieldName,orgValue,newValue)
select ename,sal,decode(deptno,'10','會計部','20','銷售部','30','研發部','其餘部門')
from emp;
select ename,sal,case deptno
when 10 then '會計部'
when 20 then '銷售部'
when 30 then '研發部'
else '其餘部門'
end
from emp;
翻譯查詢
translate(fieldName,beforeValue,afterValue)
SELECT empno,ename,decode(deptno,null,'未知')
FROM EMP
select translate(123.69,12345678,6901482735) transNum
from dual;
update emp set sal=translate(1500.9,1234567890,6912035487) where empno=7;
存儲的數據類型
數值型 int float number(6,2)
字符型 char varchar nchar nvarchar (varchar2)
日期型 datetime date timestamp
展現的數據類型(查詢結果的內容)
字符型
to_char(value,formatString) 將數值轉換成指定格式的字符串 0 9 , .
to_date(string,formatStirng 將字符串按指定格式轉換成日期型數據
NLS native language systemalter session set nls_language='%s' AMERICAN/SIMPLIFIED CHINESS