Oracle DBA 教程学习笔记.docx
- 文档编号:11756045
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:51
- 大小:41.56KB
Oracle DBA 教程学习笔记.docx
《Oracle DBA 教程学习笔记.docx》由会员分享,可在线阅读,更多相关《Oracle DBA 教程学习笔记.docx(51页珍藏版)》请在冰豆网上搜索。
OracleDBA教程学习笔记
引言
云計算
云計算是分佈式處理、並行處理和網格計算的發展,或者說是這些計算機科學概念的商業實現.
云計算的基本原理是通過計算使計算分佈在大量的分佈式計算機上,而非本地計算機或遠程服務器中,企業數據中心的運行更將與互聯網相似,這使得企業能夠將資源切換到需要的應用上,根據需求訪問計算機和存儲設備.
云計算有哪些好處?
1.安全,云計算提供了最可靠、最安全的數據存儲中心,用戶不必擔心數據丟失、病毒入侵等麻煩.
2.方便,它對用戶端的設備要求最低,使用起來很方便.
3.數據共享,它可以輕鬆實現不同設備間的數據與應用共享.
4.無限可能,它為我們使用網絡提供了幾乎無限多的可能.
第三章基礎查詢
3.1入門語句
普通用戶連接:
connscott/tiger;
以下為解除SCOTT用戶鎖定語句.
ALTERUSERSCOTTACCOUNTUNLOCK;
GRANTCONNECT,RESOURCE,UNLIMITEDTABLESPACETOSCOTT;
超級管理員連接:
conn“sys/sysassysdba”;
Disconnect:
斷開連接;
Savec:
\1.txt把SQL存到文件;
Edc:
\1.txt編輯SQL語句;
@c:
\1.txt運行SQL語句;
Descemp:
描述emp結構;
SELECT*FROMtab:
查看該用戶下的所有對象;
Showuser:
顯示當前用戶;
如果在sys用戶下:
查詢SELECT*FROMemp;會報錯,原因:
emp屬於scott,所以此時必須使用:
SELECT*FROMscott.emp;
/運行上一條語句;
3.2SQL簡介
SQL(StructuredQueryLanguage)結構化查詢語言;
DML語句(數據操作語言)INSERT、UPDATE、DELETE、MERGE;
DDL語句(數據定義語言)CREATE、ALTER、DROP、TRANCATE;
DCL語句(數據控制語言)GRANT、REVOKE;
事務控制語句:
COMMIT、ROLLBACK、SAVEPOINT;
3.12模糊查詢Like
%表示零或多個字符;
_表示一個字符;
對於特殊符號可以使用Escape標示符來查找;
SELECT*FROMempWHEREENAMELIKE'%*_%'ESCAPE'*';
上面的ESCAPE表示*後面那個符號不當成特殊字符處理,就是查找普通的_符號.
第四章單行函數
4.1字符函數(CharacterFunctions)
ASCII:
SELECTASCII('Q')FROMDUAL;==>81
CHR:
SELECTCHR(67)||CHR(65)||CHR(84)FROMDUAL;==>CAT
CONCAT:
CONCAT('abc','defg')==>'abcdefg'
INITCAP:
INITCAP('HAMBURGERSBYTHEBILLIONSATMCDONALDS')
==>
'HamburgersByTheBillionsAtMcdonalds'
INSTR:
INSTR('bug-or-tv-character?
archie','a',1,2)==>15
LENGTH:
LENGTH('abcd')==>5
LOWER:
LOWER('BIGFATLETTERS')==>'bigfatletters'
LPAD:
LPAD('55',10,'0')==>'0000000055'
LTRIM:
LTRIM('abcabcccccILOVECHILI','abc')==>'ILOVECHILI'
*NLSSORT:
SELECT*FROMtestORDERBYname;
NAME
---------------
Gaardiner
Gaberd
SELECT*FROMtest
ORDERBYNLSSORT(name,'NLS_SORT=XDanish');
NAME
---------------
Gaberd
Gaardiner
*NLS_INITCAP:
NLS_INITCAP('ijsland','NLS_SORT=XDutch')==>IJsland
*NLS_LOWER:
NLS_LOWER('CITTA''','NLS_SORT=XGerman')==>citta'
*NLS_UPPER:
NLS_UPPER('große')==>GROsE
REPLACE:
REPLACE('thisthatandtheother','th','z')==>'ziszatandzeozer'
RPAD:
RPAD('55',10,'0')==>'5500000000'
RTRIM:
RTRIM('BROWNINGyxXxy','xy')==>BROWNINGyxX
*SOUNDEX:
SOUNDEX('smith')==>'S530'
SOUNDEX('SMYTHE')==>'S530'
SOUNDEX('smithsmith')==>'S532'
SOUNDEX('smithz')==>'S532'
SOUNDEX('feuerstein')==>'F623'
SOUNDEX('feuerst')==>'F623'
SUBSTR:
SUBSTR('now_or_never',0,3)==>'now'
TRANSLATE:
TRANSLATE('mylanguageneedsthelettere','egms','X')
==>
'ylanuaXnXXdthXlXttXrX';
TRANSLATE('pleasegoaway','a',NULL)==>NULL
*TREAT:
UPPER:
UPPER('shortlittlelettersnomore')==>'SHORTLITTLELETTERSNOMORE'
4.2數值函數(NumericFunctions)
ABS:
ABS(-15)==>15
*ACOS:
ACOS(.3)==>1.26610367
*ASIN:
ASIN(.3)==>.304692654
*ATAN:
ATAN(.3)==>.291456794
*ATAN2:
ATAN2(.3,.2)==>.982793723
AVG:
SELECTAVG(sal)FROMemp;
CEIL:
CEIL(119.1)==>120
CEIL(-17.2)==>-17
*COS:
COS(180*3.14159265359/180)==>-1
*COSH:
COSH(n)=COS(i*n)
COUNT:
SELECTCOUNT(*)FROMemp;
*EXP(e=2.71828):
EXP(4)==>54.59815
FLOOR:
FLOOR(6.2)==>6
FLOOR(-89.4)==>-90
*LN:
LN(95)==>4.55387689
*LOG:
LOG(10,100)==>10
MAX:
MIN:
MOD:
MOD(11,4)==>3
POWER:
POWER(3,2)==>9
ROUND:
ROUND(153.46)==>153
ROUND(153.46,1)==>153.5
ROUND(153,-1)==>150
SIGN:
SIGN(-15)==>-1
SIGN(15)==>1
SIGN(0)==>0
SIN:
SIN(30*3.14159265359/180)==>.5
*SINH:
SINH
(1)==>1.17520119
SQRT:
SQRT(26)==>5.09901951
*STDDEV:
SELECTSTDDEV(salary)FROMemployees;
SUM:
*TAN:
TAN(135*3.14159265359/180)==>-1
*TANH:
TANH(.5)==>.462117157
TRUNC:
TRUNC(153.46)==>153
TRUNC(153.46,1)==>153.4
TRUNC(-2003.16,-1)==>-2000
*VARIANCE:
SELECTVARIANCE(salary)FROMemployees;
*WIDTH_BUCKET:
4.3日期函數(DATEFunctions)
ADD_MONTHS:
ADD_MONTHS('12-JAN-1995',3)==>12-APR-1995
LAST_DAY:
LAST_DAY('12-JAN-99')==>31-JAN-0099
MONTHS_BETWEEN:
MONTHS_BETWEEN('31-JAN-1994','1-MAR-1994')==>-1.03225806451612903225806451612903225806
NEW_TIME:
TO_CHAR(NEW_TIME(TO_DATE('0915199412:
30AM','MMDDYYYYHH:
MIAM'),'CST','hdt'),'MonthDD,YYYYHH:
MIAM')==>September14,199409:
30PM
NEXT_DAY:
NEXT_DAY('01-JAN-1997','MONDAY')==>06-jan-9712.00.00am
NEXT_DAY('01-JAN-1997','WEDNESDAY')==>08-jan-9712.00.00am
ROUND:
SYSDATE:
TRUNC:
4.4轉換函數(ConversionFunctions)
ASCIISTR:
CAST:
CHARTOROWID:
COMPOSE:
CONVERT:
DECOMPOSE:
HEXTORAW:
RAWTOHEX:
RAWTONHEX:
ROWIDTOCHAR:
ROWIDTONCHAR:
TO_CHAR(character):
TO_CHAR(dateconversion):
TO_CHAR(number):
TO_CLOB:
TO_DATE:
TO_MULTI_BYTE:
TO_NCHAR(character):
TO_NCHAR(datetime):
TO_NCHAR(number):
TO_NCLOB:
TO_NUMBER:
TO_SINGLE_BYTE:
TRANSLATE…USING:
UNISTR:
4.5通用函數
NVL:
NULLIF:
NVL2:
COALESCE:
CASE:
DECODE:
第五章分組函數
5.1COUNT
5.2AVG、MAX、MIN、SUM
5.3分組函數與空值
分組函數省略列中的空值,可使用NVL()函數強制分組函數處理空值;
SELECTAVG(nvl(comm,0))FROMDUAL;
5.4GROUPBY子句
出現在SELECT列表中的字段或者出現在ORDERBY後面的字段,如果不是包含在分組函數中,那麼該字段必須同時在GROUPBY子句中出現;
包含在GROUPBY子句中的字段則不必出現在SELECT列表中;
可使用WHERE語句限制條件;
可使用ORDERBY子句制定排序方式;
如果沒有GROUPBY子句,SELECT列裱中不允許出現字段(單行函數)與分組函數共用的情況;
不允許在WHERE子句中使用分組函數;
5.5HAVING子句
5.6分組函數嵌套
SELECTMAX(AVG(sal))FROMempGROUPBYdeptno;
第六章多表查詢
6.1笛卡爾積
SELECT*FROMemp,dept;
6.2等值連接
SELECTempno,ename,sal,emp.deptno,dname
FROMemp,dept
WHEREemp.deptno=dept.deptno;
6.3非等值連接
SELECTename,empno,gradeFROMemp,salgradeWHEREsalBETWEENlosalANDhisal;
6.4自連接
SELECTe.empno,e.ename,m.empno,m.enameFROMempe,empmWHEREm.mgr=e.empno;
6.5左外連接(Leftouterjoin)
SELECTempno,ename,dnameFROMempLEFTOUTERJOINdeptONemp.deptno=dept.deptno;
6.6右外連接(Rightouterjoin)
SELECTempno,ename,dnameFROMempRIGHTOUTERJOINdeptONemp.deptno=dept.deptno;
6.7滿外連接(Fullouterjoin)
SELECTempno,ename,dnameFROMempFULLOUTERJOINdeptONemp.deptno=dept.deptno;
6.8集合操作
1.UNION:
并級,所有的內容都查詢,重複一次的顯示一次;
2.UNIONALL:
并集,所有的內容都顯示,包括重複的;
3.INTERSECT:
交集,只顯示重複的;
4.MINUS:
差集,只顯示對方沒有的(跟順序是有關係的);
第七章子查詢
7.1單行子查詢
SELECT*FROMempWHEREsal>(SELECTsalFROMempWHEREempno=7566);
7.2子查詢空值/多值問題
如果子查詢返回多行結果,則為多行子查詢,此時不允許對其使用單行記錄比較運算符;
(多值)SELECT*FROMempWHEREsal>(SELECTAVG(sal)FROMempGROUPBYdeptno);
ORA-01427:
single-rowsubqueryreturnsmorethanonerow
7.3多行子查詢
SELECT*
FROMemp
WHEREsal>ANY(SELECTAVG(sal)FROMempGROUPBYdeptno);
SELECT*
FROMemp
WHEREjobIN(SELECTjob
FROMemp
WHEREename='MARTIN'
ORename='SMITH');
7.4TOPN查詢
SELECT*FROMEMPWHEREROWNUM=1ORROWNUM=2;
7.5分頁查詢
SELECT*
FROM(SELECTROWNUMno,e.*
FROM(SELECT*FROMempORDERBYsalDESC)e
WHEREROWNUM<=5)
WHEREROWNUM<=3;
7.6EXISTS
1.EXISTS的執行流程
SELECT*FROMt1WHEREEXISTS(SELECTnullFROMt2WHEREy=x);
可以理解為
FORxIN(SELECT*FROMt1)
LOOP
IF(EXISTS(SELECTNULLFROMt2WHEREy=x.x)
THEN
OUTPUTTHERECORD
ENDIF
ENDLOOP
2.對於IN和EXISTS的性能區別
如果子查詢得出的結果集記錄較少,主查詢中的表較大且又有索引時應該用IN,反之如果外層的主查詢記錄較少,子查詢中的表大,又有索引時使用EXISTS;
區分IN和EXISTS主要是曹成了驅動順序的改變(這是性能變化的關鍵),EXSITS以外層為驅動表,先被訪問;
IN是不對NULL進行處理的;
如:
SELECT1FROMdualWHERENULLIN(0,1,2,NULL);
為空.
第八章高級查詢
8.1隨即放回5條記錄
SELECT*
FROM(SELECTename,jobFROMempORDERBYdbms_random.value())
WHEREROWNUM<=5;
8.2處理空值排序
SELECT*FROMempORDERBYcommDESCNULLSLAST/FIRST;
8.3查詢跳過裱中的偶數行
SELECTename
FROM(SELECTrow_number()over(ORDERBYENAME)rn,enameFROMemp)x
WHEREMOD(rn,2)=1;
8.4查詢員工信息與其中最高、最低工資
SELECTename,sal,MAX(sal)over(),MIN(sal)over()FROMemp;
ENAME
SAL
MAX(SAL)OVER()
MIN(SAL)OVER()
SMITH
800.00
5000
800
ALLEN
1600.00
5000
800
WARD
1250.00
5000
800
JONES
2975.00
5000
800
MARTIN
1250.00
5000
800
BLAKE
2850.00
5000
800
CLARK
2450.00
5000
800
SCOTT
3000.00
5000
800
KING
5000.00
5000
800
TURNER
1500.00
5000
800
ADAMS
1100.00
5000
800
JAMES
950.00
5000
800
FORD
3000.00
5000
800
MILLER
1300.00
5000
800
8.5連續求和
SELECTename,sal,SUM(sal)over(),SUM(sal)over(ORDERBYename)FROMemp;
SUM(sal)over(ORDERBYENAME)指的是連續求和,是以ENAME來排序的.若有兩個這樣的窗口函數,以後面的排序為主;
ENAME
SAL
SUM(SAL)OVER()
SUM(SAL)OVER(ORDERBYENAME)
ADAMS
1100.00
29025
1100
ALLEN
1600.00
29025
2700
BLAKE
2850.00
29025
5550
CLARK
2450.00
29025
8000
FORD
3000.00
29025
11000
JAMES
950.00
29025
11950
JONES
2975.00
29025
14925
KING
5000.00
29025
19925
MARTIN
1250.00
29025
21175
MILLER
1300.00
29025
22475
SCOTT
3000.00
29025
25475
SMITH
800.00
29025
26275
TURNER
1500.00
29025
27775
WARD
1250.00
29025
29025
8.6分部門求和
SUM(sal)over(partitionbydeptno)
SELECTdeptno,sal,SUM(sal)over(partitionbydeptnoORDERBYENAME)ass
FROMemp;
DEPTNO
SAL
S
10
2450.00
2450
10
5000.00
7450
10
1300.00
8750
20
1100.00
1100
20
3000.00
4100
20
2975.00
7075
20
3000.00
10075
20
800.00
10875
30
1600.00
1600
30
2850.00
4450
30
950.00
5400
30
1250.00
6650
30
1500.00
8150
30
1250.00
9400
8.7得到當前行上一行或者下一行的數據
LEAD()、LAG();
SELECTENAME,
hiredate,
LEAD(hiredate,1)OVER(ORDERBYhiredate)AS"NextHired"
FROMemp;
ENAME
HIREDATE
NextHired
SMITH
1980/12/17
1981/2/20
ALLEN
1981/2/20
1981/2/22
WARD
1981/2/22
1981/4/2
JONES
1981/4/2
1981/5/1
BLAKE
1981/5/1
1981/6/9
CLARK
1981/6/9
1981/9/8
TURNER
1981/9/8
1981/9/28
MARTIN
1981/9/28
1981/11/17
KING
1981/11/17
1981/12/3
JAMES
1981/12/3
1981/12/3
FORD
1981/12/3
1982/1/23
MILLER
1982/1/23
1987/4/19
SCOTT
1987/4/19
1987/5/23
ADAMS
1987/5/23
第九章數據字典
9.1查詢某用戶下所有表
SELECTtable_nameFROMall_tablesWHEREowner='SCOTT';
9.2查詢emp表中所有字段(列)
SELECT*FROMsys.all_tab_columnsWHEREtable_name='EMP'
9.3列出表的索引列
SELECT*FROMsys.all_ind_columnsWHEREtable_name='EMP'
9.4列出裱中的約束
SELEC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle DBA 教程学习笔记 教程 学习 笔记