1.使用特定格式插入日期值
使用to_date函式
思考:如何插入列帶有日期的表,並按照年-月-日的格式插入?
insert into emp values (9998, 『小紅』, 『manager』,7782, 『1988-11-11』,78.9,55.33,10);
上面的日期寫入不對,正確的方式如下:
insert into emp values(9998,『小紅』,『manager』,7782,『11-11月-1988』,78.9,55.33,10);
或者使用 to_date函式:
insert into emp values(9998,『小紅2』,『manager』,7782,to_date(『1988-12-12』, 『yyyy-mm-dd』),78.9, 55.33, 10);
2.用子查詢更新和插入資料
update emp set (job,sal,comm)=(select job,sal,comm from emp where ename=『smith』) where
ename=『scott』;
3.提交事物
當執行使用commit語句可以提交事務。當執行了commit語句之後,會確認事務的變化,結束事務,刪除儲存點,釋放鎖,當使用commit語句結束事務之後,其它會話將可以檢視到事務變化後的跟新資料
4.唯讀事務
唯讀事務是指允許執行查詢的操作,而不允許執行任何其它dml操作的事務,使用唯讀事務可以確保使用者只能取得某時間點的資料。假定機票代售點每天18點開始統計今天的銷售情況,這時可以使用唯讀事務。在設定了唯讀事務後,但是唯讀事務將不會取得最新資料的變化,從而可以保證取得特定時間點的資料資訊
設定唯讀事務:
set transaction read only
5.字元函式
lower(char): 將字串轉化為小寫的格式
upper(char): 將字串轉化為大寫的格式
length(char): 返回字串的長度
substr(char, m, n): 取字串的子串
replace(char1, search_string, replace_string)
instr(char1, char2, [,n[,m]]) 取子串在字串的位置
6.數學函式
round(n, [m])
該函式用於執行四捨五入,如果省掉m,則四捨五入到整數; 如果m是正數,則四捨五入到小數點m位後。如果m是負數,則四捨五入到小數點的m位前
trunc(n,[m])
該函式用於擷取數字。如果省掉m,就截去小數部分,如果m是正數就擷取到小數點的m位後,如果m是負數,則擷取到小數的前m位
mod(m,n)
floor(n) 返回小於或等於n的最大整數
ceil(n) 返回大於或是等於n的最小整數
abs(n) 返回數字n的絕對值
exp(n) 返回e的n次冪
log(m,n) 返回對數值
7.日期函式
日期函式用於處理date型別的資料
預設情況下日期格式是 dd-mon-yy 即12-7月-78
(1) sysdate: 該函式返回系統時間
(2) add_months(d,n)
(3) last_day(d): 返回指定日期所在月份的最後一天
8.獲取當前時間
select sysdate from dual;
select * from emp where sysdate>add_months(hiredate, 8); //八個月前
select hiredate,ename from emp where last_day(hiredate)-2=hiredate;
9.轉換函式
轉換函式用於將資料型別從一種轉為另外一種,在某些情況下,oracle server允許值的資料型別和實際的不一樣,這時oracle server會隱含的轉化資料型別
比如:create table t1(id int);
insert into t1 values(『10』) —>這樣oracle會自動的將』10』 ---->10
create table t2 ( id varchar2(10) );
insert into t2 values(1); -->這樣oracle就會自動將1---> '1';
我們要說的是儘管oracle可以進行隱含的資料型別的轉換,但是它並不適用所有的情況,為了提高程式的可靠性,我們應該適用轉換函式進行轉換
to_char
你可以使用select ename,hiredate,sal from emp where deptno=10;
yy: 兩位數字的年份 2004—> 04
yyyy:四位數字的年份 2023年
mm: 兩位數字的月份 8月—>08
dd: 2位數字的天 30號—>30
hh24: 8點 —> 20
hh12: 8點 —> 08
mi, ss ----> 顯示分鐘\秒
9:顯示數字,並忽略前面0
0:顯示數字,如位數不足,則用0補充
.: 在指定位置顯示小數點
,: 在指定位置顯示逗號
$: 在數字前加美元
l: 在數字前加本地貨幣符號
c: 在數字前加國際貨幣符號
g: 在指定的位置顯示組分隔符
d: 在指定位置顯示小數點符號(.)
顯示2023年入職的所有員工
select * from emp where to_char(hiredate, 'yyyy')=1980
顯示所有12月份入職的員工
select * from emp where to_char(hiredate, 'mm')=12;
select ename,to_char(hiredate, 'yyyy-mm-dd hh24:mi:ss') from emp;
11.to_date
函式to_date用於將字串轉成date型別的資料
12.系統函式
sys_context
1)terminal:當前會話客戶所對應的終端的識別符號
2)language: 語言
3)db_name: 當前資料庫名稱
4)nls_date_format: 當前會話客戶所對應的日期格式
5)session_user: 當前會話客戶所對應的資料庫使用者名稱
6)current_schema: 當前會話客戶所對應的預設方案名
7)host: 返回資料庫所在主機的名稱
查使用那個資料庫?
select sys_context('userenv', 'db_name') from dual;
oracle基礎總結(四)
顯式轉換 to char date,format 按照指定的格式format把數字或日期型別的資料轉換成字串 格式 必須包含在單引號中而且大小寫敏感。可以包含任意的有效的日期格式。日期之間用逗號隔開。日期格式如下 yyyy 2004 year two thousand and four mm 02m...
Oracle常識基礎 四
動態sql oracle中的動態sql可以通過本地動態sql命令執行,也可以通過dbms sql程式包來執行。語法 execute immediate 動態sql語句字串 using 繫結輸入引數變數 引數值 錯誤處理 預定義異常 pl sql支援的預定義異常 異常 說明 access into n...
函式基礎(四) 遞迴函式
學過數學的可能多多少少聽過 遞迴 這個詞 那麼遞迴函式到底是怎麼個函式呢?老樣子,從需求找方法!我想要 100 2 結果繼續除2,直到結果為零,然後列印每一步的結果 怎麼寫呢?可以用迴圈!對!要的就是這種結果!但是,總有艮的 就想用函式來解決這個問題 甚至更過分的!還不想用迴圈!能做嗎?於是就有大傻...