版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數(shù)據(jù)庫程序員面試分類真題6簡答題1.
什么是多表連接查詢?正確答案:多表連接查詢是指基于兩個或兩個以上的表或視圖的查詢。在實際應用中,查洵單表不可能滿足業(yè)務的需求,只能通過多表的連接來獲取所需要的(江南博哥)數(shù)據(jù)。多表連接查詢主要分為等值連接、非等值連接、外連接和自連接四類。
需要注意的是,WHERE子句中的連接條件的個數(shù)不能少于FROM后表的個數(shù)減1,這樣可以確保不會形成笛卡兒積。即為了連接n個表,至少需要n-1個連接條件。例如,為了連接5個表,至少需要4個連接條件。[考點]SQL編寫
2.
笛卡兒積是什么?正確答案:笛卡兒積是把表中所有的記錄做乘積操作,生成大量的結果,而通常結果中可用的值有限。笛卡兒積出現(xiàn)的原因多種多樣,通常是由于連接條件缺失造成的。對笛卡兒積的使用,需要注意以下幾點:
1)笛卡兒積會在下面條件下產生:
①省略連接條件或連接條件缺失。
②連接條件無效,例如,表A和表B進行連接,但連接條件為A.ID=A.ID,這里的連接條件無效。
③統(tǒng)計信息不準確,例如,表A有1000W的數(shù)據(jù)量,但是在統(tǒng)計信息中記錄的是0行,這種情況下表的連接易形成笛卡兒積。
2)由于笛卡兒積中的所有表中的所有行互相連接,所以,形成笛卡兒積的結果集的記錄數(shù)是組成它的各個子集的乘積。
3)為了避免笛卡兒積,需要在WHERE字句中加入有效的連接條件。
4)默認情況下,查詢會返回全部行,包括重復行。[考點]SQL編寫
3.
什么是Fop-N查詢?正確答案:在數(shù)據(jù)庫查詢中,“Top-N分析”也稱“Top-N查詢”,就是獲取某一數(shù)據(jù)集合(表或查詢結果集)中的前N條記錄,例如,考試成績前三名的學生信息、銷量前十名的暢銷書信息、從當前時刻開始最早起飛的五次航班信息等,實際應用中Top-N分析經常會用到。以下幾點是Top-N的性質:
1)Top-N分析就是查詢前幾名的意思。
2)在Oracle數(shù)據(jù)庫中,Top-N分析通過ROWNUM實現(xiàn)。
3)Top-N分析中必須使用ORDERBY排序子句。
4)Top-N分析中通常會有內建視圖,一般的方法是先對內建視圖的某一列或某些列排序,然后對此內建視圖使用ROWNUM取前多少行數(shù)據(jù)。
如果要按照某種規(guī)則對符合條件的查詢結果進行排序,再返回查詢結果中的全部記錄行,那么這是很容易做到的。例如,要查詢10號和20號部門所有員工的工資信息,可采用如下方式:
SELECTEMPNO,ENAME,SALFROMSCOTT.EMPDWHEREDEPTNOIN(10,20)ORDERBYD.EMPNO;
如果是要在排序查詢中進行Top-N分析,那么情況要復雜一些。例如,要求按照工資降序排列,查詢10號和20號部門工資最高前五名員工的信息,則SQL語句為
在以上結果中,“原始行號”RN的含義為子查詢結果排序前的行號(子查詢執(zhí)行了WHERE子句之后,但尚未執(zhí)行ORDERBY子句排序時的行號)。ROWNUM是Oracle數(shù)據(jù)庫對查詢結果自動添加的一個偽列。簡單地說,就是在每一次查詢操作中,Oracle都會對符合條件的查詢結果中的每一條記錄行自動進行編號,該編號總是從1開始,并保存在偽列ROWNUM中。之所以稱之為“偽列”,是因為它在物理上(查詢目標表中)并不是真的存在,而是在每一次查詢過程中動態(tài)生成的。此外,由于偽列ROWNUM在物理上并不存在,因此,不允許以任何查詢基表的名稱作為前綴。[考點]SQL編寫
4.
什么是子查詢?子查詢包括哪幾種類型?正確答案:所謂子查詢是指嵌套在其他查詢中的查詢語句,又稱為內部查詢或嵌套查詢。主查詢又稱為外部查詢,是包含其他子查詢的查詢語句。按照子查詢與主查詢的關聯(lián)關系,可以將子查詢分為“標量子查詢(ScalarSubquery)”和“關聯(lián)子查詢”兩種,其中,關聯(lián)子查詢又可以分為相關子查詢(CorrelatedSubquery)和非相關子查詢(UncorrelatedSubquery),非相關子查詢也叫獨立子查詢。子查詢根據(jù)返回的行數(shù)分為單行子查詢和多行子查詢,若根據(jù)返回的列數(shù)則分為單列子查詢和多列子查詢。子查詢的分類可以參考下圖。
[考點]SQL編寫
5.
什么是合并查詢(集合查詢)?正確答案:有時在實際應用中,為了合并多個SELECT語句的結果,可以使用集合操作符UNION、UNIONALL、INTERSECT、MINUS,這些集合操作符多用于數(shù)據(jù)量比較大的數(shù)據(jù)庫,運行速度快,稱為合并查詢,也叫集合查詢。以下分別對這幾個命令進行分析與講解。
1)UNION:該操作符用于計算兩個結果集的并集。當使用該操作符時,會自動去掉結果集中的重復行,只保留重復行的一行結果。需要注意的是:
①當執(zhí)行聯(lián)合查詢時,必須保證它們具有相同個數(shù)的結果列,否則報如下的錯誤:ORA-01789:查詢塊的結果列數(shù)。
②列的數(shù)據(jù)類型不同也報錯:ORA-01790:expressionmusthavesamedatatypeAScorrespondingexpression。數(shù)據(jù)類型的長度不一樣是可以的,但是必須保證是相同的數(shù)據(jù)類型。
2)UNIONALL:該操作符與UNION相似,但是它不會取消重復行,而且不會排序。
3)INTERSECT(相交):該操作符用于計算兩個結果集的交集。
4)MINUS(相減):該操作符用于計算兩個結果集的差集,它只會顯示存在第一個集合中,而不存在第二個集合中的數(shù)據(jù),而且第一個集合中的相同數(shù)據(jù)只輸出一個。
MINUS具有如下的實用功能:
1)比較兩個表中的某一個字段中的不同的數(shù)據(jù)。
2)比較兩個表的結構的不同。示例如下:
SYS@lhrdb>CREATETABLET_LHR_01(IDNUMBER);
Tabletreatcd.
SYS@lhrdb>CREATETABLET_LHR_02(IDNUMBER,NAMEVARCHAR2(255));
Tablecreated.
SYS@lhrdb>SELECTC.COLUMN_NAMEFROMCOLSCWHEREC.TABLE_NAME='T_LHR_02'
2
MINUS
3
SELECTC.COLUMN_NAMEFROMCOLSCWHEREC.TABLE_NAME='T_LHR_01';
COLUMN_NAME
-----------------------
NAME
可見,表T_LHR_02比表T_LHR_01多出一列NAME。[考點]SQL編寫
6.
SQL:1999語法是什么?正確答案:Oracle除了自己的連接語法外,同時支持ANSI(AmericanNationalStandardsInstitute,美國國家標準協(xié)會)的SQL:1999標準的連接語法。SQL:1999是ANSI制定的通用標準,各數(shù)據(jù)庫廠商都支持的一個標準。
SQL:1999語法格式如下:
SELECTtable.column,
table2.column
FROM
tablel
CROSS
JOINtable2|NATURALJOIN
table2|JOIN
table2
USING
(column_name)|
JOIN
table2
ON
(table1.column_name=table2.column_name)|
LEFT
|RIGHT
|FULL
OUTERJOIN
table2
ON
(table1.column_name=table2.column_name)
WHERE...;
其中,INNERJOIN表示內連接;LEFTJOIN表示左外連接;RIGHTJOIN表示右外連接;FULLJOIN表示完全外連接;ON子句用于指定連接條件。連接分類圖如下圖所示。
各種表之間的連接方式見下表。
[考點]SQL編寫
7.
什么是交叉連接(CrossJoin)?正確答案:交叉連接(CrossJoin)子句是在SQL:1999標準中開始支持的,為了生成笛卡兒積而設計。連接語法中,交叉連接不使用WHERE子句,而是在FROM子句中的兩個連接表之間使用CROSSJOIN顯式標明。例如:
SELECTEMPNO,ENAME,SAL,EMP.DEPTNO,DNAMEFROM
SCOTT.EMPCROSS
JOINSCOTT.DEPT;
上述語句返回的是被連接的兩個表所有符合查詢條件記錄行的笛卡兒積,其結果集合中的記錄行數(shù)等于第一個表中符合查詢條件的記錄行數(shù)乘以第二個表中符合查詢條件的記錄行數(shù),其效果等同于如下語句:
SELECTEMPNO,ENAME,SAL,EMP.DEPTNO,DNAMEFROMSCOTI.EMP,SCOTT.DEP;[考點]SQL編寫
8.
什么是內連接(InnerJoin/Join)?正確答案:內連接(InnerJoin/Join)是常用的查詢方式,也叫簡單連接,是從兩個或更多的表中篩選出符合連接條件的數(shù)據(jù)(記錄行),對其連接后再進行查詢并返回結果,如果遇到無法滿足連接條件的數(shù)據(jù),那么將之丟棄。內連接在FROM子句中使用INNERJOIN或JOIN關鍵字標識,并使用ON子句指定連接條件以及其他的查詢限定條件。
內連接可以分為等值連接和非等值連接。例如,“SELECT*FROMA,BWHEREA.FIELD1=B.FIELD2”屬于等值連接,它返回滿足左表輸入與右表輸入連接的每一行。[考點]SQL編寫
9.
請使用ON子句連接查詢SCOTT.EMP和SCOTT.DEPT表,要求顯示EMPNO、ENAME、JOB和SAL字段。正確答案:題目要求使用ON子句,這是一個考查點,SQL語句如下:
SYS@LHRDB>SELECTEMPNO,ENAME,JOB,SALFROMSCOTT.EMPEJOINSCOTT.DEPTDONE.DEPTNO=D.DEPTNO;[考點]SQL編寫
10.
什么是等值連接?正確答案:等值連接就是當兩個表的公共字段相等的時候把兩個表連接在一起,它是連接條件中最常見的一種。公共字段是兩個表中具有相同含義的列。如下兩個連接都屬于等值連接:
連接1:
SELECTENAME姓名,(SELECTD.DNAMEFROMSCOTT.DEPTDWHEREE.DEPTNO=D.DEPTNO)部門名稱
FROMSCOTT.EMPEORDERBYE.ENAME;
連接2:
SELECTE.ENAME姓名,D.DNAME部門名稱
FROMSCOTT.EMPE,SCOTT.DEPTD
WHEREE.DEPTNO=D.DEPTNOORDERBYE.ENAME;[考點]SQL編寫
11.
什么是自然連接?正確答案:自然連接屬于等值連接的一種特殊形式,它是在兩張表中尋找那些數(shù)據(jù)類型和列名都相同的字段,然后自動地將它們連接起來,并返回所有符合條件的結果。自然連接以相同列為條件創(chuàng)建等值的列,不推薦使用。若沒有任何相同的字段,則會產生笛卡兒積,這對數(shù)據(jù)庫的性能有較大影響。
需要注意的是,自然連接只能發(fā)生在兩個表中有相同名字和數(shù)據(jù)類型的列上。如果表中的數(shù)據(jù)列有相同的名字,但數(shù)據(jù)類型不同,那么自然連接語法會提示錯誤。
有關自然連接的一些注意事項如下:
1)如果進行自然連接的兩個表有多個字段都具有相同名稱和類型,那么它們都會被作為自然連接的條件。
2)如果進行自然連接的兩個表僅有字段名稱相同,而數(shù)據(jù)類型不同,那么將會返回一個錯誤。
自然連接自動進行關聯(lián)字段的匹配。示例如下:
SYS@RACLHR2>SELECT*FROMSCOTT.EMPNATURALJOINSCOTT.DEPT;[考點]SQL編寫
12.
什么是自連接?正確答案:自連接(SelfJoin)是SQL語句中的一種特殊連接方式,使用自連接可以將自身表的一個鏡像當作另一個表來對待,從而能夠得到一些特殊的數(shù)據(jù)。
例如,在SCOTT.EMP中的每一個員工都有自己的MGR(經理),并且每一個經理自身也是公司的員工,自身也有自己的經理。如果需要將每一個員工自己的名字及其經理的名字都查詢出來,SQL語句應該如何寫呢?這個時候就可以用到自連接了。最終SQL如下:
SELECTA.ENAMEWORKER,B.ENAMEMANAGERFROMSCOTT.EMPA,SCOTT.EMPBWHEREA.MGR=B.EMPNOORDERBYA.ENAME;
對于非等值連接,理解起來比較簡單,即表和表之間是通過非等值運算符來連接的,例如,<>、BETWEEN...AND...等,如下:
SELECT
EMP.EMPNO,EMP.ENAME,DEPT.LOCFROMSCOTT.EMPINNERJOINSCOTT.DEPTONEMP.DEPTNO<>DEPT.DEPTNO
WHEREEMPNO=7788ORDERBYEMPNO;
13.
外連接包含哪幾種類型?正確答案:外連接分為3種,即左外連接(LEFTOUTERJOIN)、右外連接(RIGHTOUTERJOIN)和全外連接(FULLOUTERJOIN),通??梢允÷設UTER這個關鍵字,所以,也稱為左連接、右連接和全連接。[考點]SQL編寫
14.
使用SCOTT/TIGER用戶下的EMP表和DEPT表完成下列練習,表的結構說明如下:
EMP員工表(EMPNO員工號/ENAME員工姓名/JOB工作/MGR上級編號MIREDATE受雇日期/SAL薪金/COMM傭金/DEPTNO部門編號)
DEPT部門表(DEPTNO部門編號/DNAME部門名稱/LOC地點)
工資=薪金+傭金
1)列出至少有一個員工的所有部門。
2)列出薪金比“SMITH”多的所有員工。
3)列出所有員工的姓名及其直接上級的姓名。
4)列出受雇日期早于其直接上級的所有員工。
5)列出部門名稱和這些部門的員工信息,同時列出那些沒有員工的部門。
6)列出所有工作為“CLERK”辦事員的姓名及其部門名稱。
7)列出最低薪金大于1500的各種工作。
8)列出在部門“SALES”銷售部工作的員工的姓名,假定不知道銷售部的部門編號。
9)列出薪金高于公司平均薪金的所有員工。
10)列出與員工“SCOTT”從事相同工作的所有員工。
11)列出薪金等于部門編號為30的員工的薪金的所有員工的姓名和薪金。
12)列出薪金高于在部門30工作的所有員工的薪金的員工姓名和薪金。
13)列出在每個部門工作的員工數(shù)量、平均工資和平均服務期限。
14)列出所有員工的姓名、部門名稱和工資。
15)列出所有部門的詳細信息和部門人數(shù)。
16)列出各種工作的最低工資。
17)列出工作為“MANAGER”的員工的最低薪金。
18)列出所有員工的年工資,按年薪從低到高排序。正確答案:本題考查編寫SQL語句的能力,答案如下:
1)考查兩個表聯(lián)合查詢,及GROUPBY...HAVING的用法,最終的SQL如下:
SELECTDNAMEFROMSCOTT.DEPTTWHERET.DEPTNOIN(SELECTT.DEPTNOFROMSCOTT.EMPGROUPBYT.DEPTNOHAVINGCOUNT(*)>1)
2)經典的自連接查詢,最終的SQL如下:
SELECTENAMEFROMSCOTT.EMPTWHERESAL>(SELECTSALFROMSCOTT.EMPWHEREENAMELIKE='SMITH);
3)多次對自己查詢,為表取個別名,內部查詢可以像對象一樣引用外部的對象的字段,這里引用與編程中的作用域相似,即與{}類比,最終的SQL如下:
SELECTENANE,(SELECTENAMEFROMSCOTT.EMPWHERESCOTT.EMPNOIN(A.MGR))FROMSCOTT.EMPA;
4)日期可直接用來比較,最終的SQL如下:
SELECTENAMEFROMSCOTT.EMPAWHEREHIREDATE<(SELECTHIREDATEFROMSCOTT.EMPWHERESCOTT.EMPNOIN(A.MGR));
5)以SCOTT.DEPT表為主,左連接查詢,最終的SQL如下:
SELECTDNAME,B.*FROMSCOTT.DEPTALEFTJOINSCOTT.EMPBONA.DEPTNO=B.DEPTNO;
6)最終的SQL如下:
SELECTENAME,(SELECTDNAMEFROMSCOTT.DEPTWHERET.DEPTNOIN(A.DEPTNO))ASDNAMEFROMSCOTT.EMPAWHEREJOB='CLERK';
7)找出哪些工作的所有員工的薪金都大于1500,最終的SQL如下:
SELECTT.JOBFROMSCOTT.SCOTT.EMPTGROUPBYT.JOBHAVINGMIN(SAL)>1500;
8)經典的兩個表連接,最終的SQL如下:
SELECTENAMEFROMSCOTT.EMPWHERET.DEPTNO=(SELECTT.DEPTNOFROMSCOTT.DEPTWHEREDNAME='SALES');
9)反復查自己,最終的SQL如下:
SELECTENAMEFROMSCOTT.EMPWHERESAL>(SELECTAVG(SAL)FROMSCOTT.EMP);
10)排除自己,最終的SQL如下:
SELECTENAMEFROMSCOTT.EMP
WHEREJOBIN(SELECTJOBFROMSCOTT.EMPWHEREENAME='SCOTT)ANDENAME!='SCOTT;
11)考查ANY的用法,且排除自己,最終的SQL如下:
SELECTENAME,SALFROMSCOTT.EMPWHERESAL=ANY(SELECTSALFROMSCOTT.EMPWHERET.DEPTNO=30)ANDT.DEPTNO!=30;
12)MAX的用法,最終的SQL如下:
SELECTSAL,ENAME
FROMSCOTT.EMPWHERESAL>(SELECTMAX(SAL)FROMSCOTT.EMPWHERET.DEPTNO=30);
13)經典的GROUPBY用法,最終的SQL如下:
SELECTT.DEPTNO,COUNT(*),AVG(A.SAL+COMM),AVG(SYSDATE-HIREDATE)FROMSCOIT.EMPAGROUPBYT.DEPTNO;
14)經典的兩個表的連接查詢,用具體的名稱替換一個表中的主鍵的ID(解決很多人在實際運用中會遇到的不能綁定多列的問題),也可用WHERE來查詢,與題5)比較,最終的SQL如下:
SELECTENAME,SAL+COMM,(SELECTDNAMEFROMSCOTT.DEPTAWHEREA.DEPTNO=B.DEPTNO)ASDNAMEFROMSCOTT.EMPB;
15)因為使用了SELECT*,將顯示SCOTT.DEPT和后面臨時表B的全部字段(注意:不只是SCOTT.DEPT的字段,注意*號),最終的SQL如下:
SELECT*FROMSCOTT.DEPTALEFTJOIN(SELECTDEPTNO,COUNT(*)FROMSCOTT.EMPGROUPBYDEPTNO)B
ONA.DEPTNO=B.DEPTNO;
16)考查MIN的用法,最終的SQL如下:
SELECTJOB,MIN(SAL)FROMSCOTT.EMPGROUPBYJOB;
17)因為MANAGER是值而不是字段,所以不能用小寫,最終的SQL如下:
SELECTMIN(SAL+COMM)FROMSCOTT.EMPWHEREJOB='MANAGER';
18)NVL:空轉化函數(shù)。最終的SQL如下:
SELECTENAME,(SAL+NVL(COMM,0))*12ASSALFROMSCOTT.EMPORDERBYSAL;[考點]SQL編寫
15.
E-R圖向關系模型的轉換一般遵循哪些原則?正確答案:E-R圖向關系模型的轉換一般遵循如下原則:
1)一個實體型轉換為一個關系模式。實體的屬性就是關系的屬性。實體的碼就是關系的碼。
例如,學生實體可以轉換為如下關系模式,其中,學號為學生關系的碼:
學生(學號,姓名,出生日期,所在系,年級,平均成績)。同樣,性別、宿舍、班級、檔案材料、教師、課程、教室、教科書都分別轉換為一個關系模式。
2)一個聯(lián)系轉化為一個關系模式,與該聯(lián)系相連的各實體的碼以及聯(lián)系的屬性轉化為關系的屬性。該關系的碼有如下3種情況:
①若聯(lián)系為1:1,則每個實體的碼均是該關系的候選碼。
②若聯(lián)系為1:n,則關系的碼為n端實體的碼。
③若聯(lián)系為m:n,則關系的碼為諸實體碼的組合。
下面分別來講解這3種情況。
①聯(lián)系為1:1
一個1:1聯(lián)系可以轉換為一個獨立的關系模式,也可以與任意一端對應的關系模式合并。
a)如果轉換為一個獨立的關系模式,那么與該聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均轉換為關系的屬性,每個實體的碼均是該關系的候選碼。
b)如果與某一端對應的關系模式合并,那么需要在該關系模式的屬性中加入另一個關系模式的碼和聯(lián)系本身的屬性。
②聯(lián)系為1:n
一個1:n聯(lián)系可以轉換為一個獨立的關系模式,也可以與n端對應的關系模式合并。
a)如果轉換為一個獨立的關系模式,那么與該聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均轉換為關系的屬性,而關系的碼為n端實體的碼。
b)如果與n端對應的關系模式合并,那么在n端實體對應模式中加入1端實體所對應關系模式的碼,以及聯(lián)系本身的屬性。而關系的碼為n端實體的碼。
③聯(lián)系為m:n
一個m:n聯(lián)系轉換為一個關系模式。與該聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均轉換為關系的屬性,而關系的碼為各實體碼的組合。
3)同一實體集的實體間的聯(lián)系,即自聯(lián)系,也可按上述1:1、1:n和m:n三種情況分別處理。
例如,如果教師實體集內部存在領導與被領導的1:n自聯(lián)系,那么可以將該聯(lián)系與教師實體合并,這時主鍵職工號將多次出現(xiàn),但作用不同,可用不同的屬性名加以區(qū)分。例如,在合并后的關系模式中,主鍵仍為職工號,再增設一個“系主任”屬性,存放相應系主任的職工號。
4)具有相同碼的關系模式可合并。
為了減少系統(tǒng)中的關系個數(shù),如果兩個關系模式具有相同的主鍵,那么可以考慮將它們合并為一個關系模式。合并方法是將其中一個關系模式的全部屬性加入另一個關系模式中,然后去掉其中的同義屬性(可能同名也可能不同名),并適當調整屬性的次序。[考點]E-R模型
16.
假定一個部門的數(shù)據(jù)庫包括以下信息。
1)職工的信息:職工號、姓名、地址和所在部門。
2)部門的信息:部門所有職工、部門名、經理和銷售的產品。
3)產品的信息:產品名、制造商、價格、型號及產品的內部編號。
4)制造商的信息:制造商名稱、地址、生產的產品名和價格。
試畫出這個數(shù)據(jù)庫的E-R圖。正確答案:本題對應的E-R圖如下圖所示。
[考點]E-R模型
17.
某學校學籍科管理中心需建立一個學生選修課數(shù)據(jù)庫,該數(shù)據(jù)庫中需要存儲和管理下列信息:
學生:學號,姓名,性別,年齡
課程:課程號,課程名,學時
以上數(shù)據(jù)存在的約束條件是:
一名學生可以選修多門課程,一門課程可以有多名學生,并且選修課要有成績的登記。
I)畫出該關系的E-R圖。
2)用SQL語句創(chuàng)建E-R關系圖中所有涉及的表。正確答案:1)建立E-R圖如下圖所示。
2)建表語句如下:
CREATETABLE學生
學號
VARCHAR(10)PRIMARYKEY,
姓名
VARCHAR(20)NOTNULL
性別
CHAR(2)CHECK(性別IN('男','女')),
年齡
INT);
CREATETABLE
課程(
課程號
VARCHAR(10)PRIMARYKEY,
課程號
VARCHAR(20)NOTNULL,
學時
TNT
);
CREATETABLE選修(
學號
VARCHAR(10),
課程號
VARCHAR(10),
成績INT,
PRIMARYKEY(學號,課程號),
FOREIGNKEY(學號)REFERENCES學生學號,
FOREIGNKEY(課程號)REFERENCES課程課程號,
);[考點]E-R模型
18.
熱備份和冷備份的區(qū)別有哪些?正確答案:冷備份和熱備份的區(qū)別見下表。
冷備份熱備份簡介冷備份指在數(shù)據(jù)庫已經正常關閉后,將關鍵性文件復制到另外位置的一種備份方式,適用于所有模式的數(shù)據(jù)庫熱備份是在數(shù)據(jù)庫運行的情況下,采用歸檔方式備份數(shù)據(jù)的方法。針對歸檔模式的數(shù)據(jù)庫,在數(shù)據(jù)庫仍舊處于工作狀態(tài)時進行備份優(yōu)點1)非常快速的備份方法,只需復制文件,備份與恢復操作相當簡單2)容易歸檔,簡單復制即可3)容易恢復到某個時間點上,只需將文件再復制回去即可4)能與歸檔方法相結合,做數(shù)據(jù)庫“最新狀態(tài)”的恢復5)低度維護,高度安全1)可在表空間或數(shù)據(jù)文件級備份,備份時間短2)備份時數(shù)據(jù)庫仍可使用3)可以將數(shù)據(jù)庫恢復到任意一個時間點4)可對幾乎所有數(shù)據(jù)庫實體做恢復5)恢復是快速的,大多數(shù)情況下在數(shù)據(jù)庫仍工作時恢復缺點1)當單獨使用時,只能提供到“某一時間點上”的恢復2)在實施備份的全過程中,數(shù)據(jù)庫必須是關閉狀態(tài),所以,在備份的過程中,數(shù)據(jù)庫就不能做其他工作了3)若磁盤空間有限,則復制到磁帶等其他外部存儲設備上,速度會很慢4)不能按表或按用戶恢復1)不能出錯,否則后果嚴重2)若熱備份不成功,則所得結果不可用于時間點的恢復3)維護困難,所以,要特別仔細小心,不允許“以失敗而告終”的情況發(fā)生[考點]熱備份和冷備份
19.
SQL注入的含義是什么?正確答案:所謂SQL注入(SQLInjection),就是通過把SQL命令插入WEB表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執(zhí)行惡意的SQL命令的目的。例如,在代碼中使用下面的SQL語句:SQL="SELECTTOP1*FROMUSERWHERENAME='''+NAME+'''ANDPASSWORD='''+PASSWORD+'''''來驗證用戶名和密碼是否正確,其中,NAME和PASSWORD是用戶輸入的內容,當用戶輸入用戶名為AA,密碼為“BB或'A'='A'”時,拼接出來的SQL語句就為“SELECTTOP1*FROMUSERWHERENAME='AA'ANDPASSWORD='BB'OR'A'='A'”,那么只要USER表中有數(shù)據(jù),這條SQL語句就會有返回結果,這就達到了SQL注入的目的。作為DBA,永遠不要信任用戶的輸入,相反,必須認定用戶輸入的數(shù)據(jù)永遠都是不安全的,對用戶輸入的數(shù)據(jù)必須都進行過濾處理。[考點]SQL注入
20.
有哪些方法可以防止SQL注入?正確答案:為了防止SQL注入,需要注意以下幾個要點:
1)永遠不要信任用戶的輸入。可以通過正則表達式或限制長度的方式對用戶的輸入進行校驗;對單引號進行轉換等。
2)永遠不要使用動態(tài)拼裝SQL,可以使用參數(shù)化的SQL或者直接使用存儲過程進行數(shù)據(jù)查詢、存取。
3)永遠不要使用管理員權限的數(shù)據(jù)庫連接,建議為每個應用賦予單獨的權限。
4)不要把機密信息直接存放,建議對密碼或敏感信息進行加密或:HASH處理。
5)應用的異常信息應該給出盡可能少的提示,最好使用自定義的錯誤信息對原始錯誤信息進行包裝。
6)SQL注入的檢測一般采取輔助軟件或借助網站平臺,軟件一般采用SQL注入檢測工具JSKY,網站平臺就有億思網站安全平臺檢測工具MDCSOFTSCAN等。[考點]SQL注入
21.
UML主要應用于哪些行業(yè)?正確答案:目前,UML已成功應用于電信、金融、政府、電子、國防、航天航空、制造與工業(yè)自動化、醫(yī)療、交通、電子商務等領域中。在這些領域中,UML的建模包括大型、復雜、實時、分布式、集中式數(shù)據(jù)或者計算,以及嵌入式系統(tǒng)等,而且還用于軟件再生工程、質量管理、過程管理、配置管理的各方面。在軟件無線電技術中,UML的應用是可行的,而且具有優(yōu)勢。[考點]UML
22.
什么是OLAP和OLTP?它們之間的適用場景有什么不同?正確答案:數(shù)據(jù)處理大致可以分成兩大類:OLTP(On-LineTransactionProcessing,聯(lián)機事務處理)和OLAP(On-LineAnalyticalProcessing,聯(lián)機分析處理)。
OLTP是傳統(tǒng)的關系型數(shù)據(jù)庫的主要應用,即記錄實時的增、刪、改,主要是執(zhí)行基本的、日常的事務處理,例如,在銀行存取一筆款,就是一個事務交易。OLTP系統(tǒng)強調數(shù)據(jù)庫處理效率,強調內存各種指標的命中率,強調綁定變量,強調并發(fā)操作。一般情況下,OLTP系統(tǒng)數(shù)據(jù)量少,DML操作比較頻繁,并行事務處理多,但是一般都比較短。OLTP表示事務性非常高的系統(tǒng),一般都是高可用的在線系統(tǒng),以小的事務以及小的查詢?yōu)橹?。評估系統(tǒng)的時候,一般看其每秒執(zhí)行的事務數(shù)以及SQL執(zhí)行的數(shù)量。在OLTP系統(tǒng)中,單個數(shù)據(jù)庫每秒處理的事務數(shù)往往超過幾百個,或者是幾千個,SELECT語句的執(zhí)行量每秒幾千甚至幾萬個。典型的OLTP系統(tǒng)有電子商務系統(tǒng)、銀行、證券等,例如,美國eBay的業(yè)務數(shù)據(jù)庫就是很典型的OLTP數(shù)據(jù)庫。在Oracle中創(chuàng)建OLTP系統(tǒng)時,使用一般用途或事務處理(GeneralPurposeorTransactionProcessing)模板。
具體而言,OLTP的特點一般有以下幾點:
1)實時性要求高。
2)數(shù)據(jù)量不是很大。
3)交易一般是確定的,所以,OLTP是對確定性的數(shù)據(jù)進行存取。例如,存取款都有一個特定的金額。
4)并發(fā)性要求高,并且有嚴格的事務完整性、安全性。例如,有可能你和你的家人同時在不同的銀行取同一個賬號的存款。
OLAP的特點一般有以下幾點:
1)實時性要求不是很高,很多應用都是每天晚上更新一次數(shù)據(jù)。
2)數(shù)據(jù)量大,因為OLAP支持的是動態(tài)查詢,用戶需要統(tǒng)計很多數(shù)據(jù)以后才能得到想要知道的信息,所以,OLAP處理的數(shù)據(jù)量很大。
3)因為重點在于決策支持,所以,OLAP查詢一般是動態(tài)的,也就是說允許用戶隨時提出查詢的要求。于是在OLAP中通過一個重要概念“維”來搭建一個動態(tài)查詢的平臺(或技術),供用戶自己去決定需要知道什么信息。
OLAP和OLTP的區(qū)別見下表。區(qū)分維度OLTP|OLAP用戶操作人員、低級管理人員決策人員、高級管理人員功能日常操作處理分析決策DB設計面向應用,事務驅動面向主題,面向分析,分析驅動數(shù)據(jù)原始的、當前的、最新細節(jié)的、二維的、分立的、實時更新的歷史的、聚集的、多維的、集成的、統(tǒng)一的、導出的、綜合性的、提煉性的、不實時更新但周期性刷新存取讀或寫數(shù)十條記錄,一次處理的數(shù)據(jù)量小讀上百萬條記錄,一次處理的數(shù)據(jù)量大工作單位簡單的事務,DML操作比較頻繁,并行事務處理多復雜的查詢,數(shù)據(jù)量大,DML操作少用戶數(shù)上千個上百個DB大小100MB-GB100GB-TB時間要求具有實時性對時間要求不嚴格主要應用數(shù)據(jù)庫數(shù)據(jù)倉庫[考點]OLAP和OLTP
23.
分布式數(shù)據(jù)庫有哪些優(yōu)點?正確答案:分布式數(shù)據(jù)庫的優(yōu)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025重慶建筑安全員考試題庫附答案
- 《抑郁癥患者的護理》課件
- 《營銷渠道策劃》課件
- 【物理課件】電磁鐵的應用課件
- 單位管理制度展示選集【人員管理篇】十篇
- 單位管理制度展示合集【職員管理篇】
- 單位管理制度展示選集人力資源管理十篇
- 中國針織圍巾等項目投資可行性研究報告
- 單位管理制度收錄大全【人員管理】十篇
- 單位管理制度收錄大合集【職工管理】十篇
- 外研版英語九年級上冊 Module1-12作文范文
- 南京市七年級上冊地理期末試卷(含答案)
- 足球課程教學計劃工作總結
- 家具成品檢驗通用標準
- 粉末涂料有限公司成品裝車作業(yè)安全風險分級管控清單
- 諾基亞4G基站配置及常見故障處理課件
- 運輸類工作簡歷
- 煤礦施工巷道布置及支護設計方案
- 施工升降機卸料平臺計算書
- 微信小程序開發(fā)完整全套教學課件
- GB/T 17799.2-2023電磁兼容通用標準第2部分:工業(yè)環(huán)境中的抗擾度標準
評論
0/150
提交評論