數(shù)據(jù)庫概念名詞及常用SQL_第1頁
數(shù)據(jù)庫概念名詞及常用SQL_第2頁
數(shù)據(jù)庫概念名詞及常用SQL_第3頁
數(shù)據(jù)庫概念名詞及常用SQL_第4頁
數(shù)據(jù)庫概念名詞及常用SQL_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫筆試面試11、事務(wù)是什么?A:所謂事務(wù)是用戶定義的一個(gè)數(shù)據(jù)庫操作序列,這些操作要么全做要么全不做,是一個(gè)不可分割的工作單位。一視圖視圖是原始數(shù)據(jù)庫數(shù)據(jù)的一種變換,是查看表中數(shù)據(jù)的另外一種方式??梢詫⒁晥D看成是一個(gè)移動(dòng)的窗口,通過它可以看到感興趣的數(shù)據(jù)。視圖是從一個(gè)或多個(gè)實(shí)際表中獲得的,這些表的數(shù)據(jù)存放在數(shù)據(jù)庫中。那些用于產(chǎn)生視圖的表叫做該視圖的基表。一個(gè)視圖也可以從另一個(gè)視圖中產(chǎn)生。視圖的定義存在數(shù)據(jù)庫中,與此定義相關(guān)的數(shù)據(jù)并沒有再存一份于數(shù)據(jù)庫中。通過視圖看到的數(shù)據(jù)存放在基表中。視圖看上去非常象數(shù)據(jù)庫的物理表,對它的操作同任何其它的表一樣。當(dāng)通過視圖修改數(shù)據(jù)時(shí),實(shí)際上是在改變基表中的數(shù)據(jù);相反地,基表數(shù)據(jù)的改變也會(huì)自動(dòng)反映在由基表產(chǎn)生的視圖中。由于邏輯上的原因,有些視圖可以修改對應(yīng)的基表,有些則不能(僅僅能查詢)。視圖的作用簡單性??吹降木褪切枰摹R晥D不僅可以簡化用戶對數(shù)據(jù)的理解,也可以簡化他們的操作。那些被經(jīng)常使用的查詢可以被定義為視圖,從而使得用戶不必為以后的操作每次指定全部的條件。*安全性。通過視圖用戶只能查詢和修改他們所能見到的數(shù)據(jù)。數(shù)據(jù)庫中的其它數(shù)據(jù)則既看不見也取不到。數(shù)據(jù)庫授權(quán)命令可以使每個(gè)用戶對數(shù)據(jù)庫的檢索限制到特定的數(shù)據(jù)庫對象上,但不能授權(quán)到數(shù)據(jù)庫特定行和特定的列上。邏輯數(shù)據(jù)獨(dú)立性。視圖可幫助用戶屏蔽真實(shí)表結(jié)構(gòu)變化帶來的影響。視圖可以使應(yīng)用程序和數(shù)據(jù)庫表在一定程度上獨(dú)立。如果沒有視圖,應(yīng)用一定是建立在表上的。有了視圖之后,程序可以建立在視圖之上,從而程序與數(shù)據(jù)庫表被視圖分割開來。如:如果應(yīng)用建立在視圖上,當(dāng)應(yīng)用發(fā)生變化時(shí),可以在表上修改視圖,通過視圖屏蔽應(yīng)用的變化,從而數(shù)據(jù)庫可以不動(dòng)。三、數(shù)據(jù)庫索引索引的通俗理解:為表中的數(shù)據(jù)的一列或者幾列建一個(gè)目錄,目錄會(huì)告訴數(shù)據(jù)庫你要找的記錄在哪里。這樣就避免了全表查詢。提高數(shù)據(jù)庫表數(shù)據(jù)訪問速度。例如索引:CREATEINDEXIDX_CITY_CITYNAMEONCITY(CITYNAME);對表CITY按CITYNAME建一個(gè)目錄,當(dāng)你要查找CITYNAME為深圳的記錄時(shí),數(shù)據(jù)庫就去目錄中查找'深圳',找到深圳后,目錄會(huì)告訴數(shù)據(jù)庫,CITYNAME為深圳的記錄在哪里!從而避免全表查詢??梢曰跀?shù)據(jù)庫表中的單列或多列創(chuàng)建索引。多列索引可以區(qū)分其中一列可能有相同值的行。索引是消耗表空間大小的,當(dāng)你執(zhí)行建立索引的sql時(shí),數(shù)據(jù)庫會(huì)消耗一定的表空間來建立一個(gè)目錄(這個(gè)目錄對我們來說是不可見的),當(dāng)你使用到索引進(jìn)行查詢時(shí),數(shù)據(jù)庫將在索引(目錄)中查找對應(yīng)記錄在磁盤上的物理位置,從而找到對應(yīng)記錄。以新華字典作比喻。按部首查詢的目錄就類似于數(shù)據(jù)庫中的非聚類索引。該目錄需要占據(jù)字典十幾頁版面(就象索引需要占據(jù)數(shù)據(jù)庫表空間),當(dāng)我們要找'唐'字時(shí),我們到目錄中找到'廣'字部首下的'唐'字,目錄就告訴我們?nèi)プ值涞?55頁找'唐'的釋義。(當(dāng)數(shù)據(jù)庫要查找某條記錄時(shí),使用了索引后,索引會(huì)告訴計(jì)算機(jī)對應(yīng)的記錄在磁盤的具體位置。)如果沒有任何索引,則需要去數(shù)據(jù)表中查找記錄時(shí),數(shù)據(jù)庫會(huì)從第1條記錄開始查找符合條件的記錄,直到最后1條。(就象字典中沒有目錄,則我們需要在字典中,從第1頁開始找,直到找到為止)當(dāng)然,雖然索引可以提高查詢速度,但是它們也會(huì)導(dǎo)致數(shù)據(jù)庫系統(tǒng)更新數(shù)據(jù)的性能下降,因?yàn)榇蟛糠謹(jǐn)?shù)據(jù)更新需要同時(shí)更新索引。創(chuàng)建索引最普通的情況,是為出現(xiàn)在where子句的字段建一個(gè)索引。如在查詢時(shí)常用類似以下的語句:SELECT*FROMmytableWHEREcategory_id=1;最直接的應(yīng)對之道,是為category_id建立一個(gè)簡單的索引:CREATEINDEXmytable_categoryidONmytable(category_id);如果有不止一個(gè)選擇條件呢?例如:SELECT*FROMmytableWHEREcategory_id=1ANDuser_id=2;可以建立多重的索引:CREATEINDEXmytable_categoryid_useridONmytable(category_id,user_id);注意到在命名時(shí)的習(xí)慣了嗎?使用"表名_字段1名_字段2名"的方式。索引的類型A) 聚集索引(clusteredindex),表數(shù)據(jù)行的存儲(chǔ)順序與索引的存儲(chǔ)順序一致。一個(gè)表只能包含一個(gè)聚集索引。因?yàn)閿?shù)據(jù)表的物理存儲(chǔ)順序只有一種。與非聚集索引相比,聚集索引通常提供更快的數(shù)據(jù)訪問速度。B) 非聚集索引(nonclusteredindex),表數(shù)據(jù)存儲(chǔ)順序與索引順序無關(guān)。一個(gè)數(shù)據(jù)表可以有多種非聚集索引。聚集索引和非聚集索引的區(qū)別?聚集索引中的順序也就是數(shù)據(jù)行的實(shí)際排列順序,每次增刪改等都可能進(jìn)行數(shù)據(jù)行移動(dòng),對于聚集索引請不要建在將會(huì)頻繁修改的列上,因?yàn)閿?shù)據(jù)行是按列值大小排序的,因此可能會(huì)引起數(shù)據(jù)行整行移動(dòng).所謂聚集也就是按順序的意思,索引列值大小相近的物理數(shù)據(jù)行排在一起.如字典里的拼音檢索。比如,我們要查“安”字,就會(huì)很自然地翻開字典的前幾頁,因?yàn)榘凑掌匆襞判驖h字的字典是以英文字母“a”開頭并以“z”結(jié)尾的,那么“安”字就自然地排在字典的前部;同樣的,如果查“張”字,那您也會(huì)將您的字典翻到最后部分。也就是說,字典的正文部分本身就是一個(gè)目錄,您不需要再去查其他目錄來找到您需要找的內(nèi)容。非聚集則沒有這些特點(diǎn),它和數(shù)據(jù)行的物理排列順序不相干,它只不過是物理數(shù)據(jù)的另一種"目錄"罷了,就象字典除了拼音檢索還是有其它好幾種檢索方式如果您認(rèn)識(shí)某個(gè)字,您可以快速地從自動(dòng)中查到這個(gè)字。但您不認(rèn)識(shí)某個(gè)字也不知道它的發(fā)音,這時(shí)候,需要去根據(jù)“偏旁部首”查到您要找的字,然后根據(jù)這個(gè)字后的頁碼直接翻到某頁來找到您要找的字。但您結(jié)合“部首目錄”和“檢字表”而查到的字的排序并不是真正的正文的排序方法,比如檢字表中看到的連續(xù)的“馳、張、弩”三字實(shí)際上就是他們在非聚集索引中的排序,但在字典正文中的字分別在99、522、345頁,是在非聚集索引中的映射。它需要兩個(gè)過程,先找到目錄中的結(jié)果,然后再翻到您所需要的頁碼。為什么一個(gè)表只能有一個(gè)聚集索引,因?yàn)閿?shù)據(jù)行的物理排序只能有一種.但是邏輯排序卻可以很多,在其它地方搞幾個(gè)"目錄"這就是邏輯排序,所以從這點(diǎn)上看我想連初中生都可以知道聚集索引大部分情況是比非聚集索引快的,因?yàn)橛邢忍靸?yōu)勢呢。索引的存儲(chǔ)一條索引記錄中包含的基本信息包括:鍵值(即索引指定的字段的值)+邏輯指針(指向數(shù)據(jù)頁或者另一索引頁)。常見的數(shù)據(jù)庫系統(tǒng),其索引使用的數(shù)據(jù)結(jié)構(gòu)多是B-Tree或者B+Tree。例如,MsSql使用的是B+Tree,Oracle及Sysbase使用的是B-Tree。B-Tree不同于BinaryTree(二叉樹,最多有兩個(gè)子樹),一棵M階的B-Tree滿足以下條件:1) 每個(gè)結(jié)點(diǎn)至多有M個(gè)孩子;2) 除根結(jié)點(diǎn)和葉結(jié)點(diǎn)外,其它每個(gè)結(jié)點(diǎn)至少有M/2個(gè)孩子;3) 根結(jié)點(diǎn)至少有兩個(gè)孩子(除非該樹僅包含一個(gè)結(jié)點(diǎn));4) 所有葉結(jié)點(diǎn)在同一層,葉結(jié)點(diǎn)不包含任何關(guān)鍵字信息;5) 有K個(gè)關(guān)鍵字的非葉結(jié)點(diǎn)恰好包含K+1個(gè)孩子;另外,對于一個(gè)結(jié)點(diǎn),其內(nèi)部的關(guān)鍵字是從小到大排序的。以下是B-Tree(M=4)的樣例:2、oracle中truncate和delete命令有何區(qū)別?(1)delete將在回滾段中產(chǎn)生回滾信息,truncate不產(chǎn)生,因此無論表中的記錄多少,truncate執(zhí)行都很快。(2)truncate是DDL,執(zhí)行隱含的commit,truncate不能回滾。任何沒有提交的DML改變也將會(huì)和truncate一起提交。

truncate重置表及其索引高水位標(biāo)志。全表掃描和索引快速全掃描讀高水位標(biāo)志下的所有數(shù)據(jù)塊,因此在delete后全掃描性能沒有提高,但truncate后將會(huì)變快。truncate不觸發(fā)delete觸發(fā)器。沒有對象權(quán)限允許一個(gè)用戶truncate另一個(gè)用戶的表。這樣做需要DROPANYTABLE系統(tǒng)權(quán)限。當(dāng)一個(gè)表被truncate,表及其索引的存儲(chǔ)將被重置回初始大小。而delete不收縮表及其索引的大小。當(dāng)父表有一個(gè)可用的引用完整性約束時(shí)不能被truncate。必須先disable引用父表的外鍵約束,再truncate。3、Oracle中char和varchar2數(shù)據(jù)類型有什么區(qū)別?有數(shù)據(jù)"test”分別存放到char(10)和varchar2(10)類型的字段中,其存儲(chǔ)長度及類型有何區(qū)別?A:char是定長字符類型,varchar2是變長字符類型?!皌est”在char(10)中被補(bǔ)齊空格,存儲(chǔ)長度是10字節(jié),在varchar2(10)中存儲(chǔ)長度是4字節(jié)。4、參見如下表結(jié)構(gòu)作者:4作者代號作者:4作者代號charj4r作者名稱varcha.c2 I性別char^l),1年齡number⑶』i文學(xué)方向varcharZ.t64)4獲獎(jiǎng)名單:丄獲獎(jiǎng)日期date^4獲獎(jiǎng)人員char(4).:4r出版社代碼char(2)>出版社名稱varchar2(32)^圖書4圖書編號char(S)J圖書名隸varchar2(12S)>出版社代碼char(2)J件者代號char(4)J/ 圖書簡介二編寫SQL語句,找出“作者"庫中沒有出現(xiàn)在“獲獎(jiǎng)名單”庫中所有作者信息的SQL語句(提示:使用notin、notexists以及外關(guān)聯(lián)三種方法,并說明哪種方法最優(yōu))。select*from作者where作者代號notin(select獲獎(jiǎng)人員from獲獎(jiǎng)名單);select*from作者wherenotexists(select1from獲獎(jiǎng)名單where作者.作者代號=獲獎(jiǎng)名單.獲獎(jiǎng)人員);select*from作者leftjoin獲獎(jiǎng)名單on作者.作者代號=獲獎(jiǎng)名單.獲獎(jiǎng)人員where獲獎(jiǎng)名單.獲獎(jiǎng)人員isnull;外關(guān)聯(lián)的性能好于notexists,notexists好于notin。5、 Oracle數(shù)據(jù)庫表存在偽列rowid,請利用rowid編寫一個(gè)SQL語句,從以下記錄中找到唯一記錄,并將其flag列更新為YNonamesexflag1張三1N1張三1N1張三1Nupdatetsetflag='Y'whererowid=(selectmin(rowid)fromtt2wheret.no=t2.noand=andt.sex=t2.sex);6、 Oracle中,需要在查詢語句中把空值(NULL)輸出為0,如何處理?A:selectnvl(c1,0)fromt1;7、 見第四題“獲獎(jiǎng)名單"表,寫出SQL語句,查詢出在上一個(gè)月獲獎(jiǎng)的人員。A:select*from作者join獲獎(jiǎng)名單on作者.作者代號=獲獎(jiǎng)名單.獲獎(jiǎng)人員whereto_char(獲獎(jiǎng)名單.獲獎(jiǎng)日期,’yyyy-mm')=to_char(add_months(sysdate,T),'yyyy-mm');8、 見第四題“圖書”表,在表上對圖書名稱、出版社代碼、作者代號創(chuàng)建了組合索引,請問在執(zhí)行如下語句時(shí)會(huì)不會(huì)利用到索引。

Select*fromSelect*from圖書Select*from圖書Select*from圖書Select*from圖書where圖書名稱='xxxx'where圖書名稱='xxxx'where圖書名稱='xxxx'where出版社代碼='yyy'and出版社代碼='bb'and作者代號='ddd'A:根據(jù)索引的“最左前綴”原理,前三個(gè)查詢會(huì)利用索引,最后一個(gè)不會(huì)。9、編寫一個(gè)簡單的Oracle存儲(chǔ)過程,輸出參數(shù)必須有一個(gè)是結(jié)果集。A:CREATEORREPLACEpackagepkg_getrecordisTYPEmyrctypeISREFCURSOR;endpkg_getrecord;/CREATEORREPLACEPROCEDUREp_ret_rs(r_cursorOUTpkg_getrecord.myrctype)ISBEGINOPENr_cursorFORSELECT*FROMt;EXCEPTIONWHENOTHERSTHENROLLBACK;RAISE;ENDp_ret_rs;/oralce數(shù)據(jù)庫一、選擇題1、 在sql的查詢語句中,用于分組查詢的語句是(c)。orderby b)where c)groupby d)having2、 在“學(xué)生情況.dbf”表中,查詢計(jì)算機(jī)專業(yè)、助學(xué)金大于40元的學(xué)生的姓名,正確的語句是(c)。select姓名from學(xué)生情況where計(jì)算機(jī).and.助學(xué)金〈40select姓名from學(xué)生情況where專業(yè)=“計(jì)算機(jī)”.or.助學(xué)金>40select姓名from學(xué)生情況where專業(yè)=“計(jì)算機(jī)”.and.助學(xué)金>40select姓名from學(xué)生情況where專業(yè)=“計(jì)算機(jī)”.and.助學(xué)金<403、 下列sql語句中,修改表結(jié)構(gòu)的是(a)。a)alter b)createc)desc d)rename4、 已知職工表emp有工號e_no和工資e_sal兩個(gè)字段。從職工關(guān)系中檢索所有工資值,要求在輸出結(jié)果中沒有重復(fù)的工資值,則sql的命令語句能實(shí)現(xiàn)上述功能的是(b)a)selectalle_salfromempb)selectdistinct e_salfromempc)selecte_salfromempd)selecte_salwhereemp5、 請選出屬于dml的選項(xiàng)(c)a)truncateb)creatc)deleted)drop6、 視圖存放在哪里(b)a.數(shù)據(jù)庫的表中 b.數(shù)據(jù)字典的select語句中c.from列表的第一個(gè)表格的select語句中d.列表的第二個(gè)表格的select語句中7、 當(dāng)fetch執(zhí)行失敗時(shí),哪種游標(biāo)的屬性值為true(c)%isopen b.%found c.%notfound d.%rowcount8、 下列那些說法是正確的(b)一個(gè)事務(wù)中的某條sql命令提交時(shí),其它sql命令可以不提交。在一個(gè)關(guān)系表中,主鍵可唯一標(biāo)識(shí)一行記錄。一個(gè)關(guān)系表中的外鍵必定是另一表中的主鍵?;貪L可以在事務(wù)失敗時(shí),回到操作事務(wù)前的數(shù)據(jù)狀態(tài)。9、 假如一個(gè)變量的值為null,有一條if語句,if變量=null分支1else分支2請問最終執(zhí)行的結(jié)果是(b)a)分支1b)分支2c)系統(tǒng)錯(cuò)誤提示d)都沒有執(zhí)行10、 關(guān)于主鍵(primarykey)和唯一索引(uniqueindex)的說法哪些是錯(cuò)誤的?(a)a、 唯一索引的列允許為null值b、 主鍵的列不允許為null值c、 一個(gè)表只能有一個(gè)唯一索引11、教師信息表teacher包含以下字段:last_namevarchar2(25)first_namevarchar2(25)email varchar2(25)下面哪個(gè)語句可以顯示無email地址的教師的姓名(c)selectlast_name ,fist_name from teacher where email=nullselect last_name, first_name from teacher where email<>nullselect last_name, first_name from teacher where emailisnullselect last_name, first_name from teacher where emailisnotnull12、在執(zhí)行一個(gè)查詢時(shí)哪個(gè)是正確的順序?(c)a、解析、執(zhí)行 b、執(zhí)行、解析、獲取c、解析、執(zhí)行、獲取 d、解析、獲取二、判斷對錯(cuò)1、 一個(gè)表空間可以含有多個(gè)數(shù)據(jù)文件,一個(gè)數(shù)據(jù)文件也可以跨多個(gè)表空間。一個(gè)表不可以跨表空間(錯(cuò)誤)2、 一個(gè)表test有字段id,name,age,address,email,salary刪除age大于平均年齡的記錄。這樣寫可以嗎?deletefromtestwhereage>avg(age);(錯(cuò)誤)3、 betweenand運(yùn)算符是否既可以用于數(shù)值表達(dá)式,又可以用于字符表達(dá)式?(正確)二、簡答題:1、 用sql語句寫出以下操作a、 建一張數(shù)據(jù)表emp(職工信息表),包含工號、姓名、性別、部門、年齡、工資等字段。createtableemp(idnumber,namevarchar2(20),sexchar(4),departmentvarchar2(20),agenumber,salarynumber(6,2));b、 往該數(shù)據(jù)表中添加一條記錄。insertintoempvalues(1,'xiaozhang','男','銷售部',23,1200.0);c、 假設(shè)該表中存在3000條員工的相關(guān)信息,要求顯示所有年齡在20到30歲之間的人員記錄select*fromempwhereagebetween20and30;d、 假設(shè)有一個(gè)銷售部,請給出銷售部門所有女職員的工資總數(shù)selectsum(salary)fromempwheredepartment*銷售部'andsex='女';2、 什么是ddl、什么是dml,請分別列舉一些。ddl是

溫馨提示

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

評論

0/150

提交評論