數(shù)據(jù)庫(kù)面試題
參加數(shù)據(jù)庫(kù)面試中,面試題目對(duì)面試者來(lái)說(shuō)很重要,那么你知道哪些面試題目呢?以下是陽(yáng)光網(wǎng)小編幫你們整理的數(shù)據(jù)庫(kù)面試題,一起來(lái)學(xué)習(xí)啦。
數(shù)據(jù)庫(kù)面試題篇一
1、怎么在存儲(chǔ)過(guò)程中使用臨時(shí)表?
在Oracle中,臨時(shí)表分為SESSION、TRANSACTION兩種,SESSION級(jí)的臨時(shí)表數(shù)據(jù)在整個(gè)SESSION都存在,直到結(jié)束此次SESSION;而 TRANSACTION級(jí)的臨時(shí)表數(shù)據(jù)在TRANACTION結(jié)束后消失,即COMMIT/ROLLBACK或結(jié)束SESSION都會(huì)清除 TRANACTION臨時(shí)表數(shù)據(jù)。
1、ON COMMIT DELETE ROWS 說(shuō)明臨時(shí)表是事務(wù)指定,每次提交后ORACLE將截?cái)啾?刪除全部行)
2、ON COMMIT PRESERVE ROWS 說(shuō)明臨時(shí)表是會(huì)話(huà)指定,當(dāng)中斷會(huì)話(huà)時(shí)ORACLE將截?cái)啾怼?/p>
3、臨時(shí)表(無(wú)論會(huì)話(huà)級(jí)還是事務(wù)級(jí))中的數(shù)據(jù)都是會(huì)話(huà)隔離的,不同session之間不會(huì)共享數(shù)據(jù)。
4、在存儲(chǔ)中使用事務(wù)級(jí)臨時(shí)表時(shí),注意commit前刪除掉本事務(wù)的數(shù)據(jù),否則可能會(huì)出現(xiàn)數(shù)據(jù)不斷增加的情況(原因尚未搞明白)。
5、 兩種臨時(shí)表的語(yǔ)法:
create global temporary table 臨時(shí)表名 on commit preserve|delete rows; 用preserve時(shí)就是SESSION級(jí)的臨時(shí)表,用delete就是TRANSACTION級(jí)的臨時(shí)表。
6、特性和性能(與普通表和視圖的`比較)
臨時(shí)表只在當(dāng)前連接內(nèi)有效;
臨時(shí)表不建立索引,所以如果數(shù)據(jù)量比較大或進(jìn)行多次查詢(xún)時(shí),不推薦使用;
數(shù)據(jù)處理比較復(fù)雜的時(shí)候時(shí)表快,反之視圖快點(diǎn);
在僅僅查詢(xún)數(shù)據(jù)的時(shí)候建議用游標(biāo): open cursor for 'sql clause';
2、口述一下存儲(chǔ)過(guò)程的寫(xiě)法
基本結(jié)構(gòu)+存儲(chǔ)名+輸出變量+ is +begin 開(kāi)始+操作語(yǔ)句 +end 結(jié)束
CREATE OR REPLACE PROCEDURE fun_xsreMobile
(paR_intInterID_c number,
paR_lngMobile_c number,
Date_c number)
is
begin
select * from (
Select ID, CpID, MobState, Settled, SendDate, ReceCount, IsLocked, GateID, ExtData,ReceTs
From tb_prd_ofr where InterID =paR_intInterID_c and Mobile =paR_lngMobile_c and SendDate >=Date_c
order by ID desc)
where rownum=1;
end;
3、你了解oracle表分區(qū)嗎?它有什么優(yōu)缺點(diǎn)
分區(qū)表:
當(dāng)表中的數(shù)據(jù)量不斷增大,查詢(xún)數(shù)據(jù)的速度就會(huì)變慢,應(yīng)用程序的性能就會(huì)下降,這時(shí)就應(yīng)該考慮對(duì)表進(jìn)行分區(qū)。表進(jìn)行分區(qū)后,邏輯上表仍然是一張完整的表,只是將表中的數(shù)據(jù)在張興東279 版權(quán)所有物理上存放到多個(gè)表空間(物理文件上),這樣查詢(xún)數(shù)據(jù)時(shí),不至于每次都掃描整張表。
表分區(qū)的具體作用
Oracle的表分區(qū)功能通過(guò)改善可管理性、性能和可用性,從而為各式應(yīng)用程序帶來(lái)了極大的好處。通常,分區(qū)可以使某些查詢(xún)以及維護(hù)操作的性能大大提高。此外,分區(qū)還可以極大簡(jiǎn)化常見(jiàn)的管理任務(wù),分區(qū)是構(gòu)建千兆字節(jié)數(shù)據(jù)系統(tǒng)或超高可用性系統(tǒng)的關(guān)鍵工具。
分區(qū)功能能夠?qū)⒈、索引或索引組織表進(jìn)一步細(xì)分為段,這些數(shù)據(jù)庫(kù)對(duì)象的段叫做分區(qū)。每個(gè)分區(qū)有自己的名稱(chēng),還可以選擇自己的存儲(chǔ)特性。從數(shù)據(jù)庫(kù)管理員的角度來(lái)看,一個(gè)分區(qū)后的對(duì)象具有多個(gè)段,這些段既可進(jìn)行集體管理,也可單獨(dú)管理,這就使數(shù)據(jù)庫(kù)管理員在管理分區(qū)后的對(duì)象時(shí)有相當(dāng)大的靈活性。但是,從應(yīng)用程序的角度來(lái)看,分區(qū)后的表與非分區(qū)表完全相同,使用 SQL DML 命令訪(fǎng)問(wèn)分區(qū)后的表時(shí),無(wú)需任何修改。
什么時(shí)候使用分區(qū)表:
1、表的大小超過(guò)2GB。
2、表中包含歷史數(shù)據(jù),新的數(shù)據(jù)被增加都新的分區(qū)中。
必須要建表之前就創(chuàng)建
表分區(qū)有以下優(yōu)點(diǎn):
1、改善查詢(xún)性能:對(duì)分區(qū)對(duì)象的查詢(xún)可以?xún)H搜索自己關(guān)心的分區(qū),提高檢索速度。
2、增強(qiáng)可用性:如果表的某個(gè)分區(qū)出現(xiàn)故障,表在其他分區(qū)的數(shù)據(jù)仍然可用;
3、維護(hù)方便:如果表的某個(gè)分區(qū)出現(xiàn)故障,需要修復(fù)數(shù)據(jù),只修復(fù)該分區(qū)即可;
4、均衡I/O:可以把不同的分區(qū)映射到磁盤(pán)以平衡I/O,改善整個(gè)系統(tǒng)性能。
缺點(diǎn):
分區(qū)表相關(guān):已經(jīng)存在的表沒(méi)有方法可以直接轉(zhuǎn)化為分區(qū)表。不過(guò) Oracle 提供了在線(xiàn)重定義表的功能。
數(shù)據(jù)庫(kù)面試題篇二
1. 存儲(chǔ)過(guò)程:存儲(chǔ)過(guò)程就是編譯好了的一些sql語(yǔ)句。
01.存儲(chǔ)過(guò)程因?yàn)镾QL語(yǔ)句已經(jīng)預(yù)編繹過(guò)了,因此運(yùn)行的速度比較快。
02. 可保證數(shù)據(jù)的安全性和完整性。通過(guò)存儲(chǔ)過(guò)程可以使沒(méi)有權(quán)限的用戶(hù)在控制之下間接地存取數(shù)據(jù)庫(kù),從而保證數(shù)據(jù)的安全。通過(guò)存儲(chǔ)過(guò)程可以使相關(guān)的動(dòng)作在一起發(fā)生,從而可以維護(hù)數(shù)據(jù)庫(kù)的完整性。
03.可以降低網(wǎng)絡(luò)的通信量。存儲(chǔ)過(guò)程主要是在服務(wù)器上運(yùn)行,減少對(duì)客戶(hù)機(jī)的壓力。
04:存儲(chǔ)過(guò)程可以接受參數(shù)、輸出參數(shù)、返回單個(gè)或多個(gè)結(jié)果集以及返回值?梢韵虺绦蚍祷劐e(cuò)誤原因 5:存儲(chǔ)過(guò)程可以包含程序流、邏輯以及對(duì)數(shù)據(jù)庫(kù)的查詢(xún)。同時(shí)可以實(shí)體封裝和隱藏了數(shù)據(jù)邏輯。
2. 內(nèi)聯(lián)接,外聯(lián)接區(qū)別?
內(nèi)連接是保證兩個(gè)表中所有的行都要滿(mǎn)足連接條件,而外連接則不然。
在外連接中,某些不滿(mǎn)足條件的列也會(huì)顯示出來(lái),也就是說(shuō),只限制其中一個(gè)表的行,而不限制另一個(gè)表的行。分左連接、右連接、全連接三種
3. 觸發(fā)器的作用?
觸發(fā)器是一中特殊的存儲(chǔ)過(guò)程,主要是通過(guò)事件來(lái)觸發(fā)而被執(zhí)行的。它可以強(qiáng)化約束,來(lái)維護(hù)數(shù)據(jù)的完整性和一致性,可以跟蹤數(shù)據(jù)庫(kù)內(nèi)的操作從而不允許未經(jīng)許可的更新和變化。可以聯(lián)級(jí)運(yùn)算。如,某表上的觸發(fā)器上包含對(duì)另一個(gè)表的數(shù)據(jù)操作,而該操作又會(huì)導(dǎo)致該表觸發(fā)器被觸發(fā)。
4. 什么是內(nèi)存泄漏?
一般我們所說(shuō)的內(nèi)存泄漏指的是堆內(nèi)存的泄漏。堆內(nèi)存是程序從堆中為其分配的,大小任意的,使用完后要顯示釋放內(nèi)存。當(dāng)應(yīng)用程序用關(guān)鍵字new等創(chuàng)建對(duì)象時(shí),就從堆中為它分配一塊內(nèi)存,使用完后程序調(diào)用free或者delete釋放該內(nèi)存,否則就說(shuō)該內(nèi)存就不能被使用,我們就說(shuō)該內(nèi)存被泄漏了。
5. 鎖:在所以的DBMS中,鎖是實(shí)現(xiàn)事務(wù)的關(guān)鍵,鎖可以保證事務(wù)的完整性和并發(fā)性。與現(xiàn)實(shí)生活中鎖一樣,它可以使某些數(shù)據(jù)的擁有者,在某段時(shí)間內(nèi)不能使用某些數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu)。當(dāng)然鎖還分級(jí)別的。
有一個(gè)表或者多個(gè)表的行或列的子集。對(duì)視圖的`修改不影響基本表。它使得我們獲取數(shù)據(jù)更容易,相比多表查詢(xún)。
6. 游標(biāo):是對(duì)查詢(xún)出來(lái)的結(jié)果集作為一個(gè)單元來(lái)有效的處理。游標(biāo)可以定在該單元中的特定行,從結(jié)果集的當(dāng)前行檢索一行或多行?梢詫(duì)結(jié)果集當(dāng)前行做修改。一般不使用游標(biāo),但是需要逐條處理數(shù)據(jù)的時(shí)候,游標(biāo)顯得十分重要。
7. 說(shuō)出一些數(shù)據(jù)庫(kù)優(yōu)化方面的經(jīng)驗(yàn)?
用PreparedStatement 一般來(lái)說(shuō)比Statement 性能高:一個(gè)sql 發(fā)給服務(wù)器去執(zhí)行,涉及步驟:
語(yǔ)法檢查、語(yǔ)義分析, 編譯,緩存.
有外鍵約束會(huì)影響插入和刪除性能,如果程序能夠保證數(shù)據(jù)的完整性,那在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)就去掉外鍵。(比喻:就好比免檢產(chǎn)品,就是為了提高效率,充分相信產(chǎn)品的制造商)
看mysql 幫助文檔子查詢(xún)章節(jié)的最后部分,例如,根據(jù)掃描的原理,下面的子查詢(xún)語(yǔ)句要比第二條關(guān)聯(lián)查詢(xún)的效率高:
1. select e.name,e.salary where e.managerid=(select id from employee where name='zxx');
2. select e.name,e.salary,m.name,m.salary from employees e,employees m where e.managerid = m.id and m.name='zxx';
表中允許適當(dāng)冗余,譬如,主題帖的回復(fù)數(shù)量和最后回復(fù)時(shí)間等
將姓名和密碼單獨(dú)從用戶(hù)表中獨(dú)立出來(lái)。這可以是非常好的一對(duì)一的案例喲!
還有索引對(duì)查詢(xún)性能的改進(jìn)也是值得關(guān)注的。
數(shù)據(jù)庫(kù)面試題篇三
1. 說(shuō)出數(shù)據(jù)連接池的工作機(jī)制是什么?
J2EE 服務(wù)器啟動(dòng)時(shí)會(huì)建立一定數(shù)量的池連接,并一直維持不少于此數(shù)目的池連接?蛻(hù)端程序需要連接時(shí),池驅(qū)動(dòng)程序會(huì)返回一個(gè)未使用的池連接并將其表記為忙。如果當(dāng)前沒(méi)有空閑連接,池驅(qū)動(dòng)程序就新建一定數(shù)量的連接,新建連接的數(shù)量有配置參數(shù)決定。當(dāng)使用的池連接調(diào)用完成后,池驅(qū)動(dòng)程序?qū)⒋诉B接表記為空閑,其他調(diào)用就可以使用這個(gè)連接。實(shí)現(xiàn)方式,返回的Connection 是原始Connection 的代理,代理Connection 的close 方法不是真正關(guān)連接,而是把它代理的Connection 對(duì)象還回到連接池中。
2. xml 有哪些解析技術(shù)?區(qū)別是什么?
有DOM,SAX,STAX 等. DOM:處理大型文件時(shí)其性能下降的非常厲害。這個(gè)問(wèn)題是由DOM 的樹(shù)結(jié)構(gòu)所造成的,這種結(jié)構(gòu)占用的內(nèi)存較多,而且DOM 必須在解析文件之前把整個(gè)文檔裝入內(nèi)存,適合對(duì)XML 的隨機(jī)訪(fǎng)問(wèn).SAX:不現(xiàn)于DOM,SAX 是事件驅(qū)動(dòng)型的XML 解析方式。它順序讀取XML 文件,不需要一次全部裝載整個(gè)文件。當(dāng)遇到像文件開(kāi)頭,文檔結(jié)束,或者標(biāo)簽開(kāi)頭與標(biāo)簽結(jié)束時(shí),它會(huì)觸發(fā)一個(gè)事件,用戶(hù)通過(guò)在其回調(diào)事件中寫(xiě)入處理代碼來(lái)處理XML 文件,適合對(duì)XML 的順序訪(fǎng)問(wèn). STAX:Streaming API for XML (StAX)
3. 你在項(xiàng)目中用到了xml 技術(shù)的哪些方面?如何實(shí)現(xiàn)的?
用到了數(shù)據(jù)存貯,信息配置兩方面。在做數(shù)據(jù)交換平臺(tái)時(shí),將不能數(shù)據(jù)源的數(shù)據(jù)組裝成XML文件,然后將XML 文件壓縮打包加密后通過(guò)網(wǎng)絡(luò)傳送給接收者,接收解密與解壓縮后再同XML文件中還原相關(guān)信息進(jìn)行處理。在做軟件配置時(shí),利用XML 可以很方便的進(jìn)行,軟件的各種配置參數(shù)都存貯在XML 文件中
4、數(shù)據(jù)庫(kù)三范式是什么?
第一范式(1NF):
字段具有原子性,不可再分。所有關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)都滿(mǎn)足第一范式)數(shù)據(jù)庫(kù)表中的字段都是單一屬性的,不可再分。例如,姓名字段,其中的姓和名必須作為一個(gè)整體,無(wú)法區(qū)分哪部分是姓,哪部分是名,如果要區(qū)分出姓和名,必須設(shè)計(jì)成兩個(gè)獨(dú)立的字段。 第二范式(2NF):
第二范式(2NF)是在第一范式(1NF)的'基礎(chǔ)上建立起來(lái)的,即滿(mǎn)足第二范式(2NF)必須先滿(mǎn)足第一范式(1NF)。要求數(shù)據(jù)庫(kù)表中的每個(gè)實(shí)例或行必須可以被惟一地區(qū)分。通常需要為表加上一個(gè)列,以存儲(chǔ)各個(gè)實(shí)例的惟一標(biāo)識(shí)。這個(gè)惟一屬性列被稱(chēng)為主關(guān)鍵字或主鍵。第二范式(2NF)要求實(shí)體的屬性完全依賴(lài)于主關(guān)鍵字。所謂完全依賴(lài)是指不能存在僅依賴(lài)主關(guān)鍵字一部分的屬性,如果存在,那么這個(gè)屬性和主關(guān)鍵字的這一部分應(yīng)該分離出來(lái)形成一個(gè)新的實(shí)體,新實(shí)體與原實(shí)體之間是一對(duì)多的關(guān)系。為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列,以存儲(chǔ)各個(gè)實(shí)例的惟一標(biāo)識(shí)。簡(jiǎn)而言之,第二范式就是非主屬性非部分依賴(lài)于主關(guān)鍵字。
第三范式(3NF):
滿(mǎn)足第三范式(3NF)必須先滿(mǎn)足第二范式(2NF)。簡(jiǎn)而言之,第三范式(3NF)要求一個(gè)數(shù)據(jù)庫(kù)表中不包含已在其它表中已包含的非主關(guān)鍵字信息。
所以第三范式具有如下特征:
1,每一列只有一個(gè)值
2,每一行都能區(qū)分。
3,每一個(gè)表都不包含其他表已經(jīng)包含的非主關(guān)鍵字信息。
例如,帖子表中只能出現(xiàn)發(fā)帖人的 id,而不能出現(xiàn)發(fā)帖人的 id,還同時(shí)出現(xiàn)發(fā)帖人姓名,否則,只要出現(xiàn)同一發(fā)帖人 id 的所有記錄,它們中的姓名部分都必須嚴(yán)格保持一致,這就是數(shù)據(jù)冗余。
5、說(shuō)出一些數(shù)據(jù)庫(kù)優(yōu)化方面的經(jīng)驗(yàn)?
1、關(guān)鍵字段建立索引。
2、使用存儲(chǔ)過(guò)程,它使SQL變得更加靈活和高效。
3、備份數(shù)據(jù)庫(kù)和清除垃圾數(shù)據(jù)。
4、SQL語(yǔ)句語(yǔ)法的優(yōu)化。
5、清理刪除日志。
【數(shù)據(jù)庫(kù)面試題】相關(guān)文章:
數(shù)據(jù)庫(kù)常見(jiàn)面試題11-26
數(shù)據(jù)庫(kù)常見(jiàn)面試題11-26
軟件測(cè)試數(shù)據(jù)庫(kù)面試題11-25
關(guān)于經(jīng)典面試題12-09
樂(lè)事面試題精選12-09
微軟面試題精選12-09
精選面試題目12-09
經(jīng)典面試題及答案04-04
面試題及答案04-04