oracle--處理數(shù)據(jù)

處理數(shù)據(jù)

SQL 的類型

1.DML(data manipulation Language 數(shù)據(jù)操作語言): 
insert  update delete select

2.DDL(Data Definition Language 數(shù)據(jù)定義語言): 
create table,alter table,drop table,truncate table
create/drop view,sequence(序列),index,synonym(同義詞)

3.DCL(Data Control Language 數(shù)據(jù)控制語言): 
grant(授權(quán)) revoke(撤銷權(quán)限)

插入 insert:

插入空值:

隱式方式:在列名表中省略該列的值
insert into departments (department_id
                         department_name)
values      (30,'Purchasing');

顯式方式:在values子句中指定空值
insert into departments
values      (100,'Finance',null,null);

插入指定的值:

SQL> insert into emp(empno,ename,sal,deptno) values(1001,'Tom',3000,10);

已創(chuàng)建 1 行。

SQL> -- PreparedStatement pst = "insert into emp(empno,ename,sal,deptno) values(?,?,?,?)";
SQL> --地址符 &
&相當(dāng)于枷遂?

例:

SQL> insert into emp(empno,ename,sal,deptno) values(&empno,&ename,&sal,&deptno);
輸入 empno 的值:  1002
輸入 ename 的值:  'Mary'
輸入 sal 的值:  2000
輸入 deptno 的值:  30
原值    1: insert into emp(empno,ename,sal,deptno) values(&empno,&ename,&sal,&deptno)
新值    1: insert into emp(empno,ename,sal,deptno) values(1002,'Mary',2000,30)

已創(chuàng)建 1 行樱衷。

SQL> /
輸入 empno 的值:  1003
輸入 ename 的值:  'Mike'
輸入 sal 的值:  5000
輸入 deptno 的值:  20
原值    1: insert into emp(empno,ename,sal,deptno) values(&empno,&ename,&sal,&deptno)
新值    1: insert into emp(empno,ename,sal,deptno) values(1003,'Mike',5000,20)

已創(chuàng)建 1 行。

&可以應(yīng)用于多處:

代表一列:
SQL> select empno,ename,sal,&t
  2  from emp;
輸入 t 的值:  job
原值    1: select empno,ename,sal,&t
新值    1: select empno,ename,sal,job

代表一個表:
SQL> select * from &t;
輸入 t 的值:  dept
原值    1: select * from &t
新值    1: select * from dept

批處理:

SQL> create table emp10 as select * from emp where 1=2;

表已創(chuàng)建酒唉。

SQL> --一次性將emp中矩桂,所有10號部門的員工插入到emp10中
SQL> insert into emp10 select * from emp where deptno=10;

海量拷貝數(shù)據(jù):

1.數(shù)據(jù)泵(datapump) ---> plsql
2.SQL*Loader
3.(數(shù)據(jù)倉庫)外部表
4.可傳輸?shù)谋砜臻g

更新 update:

語法:

update table
set column=value[,column=value,...]
[where condition];

可以一次更新多條數(shù)據(jù)

使用where子句指定需要更新的數(shù)據(jù):

update employees
set department id=70
where employee_id=113;

如果省略where子句,則表中的所有數(shù)據(jù)都將被更新痪伦。

update copy_emp
set department_id=110;

在update語句中使用子查詢

更新114號員工的工作和工資使其與205號員工相同

update employees
set    job_id=(select job_id
               from employees
               where employee_id=205),
       salary=(select salary
               from employees
               where employee id=205)
where employee_id=114;

使更新基于另一個表中的數(shù)據(jù):

update copy_emp
set    department_id=(select department_id
                      from employees
                      where employee_id=100)
where job_id        =(select job_id
                      from employees
                      where employee_id=200);

刪除 delete:

delete [from] table 
[where condition];

使用where子句指定刪除的記錄:

delete from departments
where department_name='Finance';

如果省略where子句侄榴,則標(biāo)準(zhǔn)功能的全部數(shù)據(jù)將被刪除。

delete from copy_emp;

在delete中使用子查詢网沾,使刪除基于另一個表中的數(shù)據(jù)癞蚕。

delete from employees
where department_id=
                    (select department_id
                     from departments
                     where department_name like'%public%');

delete和truncate

區(qū)別:

1.delete逐條刪除;truncate先摧毀表辉哥,再重建
2.delete是DML(可以回滾)桦山,truncate是DDL(不可以回滾)(最根本的區(qū)別)
3.delete不會釋放空間 truncate會
4.delete可以閃回  truncate不可以
  (flashback)通過閃回 可以撤銷一個已經(jīng)提交了的操作
5.delete會產(chǎn)生碎片;truncate不會

碎片:

碎片.PNG

效率:

比較刪除5000條數(shù)據(jù)所需時間:delete更快

SQL> @d:\temp\testdelete.sql
SQL> select count(*) from testdelete;

  COUNT(*)                                                                      
----------                                                                      
      5000                                                                      
SQL> set timing on
SQL> delete from testdelete;
已用時間:  00: 00: 00.06
SQL> set timing off
SQL> drop table testdelete purge;
SQL> @d:\temp\testdelete.sql
SQL> select count(*) from testdelete;

  COUNT(*)                                                                      
----------                                                                      
      5000                                                                      
SQL> set timing on
SQL> truncate table testdelete;
已用時間:  00: 00: 00.15

undo數(shù)據(jù)(還原數(shù)據(jù))

事務(wù)

事務(wù)的標(biāo)志:

1.起始標(biāo)志:事務(wù)中第一條DML語句
2.結(jié)束標(biāo)志:提交: 顯式 commit
                 隱式 正常退出(exit)醋旦,DDL(隱含了提交功能)恒水,DCL
           回滾: 顯式 rollback
                 隱式 非正常退出,掉電饲齐,宕機

commit和rollback語句的優(yōu)點:

1.確保數(shù)據(jù)完整新
2.數(shù)據(jù)改變被提交之前預(yù)覽
3.將邏輯上相關(guān)的操作分組

控制事務(wù):

控制事務(wù).PNG

回滾到保存點:

使用savepoint語句在當(dāng)前事務(wù)中創(chuàng)建保存點钉凌。
使用rollback to savepoint語句回滾到創(chuàng)建的保存點。

SQL> create table testsavepoint
  2  (tid number, tname varchar2(20));
SQL> set feedback on
SQL> insert into testsavepoint values(1,'Tom');

已創(chuàng)建 1 行捂人。

SQL> insert into testsavepoint values(2,'Mary');

已創(chuàng)建 1 行御雕。

SQL> --定義保存點
SQL> savepoint a;

保存點已創(chuàng)建矢沿。

SQL> select * from testsavepoint;

       TID TNAME                                                                
---------- --------------------                                                 
         1 Tom                                                                  
         2 Mary                                                                 

已選擇 2 行。

SQL> insert into testsavepoint values(3,'Maake');

已創(chuàng)建 1 行饮笛。

SQL> select * from testsavepoint;

       TID TNAME                                                                
---------- --------------------                                                 
         1 Tom                                                                  
         2 Mary                                                                 
         3 Maake                                                                

已選擇 3 行咨察。

SQL> rollback to savepoint a;

回退已完成。

SQL> select * from testsavepoint;

       TID TNAME                                                                
---------- --------------------                                                 
         1 Tom                                                                  
         2 Mary                                                                 

已選擇 2 行福青。

oracle中事務(wù)的隔離級別:
1.read commited(默認)
2.serializable
3.read only(oracle獨有的)

SQL> set transaction read only;

事務(wù)處理集摄狱。

SQL> select * from testsavepoint;

       TID TNAME                                                                
---------- --------------------                                                 
         1 Tom                                                                  
         2 Mary                                                                 

已選擇 2 行。

SQL>  insert into testsavepoint values(3,'Maake');
 insert into testsavepoint values(3,'Maake')
             *
第 1 行出現(xiàn)錯誤: 
ORA-01456: 不能在 READ ONLY 事務(wù)處理中執(zhí)行插入/刪除/更新操作
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末无午,一起剝皮案震驚了整個濱河市媒役,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宪迟,老刑警劉巖酣衷,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異次泽,居然都是意外死亡穿仪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門意荤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啊片,“玉大人,你說我怎么就攤上這事玖像∽瞎龋” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵捐寥,是天一觀的道長笤昨。 經(jīng)常有香客問我,道長握恳,這世上最難降的妖魔是什么瞒窒? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮乡洼,結(jié)果婚禮上根竿,老公的妹妹穿的比我還像新娘。我一直安慰自己就珠,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布醒颖。 她就那樣靜靜地躺著妻怎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪泞歉。 梳的紋絲不亂的頭發(fā)上逼侦,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天匿辩,我揣著相機與錄音,去河邊找鬼榛丢。 笑死铲球,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晰赞。 我是一名探鬼主播稼病,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掖鱼!你這毒婦竟也來了然走?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤戏挡,失蹤者是張志新(化名)和其女友劉穎芍瑞,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體褐墅,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡拆檬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了妥凳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竟贯。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖猾封,靈堂內(nèi)的尸體忽然破棺而出澄耍,到底是詐尸還是另有隱情,我是刑警寧澤晌缘,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布齐莲,位于F島的核電站,受9級特大地震影響磷箕,放射性物質(zhì)發(fā)生泄漏选酗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一岳枷、第九天 我趴在偏房一處隱蔽的房頂上張望芒填。 院中可真熱鬧,春花似錦空繁、人聲如沸殿衰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闷祥。三九已至,卻和暖如春傲诵,著一層夾襖步出監(jiān)牢的瞬間凯砍,已是汗流浹背箱硕。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留悟衩,地道東北人剧罩。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像座泳,于是被迫代替她去往敵國和親惠昔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 1. 簡介 1.1 什么是 MyBatis 钳榨? MyBatis 是支持定制化 SQL舰罚、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,465評論 0 4
  • 前言 讀《sql必知必會 第四版》隨手做的筆記,寫的比較亂薛耻,可讀性并不好营罢,讀的是中文版,翻譯過來的感覺有點怪怪的饼齿。...
    _老徐_閱讀 626評論 0 0
  • MySQL技術(shù)內(nèi)幕:InnoDB存儲引擎(第2版) 姜承堯 第1章 MySQL體系結(jié)構(gòu)和存儲引擎 >> 在上述例子...
    沉默劍士閱讀 7,398評論 0 16
  • 早上給爸媽打電話饲漾,想提醒下寄到家里的芒果趕緊趁著新鮮吃,別放著放著皮都黃了再吃就不好吃了缕溉。 是媽媽接的電話考传,提醒完...
    簡約Dr閱讀 349評論 0 0
  • 允之雨后 祁瑾醉 【一】 我近日是頗見聰慧了,在蘭沂這樣的地方竟能培植出芙蓉花证鸥。雖然那芙蓉是將開未開的僚楞,但秋昀延已...
    祁瑾醉閱讀 357評論 3 3