OCP課程基礎(chǔ)總結(jié)一

基本命令
PLSQL
在菜單help--support Info中可以看到 
1-TNS File的配置路徑 D:\app\administrator\product\11.2.0\client_1\Network\Admin\tnsnames.ora
orcl = 
  (DESCRIPTION = 
      (ADDRESS_LIST  =
    (ADDRESS = (PROTOCOL  = TCP) (HOST =10.8.1.1) (PORT=1521)
  )
   (CONNECT_DATA = 
      (SERVICE_NAME = orcl)
 )
 )
2-安裝plsql后還需要安裝oracle的客戶(hù)端配置tns,才可以用plsql登陸
3-固定tool--windows list的方法是贡避,在window--save layout 
su  - oracle 
sqlplus / as sysdba
開(kāi)啟:startup mount;  關(guān)閉:shutdown  immediate;
sqlplus / as sysdba ---------以sys登陸          超級(jí)用戶(hù)(sysdba)
alter user 用戶(hù)名 account unlock; --------- 解除鎖定(必須帶“;”號(hào))
alter user 用戶(hù)名 identified 密碼; -------------修改密碼
alter database open; 開(kāi)啟數(shù)據(jù)庫(kù)操作
alter user scott account unlock;
alter user scott identified by oracle_4U 
conn scott/oracle_4U;
show parameter name; 查看實(shí)例名稱(chēng) 
lsnrctl start;  登陸linux服務(wù)器開(kāi)啟監(jiān)聽(tīng)
lsnrctl status;  查看監(jiān)聽(tīng)狀態(tài)
在PLSQL Developer這款工具里自帶有查看sql歷史的快捷鍵:ctrl+E
oracle有三個(gè)默認(rèn)的用戶(hù)名和密碼~
1.用戶(hù)名:sys密碼:change_on_install
2.用戶(hù)名:system密碼:manager
3.用戶(hù)名:scott密碼:tiger

基本的select查詢(xún)語(yǔ)句
select * from ename,(sal+200)*1.2 as salnew from emp; 通過(guò)別名
select * from emp where sal between 2000 and 3000; 通過(guò)between和and
select * from emp where sal in (2000,3000,5000); 通過(guò)in 鎖定范圍信息
select ename,sal from emp where ename like 'A%';  模式匹配
select ename,sal from emp where ename like '_A%'; like的模式匹配
select * from emp where comm is null;  使用null 條件
select * from emp where comm is not null; 使用null 條件
select ename,sal,deptno form emp where sal >1500 or ename like '%A%' or 
deptno in(20,30); 使用or運(yùn)算符
select ename,sal from emp order by sal; 使用order by 子句可對(duì)檢索進(jìn)行排序,ASC 升序(默認(rèn)是升序)  DESC 降序 
select ename,sal from emp order by sal desc; 降序來(lái)排列
select ename,sal,deptno from emp order by 3,2; 通過(guò)第三行闪朱,第二行來(lái)排序順序
select  distinct deptno from emp; 使用distinct來(lái)去重 
select  count(distinct deptno) as new  from emp;
select deptno,job,avg(sal) from emp group bu deptno,job order by deptno; 分組并且按照deptno進(jìn)行相關(guān)的排序


基本函數(shù)查詢(xún)語(yǔ)句
select  lower('SQL COURSER') from dual; 將大寫(xiě)轉(zhuǎn)換為小寫(xiě)
select upper('sql courser') from dual;          將小寫(xiě)轉(zhuǎn)換為大寫(xiě)
select initcap('SQL Course') from dual;   將每個(gè)字母的第一個(gè)字母變成大寫(xiě)
select round(123.45678,2) test from dual;  取小數(shù)點(diǎn)后兩位
select sum(sal),avg(sal),min(sal),max(sal) from emp;  總和最大平均最小
select count(*)  from emp; 查看所有的emp的數(shù)量大小 
select count(comm)  from emp; 查看emp中comm的個(gè)數(shù)是多少
條件查詢(xún)語(yǔ)句
1-使用 case when 來(lái)判斷刷選
select ename,deptno,sal case deptno when 10 then sal*1.1 when 20 then sal*1.2 else  sal end newsal from emp;   newsal作為新的資金儲(chǔ)存  
2-使用 where 或者使用 having:   
WHERE語(yǔ)句在GROUP BY語(yǔ)句之前薛匪;SQL會(huì)在分組之前計(jì)算WHERE語(yǔ)句皇帮。   
HAVING語(yǔ)句在GROUP BY語(yǔ)句之后;SQL會(huì)在分組之后計(jì)算HAVING語(yǔ)句蛋辈。
select deptno,job,max(sal) from emp group by deptno,job having max(sal) > 2000 order by max(sal) 
select deptno,job,max(sal) from emp where deptno=30 group by deptno,job;

使用聯(lián)接顯示多個(gè)表中的數(shù)據(jù)
內(nèi)聯(lián)接
自然連接是在兩張表中尋找那些數(shù)據(jù)類(lèi)型和列名都相同的字段,
然后自動(dòng)地將他們連接起來(lái)将谊,并返回所有符合條件按的結(jié)果
select * from emp;
select * from dept;
oracle使用using關(guān)鍵字
sql/92標(biāo)準(zhǔn)可以使用using關(guān)鍵字來(lái)簡(jiǎn)化連接查詢(xún)冷溶,但是只是在查詢(xún)滿(mǎn)足下面兩個(gè)條件時(shí),才能使
用using關(guān)鍵字進(jìn)行簡(jiǎn)化尊浓。
1.查詢(xún)必須是等值連接逞频。
2.等值連接中的列必須具有相同的名稱(chēng)和數(shù)據(jù)類(lèi)型。
select  ename,deptno from dept natural join emp;
select ename,deptno from dept join emp using(deptno);
在兩個(gè)表聯(lián)接時(shí)才用on的栋齿,所以在一個(gè)表的時(shí)候苗胀,就剩下where跟having比較了。
select e.ename,e.sal,d.deptno from emp e join dept d on (e.deptno=d.deptno)
select w.enam,m.ename from emp w join emp m on(w.mgr=m.empno);
外聯(lián)接
Oracle  外連接(OUTER JOIN)包括以下:
左外連接(左邊的表不加限制)
右外連接(右邊的表不加限制)
全外連接(左右兩表都不加限制)
create table deptnew as select * from emp;
insert into empnew(ename,deptno) values('HANFEI',50)
select e.ename,e.deptno from empnew e left join deptnew1 d on(e.deptno=d.deptno) ;左聯(lián)接 左表empnew的值不變匹配右表合適的
select e.ename,e.deptno from empnew e right join deptnew d on(e.deptno=d.deptno); 右聯(lián)接 右表deptnew的值不變匹配左表合適的
全聯(lián)接 full join 
select e.ename,e.deptno,d.dname from empnew e  full  join deptnew d on(e.deptno=d.deptno); 全聯(lián)接 
笛卡爾積  交叉聯(lián)接 列數(shù)不變瓦堵,行數(shù)相乘
select e.ename,d.deptno from dept d cross join emp e; 
使用子查詢(xún)來(lái)解決查詢(xún)
執(zhí)行單行子查詢(xún)·
select ename,sal from emp where sal>=(select sal from emp where ename='SCOTT');
select  ename,sal from emp where sal>=(select avg(sal) from emp);
select ename,sal,deptno from emp where sal>=(select avg(sal) from emp)  and deptno=(select deptno from emp where ename='SCOTT');
select deptno,min(sal) from emp group by deptno having min(sal)>(select min(sal) from emp where deptno=30);
 
使用子查詢(xún)來(lái)解決查詢(xún)
  • 定義子查詢(xún)
  • 了解子查詢(xún)的類(lèi)型
  • 編寫(xiě)單行和多行子查詢(xún)
使用any運(yùn)算符
>any大于查詢(xún)出來(lái)的任一返回值(大于最小值)
<any小于查詢(xún)出來(lái)的任一返回值(小于最大值)
=any和in相同
<>any和基协!=any相同,即返回不等于查詢(xún)?nèi)我恢?select ename,sal,deptno from emp where sal > any(select sal from emp where deptno=30);
select ename,sal,deptno from emp where sal < any(select sal from emp where deptno=30);
>all大于查詢(xún)出來(lái)的最大返回值(大于最大值)
<ally小于查詢(xún)出來(lái)的最小返回值(小于最小值)
=all等于查詢(xún)結(jié)果中的所有值
<>和菇用!=不等于查詢(xún)結(jié)果中的所有值
select ename,sal,deptno from emp where sal<all(select sal from emp where deptno=30);
select ename,sal,deptno from emp where sal>all(select sal from emp where deptno=30);
select e.name from emp e where e.empno not in (select m.empno from emp m);
使用集合運(yùn)算符
  • 描述集合運(yùn)算符
  • 使用集合運(yùn)算符將多個(gè)查詢(xún)組成一個(gè)查詢(xún)
  • 控制返回行的順序
create table dept1 as select * from dept;
create table dept2(dno number(2),dnm varchar2(14),address varchar2(13));
insert into dept1 values(50,'TEACH','SHANCHAT')
Insert into dept2(dno,dnm,address)  select deptno,dname,loc from dept;
insert into dept2 values(60,'sale','beijing')
select * from dept1
使用Union 和 Union all 集合運(yùn)算符
Union:對(duì)兩個(gè)結(jié)果集進(jìn)行并集操作澜驮,不包括重復(fù)行,同時(shí)進(jìn)行默認(rèn)規(guī)則的排序惋鸥;
Union All:對(duì)兩個(gè)結(jié)果集進(jìn)行并集操作杂穷,包括重復(fù)行,不進(jìn)行排序卦绣;
select deptno,dname from dept1 union select dno,dname from dept2;
select deptno,dname from dept1 union all select  dno,dnm from dept2;
使用intersect運(yùn)算符
UNION 是聯(lián)集耐量,而 INTERSECT 是交集
select deptno,dname from dept1 intersect select dno,dnm from dept2;
使用minus模式是差集合的模式 
select deptno,dname from dept1 minus select dno,dnm from dept2;
select deptno,dname,loc from dept1 minus select dno,dnm,to_char(null)
from dept2;
處理數(shù)據(jù)
  • 在表中插入行
  • 更新表中的行
  • 從表中刪除行
  • 控制事務(wù)處理
drop table  表名;
drop table  commodity滤港;
注意:
    1.用drop刪除表數(shù)據(jù)廊蜒,不但會(huì)刪除表中的數(shù)據(jù),連表結(jié)構(gòu)也被刪除了溅漾!

truncate table 表名劲藐;
truncate  table commodity;
注意:
    1.用truncate刪除表數(shù)據(jù)樟凄,只是刪除表中的數(shù)據(jù)聘芜,表結(jié)構(gòu)不會(huì)被刪除!
    2.刪除整個(gè)表的數(shù)據(jù)時(shí),過(guò)程是系統(tǒng)一次性刪除數(shù)據(jù),效率比較高
    3.truncate刪除釋放空間

delete  表名缝龄;
delete  commodity汰现;
注意:
    1.用delete刪除表數(shù)據(jù)挂谍,只是刪除表中的數(shù)據(jù),表結(jié)構(gòu)不會(huì)被刪除瞎饲!
    2.雖然也是刪除整個(gè)表的數(shù)據(jù),但是過(guò)程是系統(tǒng)一行一行地刪,效率比truncate低
    3.delete刪除是不釋放空間的

區(qū)別:
TRUNCATE 只能對(duì)TABLE口叙;    
DELETE可以是table和view

create table deptnew as select * from dept;
select * from deptnew;
insert into deptnew values(50,'TEACH,'SH');
insert into deptnew(deptno,loc,dname) values(60,'BJ','SALE');
insert into deptnew(deptno,dname) values(70,'abc')  帶有空值的行或者是
insert into deptnew(deptno,dname,loc) values(80,'xyz',null) 或者這種方法
insert into empnew(ename,hiredate,sal) values('HANFEI',sysdate,2500);
從其他表中復(fù)制行
create table d30(name char(20),sal int); 表名為d30,列為name和sal 類(lèi)型為char和int
insert into d30(name,sal) select ename,sal from emp where deptno=30;
更改表中的數(shù)據(jù)
update empnew  set sal=3000 where ename='SCOTT'; 注意區(qū)分大小寫(xiě)才可以
update empnew set deptno=(select deptno from empnew where ename='SCOTT'),sal=(select sal from empnew where ename='SCOTT') where ename='HANFEI'
select * from d30;
delete from d30 where sal=1250; 從表中刪除行
delete d30 刪除所有的行 
detele empnew where deptno=(selete deptno from empnew where ename='SCOTT');
selete * from empnew;
事務(wù)處理
使用plsql 中增刪改嗅战,涉及到數(shù)據(jù)的操作妄田,如果通過(guò)SQL window進(jìn)行操作的,一定要加上commit;
才可以真正的寫(xiě)到庫(kù)里面
通過(guò) command windows 來(lái)進(jìn)行操作 
create table test as select * from dept;
select * from test;
commit;
delete test  where deptno=40;
select * from test;
rollback;
select * from test;
commit;  
可以看到之前刪除的表又恢復(fù)回來(lái)了
或者設(shè)立 savepoint點(diǎn)進(jìn)行恢復(fù)
delete test where deptno=40;
select * from test;
savepoint a;
delete test where deptno=30;
select * from test;
savepoint b;
rollback to a;
select * from test;
數(shù)據(jù)庫(kù)備份
  • 從物理與邏輯的角度來(lái)分類(lèi):
從物理與邏輯的驮捍,備份可以分為物理備份和邏輯備份疟呐。
物理備份:對(duì)數(shù)據(jù)庫(kù)操作系統(tǒng)的物理文件(數(shù)據(jù)文件,控制文件和日志文件)的備份东且。物理備份又可以分為脫機(jī)備份(冷備份)和聯(lián)機(jī)備份(熱備份)启具,前者是在關(guān)閉數(shù)據(jù)庫(kù)的時(shí)候進(jìn)行的,后者是以歸檔日志的方式對(duì)運(yùn)行的數(shù)據(jù)庫(kù)進(jìn)行備份珊泳÷撤耄可以使用oracle的恢復(fù)管理器(RMAN)或操作系統(tǒng)命令進(jìn)行數(shù)據(jù)庫(kù)的物理備份。
邏輯備份:對(duì)數(shù)據(jù)庫(kù)邏輯組件(如表和存儲(chǔ)過(guò)程等數(shù)據(jù)庫(kù)對(duì)象)的備份色查。邏輯備份的手段很多薯演,如傳統(tǒng)的EXP,數(shù)據(jù)泵(EXPDP)秧了,數(shù)據(jù)庫(kù)閃回技術(shù)等第三方工具涣仿,都可以進(jìn)行數(shù)據(jù)庫(kù)的邏輯備份
  • 從數(shù)據(jù)庫(kù)的備份角度分類(lèi):
從數(shù)據(jù)庫(kù)的備份角度,備份可以分為完全備份和增量備份和差異備份
完全備份:每次對(duì)數(shù)據(jù)庫(kù)進(jìn)行完整備份示惊,當(dāng)發(fā)生數(shù)據(jù)丟失的災(zāi)難時(shí)好港,完全備份無(wú)需依賴(lài)其他信息即可實(shí)現(xiàn)100%的數(shù)據(jù)恢復(fù),其恢復(fù)時(shí)間最短且操作最方便米罚。
增量備份:只有那些在上次完全備份或增量備份后被修改的文件才會(huì)被備份钧汹。優(yōu)點(diǎn)是備份數(shù)據(jù)量小,需要的時(shí)間短录择,缺點(diǎn)是恢復(fù)的時(shí)候需要依賴(lài)以前備份記錄拔莱,出問(wèn)題的風(fēng)險(xiǎn)較大。
差異備份:備份那些自從上次完全備份之后被修改過(guò)的文件隘竭。從差異備份中恢復(fù)數(shù)據(jù)的時(shí)間較短塘秦,因此只需要兩份數(shù)據(jù)---最后一次完整備份和最后一次差異備份,缺點(diǎn)是每次備份需要的時(shí)間較長(zhǎng)动看。
  • 備份方式
1尊剔、Rman(物理備份):針對(duì) 數(shù)據(jù)庫(kù),表空間菱皆,數(shù)據(jù)文件须误,數(shù)據(jù)塊挨稿,這種方案?jìng)浞莸乃俣群苈MǔT趥浞輸?shù)據(jù)時(shí)候不建議備份在線(xiàn)日志文件京痢,其他文件都可以備份
2奶甘、exp,expdp(邏輯備份):針對(duì) 用戶(hù),數(shù)據(jù)庫(kù)對(duì)象(表祭椰,分區(qū)...)臭家,這種備份方案對(duì)數(shù)據(jù)的完整性保證不是很好
  • 備份命令
1-rman
一、首先做數(shù)據(jù)庫(kù)的歸檔操作(只需歸檔一次):
1方淤、sqlplus sys/密碼 as sysdba; 
2钉赁、關(guān)閉數(shù)據(jù)庫(kù),開(kāi)啟成mount模式: 
shutdown immediate; 
startup mount; 
3臣淤、開(kāi)啟日志歸檔,并且開(kāi)庫(kù)后啟用自動(dòng)歸檔: 
alter database archivelog; 
alter database open; 
alter system archive log start; 
4窃爷、可以查看歸檔路徑:show parameter DB_RECOVERY_FILE_DEST; 
5邑蒋、查看歸檔狀態(tài):archive log list 
6、歸檔狀態(tài)中archivelog:有enable就說(shuō)明設(shè)置成功 
7按厘、Exit医吊;退出sys模式 
8、默認(rèn)的存檔空間是2G逮京; 
查看存檔空間大星涮谩:show parameter db_recovery_file_dest; 
修改大小:alter system set db_recovery_file_dest_size=100G; 
二懒棉、注意:已經(jīng)設(shè)置好歸檔后每次備份從這里開(kāi)始草描。 
Rman; 
connect target sys/密碼 
backup database; 
2-export
備份:export  用戶(hù)名/密碼 file=用戶(hù)名.dmp  導(dǎo)出該用戶(hù)下的所有表
恢復(fù): import  用戶(hù)名/密碼 file=用戶(hù)名.dmp full=y(表示全部導(dǎo)入)
 import  用戶(hù)名/密碼 file=用戶(hù)名.dmp tables=tt(表示導(dǎo)入tt表)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末策严,一起剝皮案震驚了整個(gè)濱河市穗慕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌妻导,老刑警劉巖逛绵,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異倔韭,居然都是意外死亡术浪,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)寿酌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)胰苏,“玉大人,你說(shuō)我怎么就攤上這事醇疼〉” “怎么了妓美?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)鲤孵。 經(jīng)常有香客問(wèn)我壶栋,道長(zhǎng),這世上最難降的妖魔是什么普监? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任贵试,我火速辦了婚禮,結(jié)果婚禮上凯正,老公的妹妹穿的比我還像新娘毙玻。我一直安慰自己,他們只是感情好廊散,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布桑滩。 她就那樣靜靜地躺著,像睡著了一般允睹。 火紅的嫁衣襯著肌膚如雪运准。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天缭受,我揣著相機(jī)與錄音胁澳,去河邊找鬼。 笑死米者,一個(gè)胖子當(dāng)著我的面吹牛韭畸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蔓搞,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼胰丁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了喂分?” 一聲冷哼從身側(cè)響起隘马,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎妻顶,沒(méi)想到半個(gè)月后酸员,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡讳嘱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年幔嗦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沥潭。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡邀泉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情汇恤,我是刑警寧澤庞钢,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站因谎,受9級(jí)特大地震影響基括,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜财岔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一风皿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧匠璧,春花似錦桐款、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至酿雪,卻和暖如春遏暴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背执虹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工拓挥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唠梨,地道東北人袋励。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像当叭,于是被迫代替她去往敵國(guó)和親茬故。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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