SQL面試題 非純資料庫方向

2023-02-10 04:33:02 字數 4787 閱讀 6674

1.觸發器的作用?

答:觸發器是一中特殊的儲存過程,主要是通過事件來觸發而被執行的。它可以強化約束,來維護資料的完整性和一致性,可以跟蹤資料庫內的操作從而不允許未經許可的更新和

變化。可以聯級運算。如,某錶上的觸發器上包含對另乙個表的資料操作,而該操作又會導致該錶觸發器被觸發。

2。什麼是儲存過程?用什麼來呼叫?

答:儲存過程是乙個預編譯的sql語句,優點是允許模組化的設計,就是說只需建立一次,以後在該程式中就可以呼叫多次。如果某次操作需要執行多次sql,使用儲存過程比單純

sql語句執行要快。可以用乙個命令物件來呼叫儲存過程。

3。索引的作用?和它的優點缺點是什麼?

答:索引就一種特殊的查詢表,資料庫的搜尋引擎可以利用它加速對資料的檢索。它很類似與現實生活中書的目錄,不需要查詢整本書內容就可以找到想要的資料。索引可以是唯

一的,建立索引允許指定單個列或者是多個列。缺點是它減慢了資料錄入的速度,同時也增加了資料庫的尺寸大小。

3。什麼是記憶體洩漏?

答:一般我們所說的記憶體洩漏指的是堆記憶體的洩漏。堆記憶體是程式從堆中為其分配的,大小任意的,使用完後要顯示釋放記憶體。當應用程式用關鍵字new等建立物件時,就從堆中為

它分配一塊記憶體,使用完後程式呼叫free或者delete釋放該記憶體,否則就說該記憶體就不能被使用,我們就說該記憶體被洩漏了。

4。維護資料庫的完整性和一致性,你喜歡用觸發器還是自寫業務邏輯?為什麼?

答:我是這樣做的,盡可能使用約束,如check,主鍵,外來鍵,非空字段等來約束,這樣做效率最高,也最方便。其次是使用觸發器,這種方法可以保證,無論什麼業務系統訪問數

據庫都可以保證資料的完整新和一致性。最後考慮的是自寫業務邏輯,但這樣做麻煩,程式設計複雜,效率低下。

5。什麼是事務?什麼是鎖?

答:事務就是被繫結在一起作為乙個邏輯工作單元的sql語句分組,如果任何乙個語句操作失敗那麼整個操作就被失敗,以後操作就會回滾到操作前狀態,或者是上有個節點。為了

確保要麼執行,要麼不執行,就可以使用事務。要將有組語句作為事務考慮,就需要通過acid測試,即原子性,一致性,隔離性和永續性。

鎖:在所以的dbms中,鎖是實現事務的關鍵,鎖可以保證事務的完整性和併發性。與現實生活中鎖一樣,它可以使某些資料的擁有者,在某段時間內不能使用某些資料或資料結構

。當然鎖還分級別的。

6。什麼叫檢視?游標是什麼?

答:檢視是一種虛擬的表,具有和物理表相同的功能。可以對檢視進行增,改,查,操作,試圖通常是有乙個表或者多個表的行或列的子集。對檢視的修改不影響基本表。它使得

我們獲取資料更容易,相比多表查詢。

游標:是對查詢出來的結果集作為乙個單元來有效的處理。游標可以定在該單元中的特定行,從結果集的當前行檢索一行或多行。可以對結果集當前行做修改。一般不使用游標,

但是需要逐條處理資料的時候,游標顯得十分重要。

7。為管理業務培訓資訊,建立3個表:

s(s#,sn,sd,sa)s#,sn,sd,sa分別代表學號,學員姓名,所屬單位,學員年齡

c(c#,cn)c#,cn分別代表課程編號,課程名稱

sc(s#,c#,g) s#,c#,g分別代表學號,所選的課程編號,學習成績

(1)使用標準sql巢狀語句查詢選修課程名稱為』稅收基礎』的學員學號和姓名?

答案:select s# ,sn from s where s# in(select s# from c,sc where and cn=』稅收基礎』)

(2) 使用標準sql巢狀語句查詢選修課程編號為』c2』的學員姓名和所屬單位?

答:select sn,sd from s,sc where and

(3) 使用標準sql巢狀語句查詢不選修課程編號為』c5』的學員姓名和所屬單位?

答:select sn,sd from s where s# not in(select s# from sc where c#=』c5』)

(4)查詢選修了課程的學員人數

答:select 學員人數=count(distinct s#) from sc

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

答:select sn,sd from s where s# in(select s# from sc group by s# h**ing count(distinct c#)>5)

在面試過程中多次碰到兩道sql查詢的題目,一是查詢a(id,name)表中第31至40條記錄,id作為主鍵可能是不是連續增長的列,完整的查詢語句如下:

select top 10 * from a where id >(select max(id) from (select top 30 id from a order by a ) t) order by a

另外一道題目的要求是查詢表a中存在id重複三次以上的記錄,完整的查詢語句如下:

select * from(select count(id) as count from table group by id)t where >3

create table testtable1

(id int identity,

department varchar(12)

)select * from testtable1

insert into testtable1 values('設計')

insert into testtable1 values('市場')

insert into testtable1 values('售後')

/*結果

id department

1 設計

2 市場

3 售後

*/create table testtable2

(id int identity,

dptid int,

name varchar(12)

)insert into testtable2 values(1,'張三')

insert into testtable2 values(1,'李四')

insert into testtable2 values(2,'王五')

insert into testtable2 values(3,'彭六')

insert into testtable2 values(4,'陳七')

/*用一條sql語句,怎麼顯示如下結果

id dptid department name

1 1 設計張三

2 1 設計李四

3 2 市場王五

4 3 售後彭六

5 4 黑人陳七

*/答案是:

select testtable2.* , isnull(department,'黑人')

from testtable1 right join testtable2 on =

在面試應聘的sql server資料庫開發人員時,我運用了一套標準的基準技術問題。下面這些問題是我覺得能夠真正有助於淘汰不合格應聘者的問題。它們按照從易到難的順序排列

。當你問到關於主鍵和外來鍵的問題時,後面的問題都十分有難度,因為答案可能會更難解釋和說明,尤其是在面試的情形下。

你能向我簡要敘述一下sql server 2000中使用的一些資料庫物件嗎?

你希望聽到的***括這樣一些物件:**、檢視、使用者定義的函式,以及儲存過程;如果他們還能夠提到像觸發器這樣的物件就更好了。如果應聘者不能回答這個基本的問題,那

麼這不是乙個好兆頭。

null是什麼意思?

null(空)這個值是資料庫世界裡乙個非常難纏的東西,所以有不少應聘者會在這個問題上跌跟頭您也不要覺得意外。

null這個值表示unknown(未知):它不表示「」(空字串)。假設您的sql server資料庫裡有ansi_nulls,當然在預設情況下會有,對null這個值的任何比較都會生產乙個null值。

您不能把任何值與乙個 unknown值進行比較,並在邏輯上希望獲得乙個答案。您必須使用is null操作符。

sql5

什麼是索引?sql server 2000裡有什麼型別的索引?

任何有經驗的資料庫開發人員都應該能夠很輕易地回答這個問題。一些經驗不太多的開發人員能夠回答這個問題,但是有些地方會說不清楚。

簡單地說,索引是乙個資料結構,用來快速訪問資料庫**或者檢視裡的資料。在sql server裡,它們有兩種形式:聚集索引和非聚集索引。聚集索引在索引的葉級儲存資料。這意

味著不論聚集索引裡有**的哪個(或哪些)字段,這些欄位都會按順序被儲存在**。由於存在這種排序,所以每個**只會有乙個聚集索引。非聚集索引在索引的葉級有乙個行

識別符號。這個行識別符號是乙個指向磁碟上資料的指標。它允許每個**有多個非聚集索引。

什麼是主鍵?什麼是外來鍵?

主鍵是**裡的(乙個或多個)字段,只用來定義**裡的行;主鍵裡的值總是唯一的。外來鍵是乙個用來建立兩個**之間關係的約束。這種關係一般都涉及乙個**裡的主鍵欄位與

另外乙個**(儘管可能是同乙個**)裡的一系列相連的字段。那麼這些相連的字段就是外來鍵。

什麼是觸發器?sql server 2000有什麼不同型別的觸發器?

讓未來的資料庫開發人員知道可用的觸發器型別以及如何實現它們是非常有益的。

觸發器是一種專用型別的儲存過程,它被**到sql server 2000的**或者檢視上。在sql server 2000裡,有instead-of和after兩種觸發器。instead-of觸發器是替代資料操控

語言(data manipulation language,dml)語句對**執行語句的儲存過程。例如,如果我有乙個用於tablea的instead-of-update觸發器,同時對這個**執行乙個更新語句,那

麼instead-of-update觸發器裡的**會執行,而不是我執行的更新語句則不會執行操作。

資料庫面試題

維護資料庫的完整性 一致性 你喜歡用觸發器還是自寫業務邏輯?為什麼?答 盡可能用約束 包括check 主鍵 唯一鍵 外來鍵 非空字段 實現,這種方式的效率最好 其次用觸發器,這種方式可以保證無論何種業務系統訪問資料庫都能維持資料庫的完整性 一致性 最後再考慮用自寫業務邏輯實現,但這種方式效率最低 程...

資料庫面試題 SQL ORACLE

資料庫基礎 面試常見題 一 資料庫基礎 1.資料抽象 物理抽象 概念抽象 檢視級抽象,內模式 模式 外模式 2.sql語言包括資料定義 資料操縱 data manipulation 資料控制 data control 資料定義 create table,alter table,drop table,...

資料庫面試題 SQL ORACLE

一 資料庫基礎 1.資料抽象 物理抽象 概念抽象 檢視級抽象,內模式 模式 外模式 2.sql語言包括資料定義 資料操縱 data manipulation 資料控制 data control 資料定義 create table,alter table,drop table,craete drop ...