2023年oracle開發(fā)人員面試題_第1頁
2023年oracle開發(fā)人員面試題_第2頁
2023年oracle開發(fā)人員面試題_第3頁
2023年oracle開發(fā)人員面試題_第4頁
2023年oracle開發(fā)人員面試題_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

一、基礎(chǔ)概念

1.列舉幾種表連接方式

Answer:等連接(內(nèi)連接)、非等連接、自連接、外連接(左、右、全)

Orhashjoin/mergejoin/nestloop(clusterjoin)/indexjoin??

ORACLE8i,9i表連接方法。

一般的相等連接:select*froma,bwherea.id=b.id;這個就屬于內(nèi)連

接。

對于外連接:

Oracle中可以使用“(+)”來表達(dá),9i可以使用LEFT/RIGHT/FULLOUTERJOIN

LEFTOUTERJOIN:左外關(guān)聯(lián)

SELECTe.last_name,e.department_id,d.department_name

FROMemployeese

LEFTOUTERJOINdepartmentsd

ON(e.department_id=d.department_id);

等價于

SELECTe.last_name,e.department_id,d.department_name

FROMemployeese,departmentsd

WHEREe.department_id=d.department_id(+)

結(jié)果為:所有員工及相應(yīng)部門的記錄,涉及沒有相應(yīng)部門編號department_id

的員工記錄。

RIGHTOUTERJOIN:右外關(guān)聯(lián)

SELECTe.last_name,e.department_id,d.department_name

FROMemployeese

RIGHTOUTERJOINdepartmentsd

ON(e.department_id=d.department_id);

等價于

SELECTe.last_name,e.department_id,d.department_name

FROMemployeese,departmentsd

WHEREe.department_id(+)=d.department_id

結(jié)果為:所有員工及相應(yīng)部門的記錄,涉及沒有任何員工的部門記錄。

FULLOUTERJOIN:全外關(guān)聯(lián)

SELECTe.last_name,e.department_id,d.department_name

FROMemployeese

FULLOUTERJOINdepartmentsd

ON(e.department_id=d.department_id);

結(jié)果為:所有員工及相應(yīng)部門的記錄,涉及沒有相應(yīng)部門編號department_id

的員工記錄和沒有任何員工的部門記錄。

0RACLE8i是不直接支持完全外連接的語法,也就是說不能在左右兩個表上同時

加上(+),下面是在ORACLE81可以參考的完全外連接語法

selecttl.id,t2.idfromtableltl,tablet2wheretl.id=t2.id(+)

union

selecttl.id,t2.idfromtableltl,tablet2wheretl.id(+)=t2.id

連接類型

定義圖示例子

內(nèi)連接只連接匹配的行selectA.cl,B.c2fromAjoinBonA.c3=B.c3;

左外連接包含左邊表的所有行(不管右邊的表中是否存在與它們匹配的行)以

及右邊表中所有匹配的行selectA.cl,B.c2fromAleftjoinBonA.c3=B.c3;

右外連接包含右邊表的所有行(不管左邊的表中是否存在與它們匹配的行)以

及左邊表中所有匹配的行selectA.cl,B.c2fromArightjoinBonA.c3=B.c3;

全外連接包含左、右兩個表的所有行,不管在另一邊的表中是否存在與它們匹

配的行selectA.cl,B.c2fromAfulljoinBonA.c3=B.c3;

(theta)連接使用等值以外的條件來匹配左、右兩個表中的行select

A.cl,B.c2fromAjoinBonA.c3!=B.c3;

交叉連接生成笛卡爾積一一它不使用任何匹配或者選取條件,而是直接將一個

數(shù)據(jù)源中的每個行與另一個數(shù)據(jù)源的每個行一一匹配selectA.cl,B.c2

fromA,B;

2.不借助第三方工具,如何查看sql的執(zhí)行計劃

I)使用ExplainPlan,查詢PLAN_TABLE;

EXPLAINPLAN

SETSTATEMENT,ID=,QUERY1'

FOR

SELECT*

FROMa

WHEREaa=l;

SELECToperation,options,object_name,object_type,ID,parent_id

FROMplan_table

WHERESTATEMENT_ID=*QUERYP

ORDERBYID;

IDSQLPLUS中的SETTRACE即可看到ExecutionPlanStatistics

SETAUTOTRACEON;

3.如何使用CBO,CBO與RULE的區(qū)別

IF初始化參數(shù)0PTIMIZERJ10DE=CHOOSETHEN-(81DEFAULT)

IF做過表分析

THEN優(yōu)化器Optimizer=CBO(COST);/*高效*/

ELSE

優(yōu)化器Optimizer=RBO(RULE);/*高效*/

ENDIF;

ENDIF;

區(qū)別:

RBO根據(jù)規(guī)則選擇最佳執(zhí)行途徑來運營查詢。

CBO根據(jù)表記錄找到最低成本的訪問數(shù)據(jù)的方法擬定執(zhí)行計劃。

使用CBO需要注意:

I)需要經(jīng)常對表進(jìn)行ANALYZE命令進(jìn)行分析記錄;

II)需要穩(wěn)定執(zhí)行計劃;

HI)需要使用提醒(Hint);

使用RULE需要注意:

I)選擇最有效率的表名順序

H)優(yōu)化SQL的寫法;

在optimizer_mode=choose時,假如表有記錄信息(分區(qū)表外),優(yōu)化器將選擇

CBO,否則選RBOo

RBO遵循簡樸的分級方法學(xué),使用15種級別要點,當(dāng)接受到查詢,優(yōu)化器將評估

使用到的要點數(shù)目,然后選擇最佳級別(最少的數(shù)量)的執(zhí)行途徑來運營查詢。

CBO嘗試找到最低成本的訪問數(shù)據(jù)的方法,為了最大的吞吐量或最快的初始響應(yīng)

時間,計算使用不同的執(zhí)行計劃的成本,并選擇成本最低的一個,關(guān)于表的數(shù)據(jù)內(nèi)

容的記錄被用于擬定執(zhí)行計劃。

4.如何定位重要(消耗資源多)的SQL

使用CPU多的用戶session

SELECTa.SID,spid,status,SUBSTR(a.program,1,40)prog,

a.terminal,a.SQL_TEXT,osuser,VALUE/60/100VALUE

FROMv$sessiona,v$processb,v$sesstatc

WHEREc.statistic#=12ANDc.SID=a.SIDANDa.paddr=b.addr

ORDERBYVALUEDESC;

selectsql_textfromv$sql

wheredisk_reads>1000or(executions>0andbuffer_gets/executions>

30000);

5.如何跟蹤某個session的SQL

運用TRACE跟蹤

ALTERSESSIONSETSQLTRACEON;

COLUMNSQLformata200;

SELECTmachine,sql_textSQL

FROMv$sqltexta,v$sessionb

WHEREaddress=sql_address

ANDmachine='&A'

ORDERBYhash_value,piece;

execdbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace);

selectsid,serial#fromv$sessionwheresid=(selectsidfromv$mystat

whererownum=1);

execdbms_system.set_ev(&sid,&serial#,&event_10046,&level_12,;

6.SQL調(diào)整最關(guān)注的是什么

檢查系統(tǒng)的1/0問題

sar—d能檢查整個系統(tǒng)的iostat(10statistics)

查看該SQL的responsetime(dbblockgets/consistentgets/physical

reads/sorts(disk))

7.說說你對索引的結(jié)識(索引的結(jié)構(gòu)、對dml影響、對查詢影響、為什么提高

查詢性能)

索引有B-TREE、BIT、CLUSTER等類型。ORACLE使用了一個復(fù)雜的自平衡B-tree

結(jié)構(gòu);通常來說,在表上建立恰當(dāng)?shù)乃饕樵儠r會改善查詢性能。但在進(jìn)行插

入、刪除、修改時,同時會進(jìn)行索引的修改,在性能上有一定的影響。有索引且

查詢條件能使用索引時,數(shù)據(jù)庫會先度取索引,根據(jù)索引內(nèi)容和查詢條件,查詢

出ROWID,再根據(jù)R0WID取出需要的數(shù)據(jù)。由于索引內(nèi)容通常比全表內(nèi)容要少很

多,因此通過先讀索引,能減少I/O,提高查詢性能。

b-treeindex/bitmapindex/functionindex/patitionalindex(local/global)

索引通常能提高select/update/delete的性能,會減少insert的速度,

8.使用索引查詢一定能提高查詢的性能嗎?為什么

通常,通過索引查詢數(shù)據(jù)比全表掃描要快.但是我們也必須注意到它的代價.

索引需要空間來存儲,也需要定期維護(hù),每當(dāng)有記錄在表中增減或索引列被修改

時,索引自身也會被修改.這意味著每條記錄的INSERT,DELETE,UPDATE將為此

多付出4,5次的磁盤I/O.由于索引需要額外的存儲空間和解決,那些不必要的

索引反而會使查詢反映時間變慢.使用索引查詢不一定能提高查詢性能,索引范

圍查詢(INDEXRANGESCAN)合用于兩種情況:

基于一個范圍的檢索,一般查詢返回結(jié)果集小于表中記錄數(shù)的30%宜采用;

基于非唯一性索引的檢索

索引就是為了提高查詢性能而存在的,假如在查詢中索引沒有提高性能,只能說

是用錯了索引,或者講是場合不同

9.綁定變量是什么?綁定變量有什么優(yōu)缺陷?

綁定變量是指在SQL語句中使用變量,改變變量的值來改變SQL語句的執(zhí)行結(jié)果。

優(yōu)點:使用綁定變量,可以減少SQL語句的解析,能減少數(shù)據(jù)庫引擎消耗在SQL

語句解析上的資源。提高了編程效率和可靠性。減少訪問數(shù)據(jù)庫的次數(shù),就能事

實上減少ORACLE的工作量。

缺陷:經(jīng)常需要使用動態(tài)SQL的寫法,由于參數(shù)的不同,也許SQL的執(zhí)行效率不

同;

綁定變量是相對文本變量來講的,所謂文本變量是指在SQL直接書寫查詢條件,

這樣的SQL在不同條件下需要反復(fù)解析,綁定變量是指使用變量來代替直接書寫

條件,查詢bindvalue在運營時傳遞,然后綁定執(zhí)行。

優(yōu)點是減少硬解析,減少CPU的爭用,節(jié)省shared_pool

缺陷是不能使用histogram,sql優(yōu)化比較困難

10.如何穩(wěn)定(固定)執(zhí)行計劃

可以在SQL語句中指定執(zhí)行計劃。使用HINTS;

query_rewrite_enabled=true

star_transformation_enabled=true

optimizer_features_enable=9.2.0

創(chuàng)建并使用storedoutline

11.和排序相關(guān)的內(nèi)存在8i和9i分別如何調(diào)整,臨時表空間的作用是什么

SORT_AREA_SIZE在進(jìn)行排序操作時,假如排序的內(nèi)容太多,內(nèi)存里不能所有放

下,則需要進(jìn)行外部排序,

此時需要運用臨時表空間來存放排序的中間結(jié)果。

8i中sort_area_size/sort_area_retained_size決定了排序所需要的內(nèi)存,假

如排序操作不能在sort_area_size中完畢,就會用到temp表空間

9i中假如workarea_size_policy=auto時,

排序在pga內(nèi)進(jìn)行,通常pga_aggregate_target的1/20可以用來進(jìn)行disksort;

假如workarea_size_policy=manual時,排序需要的內(nèi)存由sort_area_size決

定,在執(zhí)行orderby/groupby/distinct/union/createindex/index

rebuild/minus等操作時,假如在pga或sort_area_size中不能完畢,排序?qū)⒃?/p>

臨時表空間進(jìn)行(disksort),臨時表空間重要作用就是完畢系統(tǒng)中的disksort.

12.存在表T(a,b,c,d),要根據(jù)字段c排序后取第21—30條記錄顯示,請給出

sql

SELECT*

FROM(SELECTROWNUMASrow_num,tmp_tab.*

FROM(SELECTa,b,c,d

FROMT

ORDERBYc)tmp_tab

WHEREROWNUM<=30)

WHERErow_num>=20

ORDERBYrownum;

createtablet(anumber(,bnumber(,cnumber(,dnumber();

/

begin

foriin1..300loop

insertintotvalues(mod(i,2),i/2,dbms_random.valued,300),i/4);

endloop;

end;

/

select*from(selectc.*,rownumasrnfrom(select*fromtorderbyc

desc)c)wherernbetween21and30;

select*from(select*fromtestorderbycdesc)xwhererownum<30

minus

select*from(select*fromtestorderbycdesc)ywhererownum<20

orderby3desc

相比之minus性能較差

二:數(shù)據(jù)庫基本概念類

1Pctusedandpctfree表達(dá)什么含義有什么作用

pctused與pctfree控制數(shù)據(jù)塊是否出現(xiàn)在freelist中,pctfree控制數(shù)據(jù)塊中

保存用于update的空間,當(dāng)數(shù)據(jù)塊中的freespace小于pctfree設(shè)立的空間時,

該數(shù)據(jù)塊從freelist中去掉,當(dāng)塊由于dml操作freespace大于pct_used設(shè)立

的空間時,該數(shù)據(jù)庫塊將被添加在freelist鏈表中。

2簡樸描述tablespace/segment/extent/block之間的關(guān)系

tablespace:一個數(shù)據(jù)庫劃分為一個或多個邏輯單位,該邏輯單位成為表空間;

每一個表空間也許包含一個或多個Segment;

Segments:Segment指在tablespace中為特定邏輯存儲結(jié)構(gòu)分派的空間。每一

個段是由一個或多個extent組成。涉及數(shù)據(jù)段、索引段、回滾段和臨時段。

Extents:一個extent由一系列連續(xù)的Oracleblocks組成.ORACLE為通過

extent來給segment分派空間。

DataBlocks:Oracle數(shù)據(jù)庫最小的I/O存儲單位,一個datablock相應(yīng)一個

或多個分派給datafile的操作系統(tǒng)塊。

table創(chuàng)建時,默認(rèn)創(chuàng)建了一個datasegment,每個datasegment具有min

extents指定的extents數(shù),每個extent據(jù)據(jù)表空間的存儲參數(shù)分派一定數(shù)量的

blocks

3描述tablespace和datafile之間的關(guān)系

一個表空間可包含一個或多個數(shù)據(jù)文獻(xiàn)。表空間運用增長或擴(kuò)展數(shù)據(jù)文獻(xiàn)擴(kuò)大表

空間,表空間的大小為組成該表空間的數(shù)據(jù)文獻(xiàn)大小的和。一個datafile只能

屬于一個表空間;

一個tablespace可以有一個或多個datafile,每個datafile只能在一個

tablespace內(nèi),table中的數(shù)據(jù),通過hash算法分布在tablespace中的各個

datafile中,tablespace是邏輯上的概念,datafile則在物理上儲存了數(shù)據(jù)庫的

種種對象。

4本地管理表空間和字典管理表空間的特點,ASSM有什么特點

本地管理表空間:(9i默認(rèn))空閑塊列表存儲在表空間的數(shù)據(jù)文獻(xiàn)頭。

特點:減少數(shù)據(jù)字典表的競爭,當(dāng)分派和收縮空間時會產(chǎn)生回滾,不需要合并。

字典管理表空間:(8i默認(rèn))空閑塊列表存儲在數(shù)據(jù)庫中的字典表里.

特點:片由數(shù)據(jù)字典管理,也許導(dǎo)致字典表的爭用。存儲在表空間的每一個段都

會有不同的存儲字句,需要合并相鄰的塊;

本地管理表空間(LocallyManagedTablespace簡稱LMT)

8i以后出現(xiàn)的一種新的表空間的管理模式,通過位圖來管理表空間的空間使用。

字典管理表空間(Dictionary-ManagedTablespace簡稱DMT)

8i以前涉及以后都還可以使用的一種表空間管理模式,通過數(shù)據(jù)字典管理表空

間的空間使用。動段空間管理(ASSM),它初次出現(xiàn)在0racle920里有了ASSM,

鏈接列表freelist被位圖所取代,它是一個二進(jìn)制的數(shù)組,

可以迅速有效地管理存儲擴(kuò)展和剩余區(qū)塊(freeblock),因此可以改善分段存

儲本質(zhì),ASSM表空間上創(chuàng)建的段尚有此外一個稱呼喊BitmapManagedSegments

(BMB段)。

5回滾段的作用是什么

回滾段用于保存數(shù)據(jù)修改前的映象,這些信息用于生成讀一致性數(shù)據(jù)庫信息、在

數(shù)據(jù)庫恢復(fù)和Rollback時使用。一個事務(wù)只能使用一個回滾段。

事務(wù)回滾:當(dāng)事務(wù)修改表中數(shù)據(jù)的時候,該數(shù)據(jù)修改前的值(即前影像)會存放

在回滾段中,當(dāng)用戶回滾事務(wù)(ROLLBACK)時,ORACLE將會運用回滾段中的數(shù)

據(jù)前影像來將修改的數(shù)據(jù)恢復(fù)到本來的值。

事務(wù)恢復(fù):當(dāng)事務(wù)正在解決的時候,例程失敗,回滾段的信息保存在undo表空

間中,ORACLE將在下次打開數(shù)據(jù)庫時運用回滾來恢復(fù)未提交的數(shù)據(jù)。

讀一致性:當(dāng)一個會話正在修改數(shù)據(jù)時,其他的會話將看不到該會話未提交的修

改。當(dāng)一個語句正在執(zhí)行時,該語句將看不到從該語句開始執(zhí)行后的未提交的

修改(語句級讀一致性)

當(dāng)ORACLE執(zhí)行SELECT語句時,ORACLE依照當(dāng)前的系統(tǒng)改變號(SYSTEMCHANGE

NUMBER-SCN)來保證任何前于當(dāng)前SCN的未提交的改變不被該語句解決??梢?/p>

想象:當(dāng)一個長時間的查詢正在執(zhí)行時,若其他會話改變了該查詢要查詢的某

個數(shù)據(jù)塊,ORACLE將運用回滾段的數(shù)據(jù)前影像來構(gòu)造一個讀一致性視圖

6日記的作用是什么

日記文獻(xiàn)(LogFile)記錄所有對數(shù)據(jù)庫數(shù)據(jù)的修改,重要是保護(hù)數(shù)據(jù)庫以防止

故障,以及恢復(fù)數(shù)據(jù)時使用。其特點如下:

a)每一個數(shù)據(jù)庫至少包含兩個日記文獻(xiàn)組。每個日記文獻(xiàn)組至少包含兩個日記文

獻(xiàn)成員。

b)日記文獻(xiàn)組以循環(huán)方式進(jìn)行寫操作。

c)每一個日記文獻(xiàn)成員相應(yīng)一個物理文獻(xiàn)。

記錄數(shù)據(jù)庫事務(wù),最大限度地保證數(shù)據(jù)的一致性與安全性

重做日記文獻(xiàn):含對數(shù)據(jù)庫所做的更改記錄,這樣萬一出現(xiàn)故障可以啟用數(shù)據(jù)恢

復(fù),一個數(shù)據(jù)庫至少需要兩個重做日記文獻(xiàn)

歸檔日記文獻(xiàn):是重做日記文獻(xiàn)的脫機(jī)副本,這些副本也許對于從介質(zhì)失敗中進(jìn)

行恢復(fù)很必要。

7SGA重要有那些部分,重要作用是什么

系統(tǒng)全局區(qū)(SGA):是ORACLE為實例分派的一組共享緩沖存儲區(qū),用于存放數(shù)

據(jù)庫數(shù)據(jù)和控制信息,以實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的管理和操作。

SGA重要涉及:

a)共享池(sharedpool):用來存儲最近執(zhí)行的SQL語句和最近使用的數(shù)據(jù)字典

的數(shù)據(jù)。

b)數(shù)據(jù)緩沖區(qū)(databasebuffercache):用來存儲最近從數(shù)據(jù)文獻(xiàn)中讀寫過的

數(shù)據(jù)。

c)重作日記緩沖區(qū)(red。logbuffer):用來記錄服務(wù)或后臺進(jìn)程對數(shù)據(jù)庫的

操作。

此外在SGA中尚有兩個可選的內(nèi)存結(jié)構(gòu):

d)Javapool:用來存儲Java代碼。

e)Largepool:用來存儲不與SQL直接相關(guān)的大型內(nèi)存結(jié)構(gòu)。備份、恢復(fù)使用。

GA:db_cache/shared_pool/large_pool/java_pool

db_cache:數(shù)據(jù)庫緩存(BlockBuffer)對于Oracle數(shù)據(jù)庫的運轉(zhuǎn)和性能起著

非常關(guān)鍵的作用,它占據(jù)Oracle數(shù)據(jù)庫SGA(系統(tǒng)共享內(nèi)存區(qū))的重要部分。

Oracle數(shù)據(jù)庫通過使用LRU算法,將最近訪問的數(shù)據(jù)塊存放到緩存中,從而優(yōu)

化對磁盤數(shù)據(jù)的訪問.

shared_pool:共享池的大小對于Oracle性能來說都是很重要的。共享池中保

存數(shù)據(jù)字典高速緩沖和完全解析或編譯的的PL/SQL塊和SQL語句及控制結(jié)構(gòu)

large_pool:使用MTS配置時,由于要在SGA中分派UGA來保持用戶的會話,就

是用Large_pool來保持這個會話內(nèi)存使用RMAN做備份的時候,要使用

Large_pool這個內(nèi)存結(jié)構(gòu)來做磁盤I/O緩存器

java_pool:為javaprocedure預(yù)備的內(nèi)存區(qū)域,假如沒有使用java

proc,java_pool不是必須的

8Oracle系統(tǒng)進(jìn)程重要有哪些,作用是什么

數(shù)據(jù)寫進(jìn)程(DBWR):負(fù)責(zé)將更改的數(shù)據(jù)從數(shù)據(jù)庫緩沖區(qū)高速緩存寫入數(shù)據(jù)文獻(xiàn)

日記寫進(jìn)程(LGWR):將重做日記緩沖區(qū)中的更改寫入在線重做日記文獻(xiàn)

系統(tǒng)監(jiān)控(SMON):檢查數(shù)據(jù)庫的一致性如有必要還會在數(shù)據(jù)庫打開時啟動數(shù)據(jù)

庫的恢復(fù)

進(jìn)程監(jiān)控(PMON):負(fù)責(zé)在一個Oracle進(jìn)程失敗時清理資源

檢查點進(jìn)程(CKPT):負(fù)責(zé)在每當(dāng)緩沖區(qū)高速緩存中的更改永久地記錄在數(shù)據(jù)庫中

時,更新控制文獻(xiàn)和數(shù)據(jù)文獻(xiàn)中的數(shù)據(jù)庫狀態(tài)信息。

歸檔進(jìn)程(ARCH):在每次日記切換時把已滿的日記組進(jìn)行備份或歸檔

恢復(fù)進(jìn)程(RECO):保證分布式事務(wù)的一致性,在分布式事務(wù)中,要么同時

commit,要么同時rollback;

作業(yè)調(diào)度器(CJQ):負(fù)責(zé)將調(diào)度與執(zhí)行系統(tǒng)中已定義好的job,完畢一些預(yù)定義

的工作.

三:備份恢復(fù)類

1備份如何分類

邏輯備份:exp/imp指定表的邏輯備份

物理備份:

熱備份:altertablespacebegin/endbackup;

冷備份:脫機(jī)備份(databaseshutdown)

RMAN備份

fullbackup/incrementalbackup(累積/差異)

物理備份

物理備份是最重要的備份方式。用于保證數(shù)據(jù)庫在最小的數(shù)據(jù)庫丟失或沒有數(shù)據(jù)

丟失的情況下得到恢復(fù)。

冷物理

冷物理備份提供了最簡樸和最直接的方法保護(hù)數(shù)據(jù)庫因物理損壞丟失。建議在以

下幾種情況中使用。

對一個已經(jīng)存在大最數(shù)據(jù)量的數(shù)據(jù)庫,在晚間數(shù)據(jù)庫可以關(guān)閉,此時應(yīng)用冷物理

備份。

對需對數(shù)據(jù)庫服務(wù)器進(jìn)行升級,(如更換硬盤),此時需要備份數(shù)據(jù)庫信息,并

在新的硬盤中恢復(fù)這些數(shù)據(jù)信息,建議采用冷物理備份。

熱物理

重要是指備份過程在數(shù)據(jù)庫打開并且用戶可以使用的情況下進(jìn)行。需要執(zhí)行熱物

理備份的情況有:

由于數(shù)據(jù)庫性質(zhì)規(guī)定不間斷工作,因而此時只能采用熱物理備份。

由于備份的規(guī)定的時間過長,而數(shù)據(jù)庫只能短時間關(guān)閉時。

邏輯備份(EXP/IMP)

邏輯備份用于實現(xiàn)數(shù)據(jù)庫對象的恢復(fù)。但不是基于時間點可完全恢復(fù)的備份策

略。只能作為聯(lián)機(jī)備份和脫機(jī)備份的一種補(bǔ)充。

完全邏輯備份

完全邏輯備份是將整個數(shù)據(jù)庫導(dǎo)出到一個數(shù)據(jù)庫的格式文獻(xiàn)中,該文獻(xiàn)可以在不

同的數(shù)據(jù)庫版本、操作系統(tǒng)和硬件平臺之間進(jìn)行移植。

指定表的邏輯備份

通過備份工具,可以將指定的數(shù)據(jù)庫表備份出來,這可以避免完全邏輯備份所帶

來的時間和財力上的浪費。

2歸檔是什么含義

關(guān)于歸檔日記:Oracle要將填滿的在線日記文獻(xiàn)組歸檔時,則要建立歸檔日記

(archivedredolog)o其對數(shù)據(jù)庫備份和恢復(fù)有下列用處:

數(shù)據(jù)庫后備以及在線和歸檔日記文獻(xiàn),在操作系統(tǒng)和磁盤故障中可保證所有提交

的事物可被恢復(fù)。

在數(shù)據(jù)庫打開和正常系統(tǒng)使用下,假如歸檔日記是永久保存,在線后備可以進(jìn)行

和使用。

數(shù)據(jù)庫可運營在兩種不同方式下:NOARCHIVELOG方式或ARCHIVELOG方式

數(shù)據(jù)庫在NOARCHIVELOG方式下使用時,不能進(jìn)行在線日記的歸檔,

數(shù)據(jù)庫在ARCHIVELOG方式下運營,可實行在線日記的歸檔

歸檔是歸檔當(dāng)前的聯(lián)機(jī)redo日記文獻(xiàn)。

SVRMGR>altersystemarchivelogcurrent;

數(shù)據(jù)庫只有運營在ARCHIVELOG模式下,并且可以進(jìn)行自動歸檔,才可以進(jìn)行聯(lián)

機(jī)備份。有了聯(lián)機(jī)備份才有也許進(jìn)行完全恢復(fù)。

3假如一個表在2023-08-0410:30:00被drop,在有完善的歸檔和備份的情況

下,如何恢復(fù)

9i新增的FLASHBACK應(yīng)當(dāng)可以;

Logminer應(yīng)當(dāng)可以找出DML。

有完善的歸檔和備份,先歸檔當(dāng)前數(shù)據(jù),然后可以先恢復(fù)到刪除的時間點之前,

把DROP的表導(dǎo)出來,然后再恢復(fù)到最后歸檔時間;

手工拷貝回所有備份的數(shù)據(jù)文獻(xiàn)

Sql)startupmount;

sql)alterdatabaserecoverautomaticuntiltime'2023-08-04:10:30:00(;

sql)alterdatabaseopenresetlogs;

4rman是什么,有何特點

RMAN(RecoveryManager)是DBA的一個重要工具,用于備份、還原和恢復(fù)oracle

數(shù)據(jù)庫,RMAN可以用來備份和恢復(fù)數(shù)據(jù)庫文獻(xiàn)、歸檔日記、控制文獻(xiàn)、系統(tǒng)參

數(shù)文獻(xiàn),也可以用來執(zhí)行完全或不完全的數(shù)據(jù)庫恢復(fù)。

RMAN有三種不同的用戶接口:COMMANDLINE方式、GUI方式(集成在OEM中的

備份管理器)、API方式(用于集成到第三方的備份軟件中)。

具有如下特點:

1)功能類似物理備份,但比物理備份強(qiáng)大N倍;

2)可以壓縮空塊;

3)可以在塊水平上實現(xiàn)增量;

4)可以把備份的輸出打包成備份集,也可以按固定大小分割備份集;

5)備份與恢復(fù)的過程可以自動管理;

6)可以使用腳本(存在Recoverycatalog中)

7)可以做壞塊監(jiān)測

5standby的特點

備用數(shù)據(jù)庫(standbydatabase):ORACLE推出的一種高可用性(HIGHAVAILABLE)

數(shù)據(jù)庫方案,在主節(jié)點與備用節(jié)點間通過日記同步來保證數(shù)據(jù)的同步,備用節(jié)點

作為主節(jié)點的備份,可以實現(xiàn)快速切換與劫難性恢復(fù),從920開始,還開始支持

物理與邏輯備用服務(wù)器。

9i中的三種數(shù)據(jù)保護(hù)模式分別是:

1)、MAXIMIZEPROTECTION:最大數(shù)據(jù)保護(hù)與無數(shù)據(jù)分歧,LGWR將同時傳送到

備用節(jié)點,在主節(jié)點事務(wù)確認(rèn)之前,備用節(jié)點也必須完全收到日記數(shù)據(jù)。假如網(wǎng)

絡(luò)不好,引起LGWR不能傳送數(shù)據(jù),將引起嚴(yán)重的性能問題,導(dǎo)致主節(jié)點DOWN

機(jī)。

2),MAXIMIZEAVAILABILITY:無數(shù)據(jù)丟失模式,允許數(shù)據(jù)分歧,允許異步傳送。

正常情況下運營在最大保護(hù)模式,在主節(jié)點與備用節(jié)點的網(wǎng)絡(luò)斷開或連接不正常

時,自動切換到最大性能模式,主節(jié)點的操作還是可以繼續(xù)的。在網(wǎng)絡(luò)不好的情

況下有較大的性能影響。

3)、MAXIMIZEPERFORMANCE:這種模式應(yīng)當(dāng)可以說是從8i繼承過來的備用服務(wù)

器模式,異步傳送,無數(shù)據(jù)同步檢查,也許丟失數(shù)據(jù),但是能獲得主節(jié)點的最大

性能。9i在配置DATAGUARD的時候默認(rèn)就是MAXIMIZEPERFORMANCE

6對于一個規(guī)定恢復(fù)時間比較短的系統(tǒng)(數(shù)據(jù)庫50G,天天歸檔5G),你如何設(shè)計

備份策略

數(shù)據(jù)庫比較大邏輯備份沒什么必要,天天歸檔5G,每周三/周六自動歸檔10G,

每月RMAN歸檔全庫。應(yīng)當(dāng)有standbyo

rman/每月一號level0每周末/周三level1其它天天level2

四:系統(tǒng)管理類

1.對于一個存在系統(tǒng)性能的系統(tǒng),說出你的診斷解決思緒

1做statspack收集系統(tǒng)相關(guān)信息了解系統(tǒng)大體情況/擬定是否存在參數(shù)設(shè)立

不合適的地方/查看top5event/查看topsql等

〕查v$system_event/v$session_event/v$session_wait從v$system_event開

始,擬定需要什么資源(dbfilesequentialread)等,進(jìn)一步研究

v$session_event,擬定等待事件涉及的會話,從v$session_wait擬定具體的資

源爭用情況(pl-p3的值:file_id/block_id/blocks等)

〕通過v$sql/v$sqltext/v$sqlarea表擬定diskjreads、

(buffer_gets/executions)值較大的SQL

2.列舉幾種診斷10、CPU、性能狀況的方法

topuptimevmstatiostatstatspacksql_trace/tkprof

查v$system_event/v$session_event/v$session_wait

查v$sqlarea(disk_reads或buffer_gets/executions較大的SQL)

或者第三方的監(jiān)視工具,TOAD就不錯。

3.對statspack有何結(jié)識

結(jié)識不深。僅限了解。StapSpack是Oracle公司提供的一個收集數(shù)據(jù)庫運營性

能指標(biāo)的軟件包??梢宰鰯?shù)據(jù)庫健康檢查報告。

StapSpack是Oracle公司提供的一個收集數(shù)據(jù)庫運營性能指標(biāo)的軟件包,該軟

件包從8i起,在9i、10g都有顯著的增強(qiáng)

該軟件包的輔助表(存儲相關(guān)參數(shù)與收集的性能指標(biāo)的表)由最初的25個增長

到43個

收集級別參數(shù)由本來的3個(0、5、10)增長到5個(0、5、6、7、10)

通過度析收集的性能指標(biāo),數(shù)據(jù)庫管理員可以具體地了解數(shù)據(jù)庫目前的運營情

況,對數(shù)據(jù)庫實例、等待事件、SQL等進(jìn)行優(yōu)化調(diào)整

運用statspack收集的snapshot,可以記錄制作數(shù)據(jù)庫的各種性能指標(biāo)的記錄趨

勢圖表。

4.假如系統(tǒng)現(xiàn)在需要在一個很大的表上創(chuàng)建一個索引,你會考慮那些因素,如

何做以盡量減小相應(yīng)用的影響

可以先表分析一下,然后測試創(chuàng)建索引前后相應(yīng)用的性能影響;

需要考慮的是該索引列不經(jīng)常更新,不是有很多反復(fù)值的情況時,在大表中使用

索引特別有效.創(chuàng)建的索引可以跟數(shù)據(jù)表分不同表空間存儲。

在系統(tǒng)比較空閑時nologging選項(假如有dataguard則不可以使用nologging)

大的sort_ared_size或pga_aggregate_target較大

5.對raidlO和raid5有何結(jié)識

RAID10(或稱RAID1+0)與RAID0+1不同,它是用硬盤驅(qū)動器先組成RAID1

陣列,然后在RAID1陣列之間再組成RAID0陣列。

RAID10模式同RAID0+1模式同樣具有良好的數(shù)據(jù)傳輸性能,但卻比RAID0+1

具有更高的可靠性。RAID10陣列的實際容量為MXn/2,磁盤運用率為50%。

RAID10也需要至少4個硬盤驅(qū)動器構(gòu)成,因而價格昂貴。

RAID10的可靠性同RAID1同樣,但由于RAID10硬盤驅(qū)動器之間有數(shù)據(jù)分割,

因而數(shù)據(jù)傳輸性能優(yōu)良。

RAID5與RAID3很相似,不同之處在于RAID5的奇偶校驗信息也同數(shù)據(jù)同樣

被分割保存到所有的硬盤驅(qū)動器,而不是寫入一個指定的硬盤驅(qū)動器,從而消除

了單個奇偶校驗硬盤驅(qū)動器的瓶頸問題。RAID5磁盤陣列的性能比RAID3有所

提高,但仍然需要至少3塊硬盤驅(qū)動器。其實際容量為MX(nT),磁盤運用率

為(nT)/no

五:綜合隨意類

1.你最擅長的是oracle哪部分?

pl/sql及sql優(yōu)化

2.喜歡oracle嗎?喜歡上論壇嗎?或者偏好oracle的哪一部分?

喜歡。PL/SQL比較得心應(yīng)手。

3.隨意說說你覺得oracle最故意思的部分或者最困難的部分

我對數(shù)據(jù)庫的備份/恢復(fù)和性能調(diào)優(yōu)經(jīng)驗明顯局限性,自然覺得有些困難。

基于ORACLE的研究應(yīng)當(dāng)是個寬廣的領(lǐng)域,所以我覺得還是故意思的。

4.為什么要選擇做DBA呢?

我對數(shù)據(jù)庫的備份/恢復(fù)和性能調(diào)優(yōu)經(jīng)驗明顯局限性,重要是缺少環(huán)境和交流。

因此,算不上什么DBAo但是因此我更需要這樣的機(jī)會。

但是就整個ORACLE來說,一直從事與它相關(guān)的工作,感情還是頗深的。放棄可

惜。并且就技術(shù)自身而言我覺得自己還是有學(xué)習(xí)和創(chuàng)新的能力,它的諸如數(shù)據(jù)倉

庫,數(shù)據(jù)挖掘之類的領(lǐng)域也很廣。

六:DatabasesQuestions&Answers

1.WhataretwomethodsofretrievingSQL?

2.Whatcursortypedoyouusetoretrievemultiplerecordsets?

3.Whatactiondoyouhavetoperformbeforeretrievingdatafromthenext

resultsetofastoredprocedure?

Movethecursordownonerowfromitscurrentposition.AResultSetcursor

isinitiallypositionedbeforethefirstrow.Beforeyoucangettothe

firstrow,youwouldneedtoMovethecursordownbyonerow(Forex:

injavathefirstcalltonextmakesthefirstrowthecurrentrow;the

secondcallmakesthesecondrowthecurrentrow,andsoon).

4.WhatisthebasicformofaSQLstatementtoreaddataoutofatable?

SELECT*FROMtable_name;

5.Whatstructurecanyouhavethedatabasemaketospeeduptablereads?

Thequestionisnotcorrect.Whatstructurecanyouhavethedatabase

maketospeeduptablereads?”Itisnotclearwhatexactlytheterm

“structure”meansinthiscase.FollowtherulesofDBtuningwehave

to:

1)properlyuseindexes(differenttypesofindexes)

2)properlylocatedifferentDBobjectsacrossdifferenttablespaces,

filesandsoon.

3)Createaspecialspace(tablespace)tolocatesomeofthedatawith

specialdatatypes(forexampleCLOB,LOBand…)

6.Whatisa“join”?

Joinsmergethedataoftworelatedtablesintoasingleresultset,

presentingadenormalizedviewofthedata.

7.Whatisa“constraint”?

Aconstraintallowsyoutoapplysimplereferentialintegritychecks

toatable.Thereare5primarytypesofconstraintsthatarecurrently

supportedbySQLServer:

PRIMARY/UNIQUE-enforcesuniquenessofaparticulartablecolumn.

DEFAULT-specifiesadefaultvalueforacolumnincaseaninsert

operationdoesnotprovideone.

FOREIGNKEY-validatesthateveryvalueinacolumnexistsina

columnofanothertable.

CHECK-checksthateveryvaluestoredinacolumnisinsome

specifiedlist

NOTNULL-isaconstraintwhichdoesnotallowvaluesinthespecific

columntobenull.Andalsoitistheonlyconstraintwhichisnotatable

levelconstraint.

8.Whatisa“primarykey”?

PrimaryKeyisatypeofaconstraintenforcinguniquenessanddata

integrityforeachrowofatable.Allcolumnsparticipatinginaprimary

keyconstraintmustpossesstheNOTNULLproperty.

9.Whatisafunctionaldependency"?Howdoesitrelatetodatabase

tabledesign?

Whatfunctionaldependenceinthecontextofadatabasemeansisthat:

AssumethatatableexistsinthedatabasecalledTABLEwithacomposite

primarykey(A,B)andothernon-keyattributes(C,D,E).Functional

dependencyingeneral,wouldmeanthatanynon-keyattribute-CDor

Ebeingdependentontheprimarykey(AandB)inourtablehere.

Partialfunctionaldependency,ontheotherhand,isanother

corollaryoftheabove,whichstatesthatallnon-keyattributes-CD

orE-ifdependentonthesubsetoftheprimarykey(AandB)andnot

onitasawhole.

Example:

FullyFunctionalDependent:CDE->AB

PartialFunctionaldependency:C->A,DE->B

Hopethathelps!

10.Whatisa“trigger”?

Atriggerisadatabaseobjectdirectlyassociatedwithaparticulartable.

Itfireswheneveraspecificstatement/typeofstatementisissuedagainst

thattable.Thetypesofstatementsareinsert,update,deleteandquery

statements.Basically,triggerisasetofSQLstatementsthatexecute

inresponsetoadatamodification/retrievaleventonatable.

Otherthantabletriggerstherearealsoschemaanddatabasetriggers.

Thesecanbemadetofirewhennewobjectsarecreated,whenauserlogs

in,whenthedatabaseshutdownetc.Tableleveltriggerscanbeclassified

intorowandstatementleveltriggersandthosecanbefurtherbrokendown

intobeforeandaftertriggers.Beforetriggerscanmodifydata.

11.Whatis“indexcoveringnofaquery?

Anonclusteredindexthatincludes(orcovers)allcolumnsusedinaquery

iscalledacoveringindex.WhenSQLservercanuseanonclusteredindex

toresolvethequery,itwillprefertoscantheindexratherthanthe

table,whichtypicallytakesfewerdatapages.Ifyourqueryusesonly

columnsincludedintheindex,thenSQLservermayscanthisindexto

producethedesiredoutput.

12.WhatisaSQLview?

ViewisaprecompliedSQLquerywhichisusedtoselectdatafromoneor

moretables.Aviewislikeatablebutitdoesn,tphysicallytakeany

space.Viewisagoodwaytopresentdatainaparticularformatifyou

usethatqueryquiteoften.

Viewcanalsobeusedtorestrictusersfromaccessingthetablesdirectly.

Aviewotherwiseknownasavirtualtableisamerewindowoverthebase

tablesinthedatabase.Thishelpsusgainacoupleofadvantages:

1)Inherentsecurityexposingonlythedatathatisneededtobeshown

totheenduser

2)Viewsareupdateablebasedoncertainconditions.Forexample,updates

canonlybedirectedtooneunderlyingtableoftheview.After

modificationiftherowsorcolumnsdon'tcomplywiththeconditionsthat

theviewwascreatedwith,thoserowsdisappearfromtheview.Youcould

usetheCHECKOPTIONwiththeviewdefinition,tomakesurethatany

updatestomaketherowsinvalidwillnotbepermittedtorun.

3)Viewsarenotmaterialized(givenaphysicalstructure)inadatabase.

Eachtimeaviewisqueriedthedefinitionstoredinthedatabaseisrun

againstthebasetablestoretrievethedata.Oneexceptiontothisis

tocreateaclusteredindexontheviewtomakeitpersistentinthe

database.Onceyoucreateaclusteredindexontheview,youcancreate

anynumberofnon-clusteredindexesontheview.

13.存儲過程和函數(shù)的區(qū)別

存儲過程是用戶定義的一系列sql語句的集合,涉及特定表或其它對象的任務(wù),

用戶可以調(diào)用存儲過程,而函數(shù)通常是數(shù)據(jù)庫已定義的方法,它接受參數(shù)并返回

某種類型的值并且不涉及特定用戶表。

14.事務(wù)是什么?

事務(wù)是作為一個邏輯單元執(zhí)行的一系列操作,一個邏輯工作單元必須有四個屬

性,稱為ACID(原子性、一致性、隔離性和持久性)屬性,只有這樣才干成為一

個事務(wù):

原子性:事務(wù)必須是原子工作單元;對于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都

不執(zhí)行。

一致性:事務(wù)在完畢時,必須使所有的數(shù)據(jù)都保持一致狀態(tài)。在相關(guān)數(shù)據(jù)庫中,

所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時,所

有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如B樹索引或雙向鏈表)都必須是對的的。

隔離性:由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。事務(wù)

查看數(shù)據(jù)時數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是另

一事務(wù)修改它之后的狀態(tài),事務(wù)不會查看中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,由

于它可以重新裝載起始數(shù)據(jù),并且重播一系列事務(wù),以使數(shù)據(jù)結(jié)束時的狀態(tài)與原

始事務(wù)執(zhí)行的狀態(tài)相同。

持久性:事務(wù)完畢之后,它對于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)系統(tǒng)故

障也將一直保持。

15.游標(biāo)的作用?如何知道游標(biāo)已經(jīng)到了最后?

游標(biāo)用于定位結(jié)果集的行,通過判斷全局變量@@FETCH_STATUS可以判斷是否到

了最后,通常此變量不等于0表達(dá)犯錯或到了最后。

16.觸發(fā)器分為事前觸發(fā)和事后觸發(fā),這兩種觸發(fā)有和區(qū)別。語句級觸發(fā)和行級

觸發(fā)有何區(qū)別。

事前觸發(fā)器運營于觸發(fā)事件發(fā)生之前,而事后觸發(fā)器運營于觸發(fā)事件發(fā)生之后。

通常事前觸發(fā)器可以獲取事件之前和新的字段值。

語句級觸發(fā)器可以在語句執(zhí)行前或后執(zhí)行,而行級觸發(fā)在觸發(fā)器所影響的每一行

觸發(fā)一次。

17.SQLServer常用測試題(1)

問題描述:

為管理崗位業(yè)務(wù)培訓(xùn)信息,建立3個表:

S(S#,SN,SD,SA)S#,SN,SD,SA分別代表學(xué)號、學(xué)員姓名、所屬單位、學(xué)員年齡

C(C#,CN)C#,CN分別代表課程編號、課程名稱

SC(S#,C#,G)S#,C#,G分別代表學(xué)號、所選修的課程編號、學(xué)習(xí)成績

1.使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修課程名稱為‘稅收基礎(chǔ)’的學(xué)員學(xué)號和姓名

-實現(xiàn)代碼:

SELECTSN,SDFROMS

WHERE[S#]IN(SELECT[S#]FROMC,SCWHEREC.[C#]=SC.[C#]ANDCN=N'稅

收基礎(chǔ)')

2.使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修課程編號為‘C2'的學(xué)員姓名和所屬單位

-實現(xiàn)代碼:

SELECTS.SN,S.SDFROMS,SC

WHERES.[S#]=SC.[S#]ANDSC.[C#]='C2'

3.使用標(biāo)準(zhǔn)SQL嵌套語句查詢不選修課程編號為‘C5’的學(xué)員姓名和所屬單位

-實現(xiàn)代碼:

SELECTSN,SDFROMS

WHERE[S#]NOTIN(SELECT[S#]FROMSCWHERE[C#]=‘C5')

4.使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修所有課程的學(xué)員姓名和所屬單位

-實現(xiàn)代碼:

SELECTSN,SDFROMS

WHERE[S#]IN(SELECT[S#]FROMSCRIGHTJOIN

CONSC.[C#]=C.[C#]GROUPBY[S#]

HAVINGCOUNT(*)=COUNT([S#]))

5.查詢選修了課程的學(xué)員人數(shù)

-實現(xiàn)代碼:

SELECT學(xué)員人數(shù)=COUNT(DISTINCT[Sit])FROMSC

6.查詢選修課程超過5門的學(xué)員學(xué)號和所屬單位

-實現(xiàn)代碼:

SELECTSN,SDFROMS

WHERE[S#]IN(

SELECT[S#]FROMSC

GROUPBY[S#]

HAVINGCOUNT(DISTINCT[C#])>5)

18.SQLServer常用測試題(2)

問題描述:

已知關(guān)系模式:

S(SNO,SNAME)學(xué)生關(guān)系。SNO為學(xué)號,SNAME為姓名

C(CNO,CNAME,CTEACHER)課程關(guān)系。CNO為課程號,CNAME為課程名,CTEACHER

為任課教師

SC(SNO,CNO,SCGRADE)選課關(guān)系。SCGRADE為成績

1.找出沒有選修過“李明”老師講授課程的所有學(xué)生姓名

-實現(xiàn)代碼:

SELECTSNAMEFROMS

WHERENOTEXISTS(

SELECT*FROMSC,CWHERESC.CNO=C.CNOANDCNAME='李明'AND

SC.SNO=S.SNO)

2.列出有二門以上(含兩門)不及格課程的學(xué)生姓名及其平均成績

-實現(xiàn)代碼:

SELECTS.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)

FROMS,SC,(

SELECTSNOFROMSCWHERESCGRADE<60GROUPBYSNO

HAVINGCOUNT(DISTINCTCNO)>=2)AWHERES.SNO=A.SNOANDSC.SNO=A.SNO

GROUPBYS.SNO,S.SNAME

3.列出既學(xué)過“1”號課程,又學(xué)過“2”號課程的所有學(xué)生姓名

-實現(xiàn)代碼:

SELECTS.SNO,S.SNAME

FROMS,(SELECTSC.SNOFROMSC,C

WHERESC.CNO=C.CNOANDC.CNAMEIN('I'2,)

GROUPBYSNO

HAVINGCOUNT(DISTINCTCNO)=2

)SCWHERES.SNO=SC.SNO

4.列出“1”號課成績比“2”號同學(xué)該門課成績高的所有學(xué)生的學(xué)號

-實現(xiàn)代碼:

SELECTS.SNO,S.SNAME

FROMS,(

SELECTSCI.SNO

FROMSCSCl.CCl,SCSC2,CC2

WHERESCI.CNO=C1.CNOANDCl.NAME='1'

ANDSC2.CN0=C2.CNOANDC2.NAME=,2'

ANDSCI.SCGRADE>SC2.SCGRADE

)SCWHERES.SNO=SC.SNO

5.列出“1”號課成績比“2”號課成績高的所有學(xué)生的學(xué)號及其“1”號課和

“2”號課的成績

-實現(xiàn)代碼:

SELECTS.SNO,S.SNAME,SC.[1號課成績],SC.[2號課成績]

FROMS,(

SELECTSCI.SNO,[1號課成績]=SC1.SCGRADE,[2號課成績]=SC2.SCGRADE

FROMSCSCl.CCl,SCSC2,CC2

WHERESCI.CNO=C1.CNOANDCl.NAME='1'

ANDSC2.CN0=C2.CNOANDC2.NAME=,2'

ANDSCI.SCGRADE>SC2.SCGRADE

)SCWHERES.SNO=SC.SNO

19.Question1:CanyouuseabatchSQLorstoreproceduretocalculating

theNumberofDaysinaMonth

找出當(dāng)月的天數(shù)

select

datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(cast(year(getdate())as

varchar)+cast(month(getdate0)asvarchar)+,-01'asdatetime))))

20.Question2:CanyouuseaSQLstatementtocalculatingit!

HowcanIprinta10to20"forbooksthatsellforbetween$10and

$20,“unknown”forbookswhosepriceisnull,and“other“forallother

prices?

selectbookid,bookname,price=casewhenpriceisnullthen'unknown'

whenpricebetween10and20then'10to20'elsepriceend

frombooks

21.Questions:CanyouuseaSQLstatementtofindingduplicatevalues!

HowcanIfindauthorswiththesamelastname?

Youcanusethetableauthorsindatatabasepubs.Iwanttogettheresult

asbelow:

Output:

au_lnamenumber_dups

Ringer2

(1row(s)affected)

Answer3

sele

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論