SQL面試題
大學(xué)生面試網(wǎng) 2009/4/20
SQL面試題(1)
create table testtable1
(
id int IDENTITY,
department varchar(12)
)
select * from testtable1
insert into testtable1 values(’設(shè)計’)
insert into testtable1 values(’市場’)
insert into testtable1 values(’售后’)
結(jié)果
id department
1 設(shè)計
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語句,怎么顯示如下結(jié)果
id dptID department name
1 1 設(shè)計 張三
2 1 設(shè)計 李四
3 2 市場 王五
4 3 售后 彭六
5 4 黑人 陳七
答案:
SELECT testtable2.* , ISNULL(department,’黑人’)
FROM testtable1 right join testtable2 on testtable2.dptID = testtable1.ID
也做出來了可比這方法稍復(fù)雜。
sql面試題(2)
有表A,結(jié)構(gòu)如下:
A: p_ID p_Num s_id
1 10 01
1 12 02
2 8 01
3 11 01
3 8 03
其中:p_ID為產(chǎn)品ID,p_Num為產(chǎn)品庫存量,s_id為倉庫ID。請用SQL語句實現(xiàn)將上表中的數(shù)據(jù)合并,合并后的數(shù)據(jù)為:
p_ID s1_id s2_id s3_id
1 10 12 0
2 8 0 0
3 11 0 8
其中:s1_id為倉庫1的庫存量,s2_id為倉庫2的庫存量,s3_id為倉庫3的庫存量。如果該產(chǎn)品在某倉庫中無庫存量,那么就是0代替。
結(jié)果:
select p_id ,
sum(case when s_id=1 then p_num else 0 end) as s1_id
,sum(case when s_id=2 then p_num else 0 end) as s2_id
,sum(case when s_id=3 then p_num else 0 end) as s3_id
from myPro group by p_id
SQL面試題(3)
1.觸發(fā)器的作用?
答:觸發(fā)器是一中特殊的存儲過程,主要是通過事件來觸發(fā)而被執(zhí)行的。它可以強(qiáng)化約束,來維護(hù)數(shù)據(jù)的完整性和一致性,可以跟蹤數(shù)據(jù)庫內(nèi)的操作從而不允許未經(jīng)許可的更新和變化。可以聯(lián)級運(yùn)算。如,某表上的觸發(fā)器上包含對另一個表的數(shù)據(jù)操作,而該操作又會導(dǎo)致該表觸發(fā)器被觸發(fā)。
2。什么是存儲過程?用什么來調(diào)用?
答:存儲過程是一個預(yù)編譯的SQL語句,優(yōu)點(diǎn)是允許模塊化的設(shè)計,就是說只需創(chuàng)建一次,以后在該程序中就可以調(diào)用多次。如果某次操作需要執(zhí)行多次SQL,使用存儲過程比單純SQL語句執(zhí)行要快。可以用一個命令對象來調(diào)用存儲過程。
3。索引的作用?和它的優(yōu)點(diǎn)缺點(diǎn)是什么?
答:索引就一種特殊的查詢表,數(shù)據(jù)庫的搜索引擎可以利用它加速對數(shù)據(jù)的檢索。它很類似與現(xiàn)實生活中(未完,下一頁)
|