国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

看看吧

2019-11-14 16:00:47
字體:
供稿:網(wǎng)友

1.一道SQL語句面試題,關(guān)于group by
表內(nèi)容:
2005-05-09 勝
2005-05-09 勝
2005-05-09 負
2005-05-09 負
2005-05-10 勝
2005-05-10 負
2005-05-10 負

如果要生成下列結(jié)果, 該如何寫sql語句?

勝 負
2005-05-09 2 2
2005-05-10 1 2
------------------------------------------
create table #tmp(rq var10),shengfu n1))

into #tmp values(/2005-05-09/,/勝/)
into #tmp values(/2005-05-09/,/勝/)
into #tmp values(/2005-05-09/,/負/)
into #tmp values(/2005-05-09/,/負/)
into #tmp values(/2005-05-10/,/勝/)
into #tmp values(/2005-05-10/,/負/)
into #tmp values(/2005-05-10/,/負/)

1)select rq, sum(case when shengfu=/勝/ then 1 else 0 end)/勝/,sum(case when shengfu=/負/ then 1 else 0 end)/負/ from #tmp group by rq
2) select N.rq,N.勝,M.負 from (
select rq,勝=count(*) from #tmp where shengfu=/勝/group by rq)N inner join
(select rq,負=count(*) from #tmp where shengfu=/負/group by rq)M on N.rq=M.rq
3)select a.col001,a.a1 勝,b.b1 負 from
(select col001,count(col001) a1 from temp1 where col002=/勝/ group by col001) a,
(select col001,count(col001) b1 from temp1 where col002=/負/ group by col001) b
where a.col001=b.col001

2.請教一個面試中遇到的SQL語句的查詢問題
表中有A B C三列,用SQL語句實現(xiàn):當(dāng)A列大于B列時選擇A列否則選擇B列,當(dāng)B列大于C列時選擇B列否則選擇C列。
------------------------------------------
select (case when a>b then a else b end ),
(case when b>c then b esle c end)
from table_name

3.面試題:一個日期判斷的sql語句?
請取出tb_send表中日期(SendTime字段)為當(dāng)天的所有記錄?(SendTime字段為datetime型,包含日期與時間)
------------------------------------------
select * from tb where datediff(dd,SendTime,getdate())=0

4.有一張表,里面有3個字段:語文,數(shù)學(xué),英語。其中有3條記錄分別表示語文70分,數(shù)學(xué)80分,英語58分,請用一條sql語句查詢出這三條記錄并按以下條件顯示出來(并寫出您的思路):
大于或等于80表示優(yōu)秀,大于或等于60表示及格,小于60分表示不及格。
顯示格式:
語文 數(shù)學(xué) 英語
及格 優(yōu)秀 不及格
------------------------------------------
select
(case when 語文>=80 then /優(yōu)秀/
when 語文>=60 then /及格/
else /不及格/) as 語文,
(case when 數(shù)學(xué)>=80 then /優(yōu)秀/
when 數(shù)學(xué)>=60 then /及格/
else /不及格/) as 數(shù)學(xué),
(case when 英語>=80 then /優(yōu)秀/
when 英語>=60 then /及格/
else /不及格/) as 英語,
from table

5.在sqlserver2000中請用sql創(chuàng)建一張用戶臨時表和系統(tǒng)臨時表,里面包含兩個字段ID和IDValues,類型都是int型,并解釋下兩者的區(qū)別?
------------------------------------------
用戶臨時表:create table #xx(ID int, IDValues int)
系統(tǒng)臨時表:create table ##xx(ID int, IDValues int)

區(qū)別:
用戶臨時表只對創(chuàng)建這個表的用戶的session可見,對其他進程是不可見的.
當(dāng)創(chuàng)建它的進程消失時這個臨時表就自動刪除.

全局臨時表對整個SQL Server實例都可見,但是所有訪問它的Session都消失的時候,它也自動刪除.

6.sqlserver2000是一種大型數(shù)據(jù)庫,他的存儲容量只受存儲介質(zhì)的限制,請問它是通過什么方式實現(xiàn)這種無限容量機制的。
------------------------------------------
它的所有數(shù)據(jù)都存儲在數(shù)據(jù)文件中(*.dbf),所以只要文件夠大,SQL Server的存儲容量是可以擴大的.

SQL Server 2000 數(shù)據(jù)庫有三種類型的文件:

主要數(shù)據(jù)文件
主要數(shù)據(jù)文件是數(shù)據(jù)庫的起點,指向數(shù)據(jù)庫中文件的其它部分。每個數(shù)據(jù)庫都有一個主要數(shù)據(jù)文件。主要數(shù)據(jù)文件的推薦文件擴展名是 .mdf。

次要數(shù)據(jù)文件
次要數(shù)據(jù)文件包含除主要數(shù)據(jù)文件外的所有數(shù)據(jù)文件。有些數(shù)據(jù)庫可能沒有次要數(shù)據(jù)文件,而有些數(shù)據(jù)庫則有多個次要數(shù)據(jù)文件。次要數(shù)據(jù)文件的推薦文件擴展名是 .ndf。

日志文件
日志文件包含恢復(fù)數(shù)據(jù)庫所需的所有日志信息。每個數(shù)據(jù)庫必須至少有一個日志文件,但可以不止一個。日志文件的推薦文件擴展名是 .ldf。

7.請用一個sql語句得出結(jié)果
從table1,table2中取出如table3所列格式數(shù)據(jù),注意提供的數(shù)據(jù)及結(jié)果不準確,只是作為一個格式向大家請教。
如使用存儲過程也可以。

table1

月份mon 部門dep 業(yè)績yj
-------------------------------
一月份 01 10
一月份 02 10
一月份 03 5
二月份 02 8
二月份 04 9
三月份 03 8

table2

部門dep 部門名稱dname
--------------------------------
01 國內(nèi)業(yè)務(wù)一部
02 國內(nèi)業(yè)務(wù)二部
03 國內(nèi)業(yè)務(wù)三部
04 國際業(yè)務(wù)部

table3 (result)

部門dep 一月份 二月份 三月份
--------------------------------------
01 10 null null
02 10 8 null
03 null 5 8
04 null null 9

------------------------------------------
1)
select a.部門名稱dname,b.業(yè)績yj as /一月份/,c.業(yè)績yj as /二月份/,d.業(yè)績yj as /三月份/
from table1 a,table2 b,table2 c,table2 d
where a.部門dep = b.部門dep and b.月份mon = /一月份/ and
a.部門dep = c.部門dep and c.月份mon = /二月份/ and
a.部門dep = d.部門dep and d.月份mon = /三月份/ and
2)
select a.dep,
sum(case when b.mon=1 then b.yj else 0 end) as /一月份/,
sum(case when b.mon=2 then b.yj else 0 end) as /二月份/,
sum(case when b.mon=3 then b.yj else 0 end) as /三月份/,
sum(case when b.mon=4 then b.yj else 0 end) as /四月份/,
sum(case when b.mon=5 then b.yj else 0 end) as /五月份/,
sum(case when b.mon=6 then b.yj else 0 end) as /六月份/,
sum(case when b.mon=7 then b.yj else 0 end) as /七月份/,
sum(case when b.mon=8 then b.yj else 0 end) as /八月份/,
sum(case when b.mon=9 then b.yj else 0 end) as /九月份/,
sum(case when b.mon=10 then b.yj else 0 end) as /十月份/,
sum(case when b.mon=11 then b.yj else 0 end) as /十一月份/,
sum(case when b.mon=12 then b.yj else 0 end) as /十二月份/,
from table2 a left join table1 b on a.dep=b.dep

8.華為一道面試題
一個表中的Id有多個記錄,把所有這個id的記錄查出來,并顯示共有多少條記錄數(shù)。
------------------------------------------
select id, Count(*) from tb group by id having count(*)>1
select * from(select count(ID) as count from table group by ID)T where T.count>1

 

 

SQL面試題(1)

create table testtable1
(
id int IDENTITY,
department var12)
)

select * from testtable1
into testtable1 values(/設(shè)計/)
into testtable1 values(/市場/)
into testtable1 values(/售后/)
/*
結(jié)果
id department
1 設(shè)計
2 市場
3 售后
*/
create table testtable2
(
id int IDENTITY,
dptID int,
name var12)
)
into testtable2 values(1,/張三/)
into testtable2 values(1,/李四/)
into testtable2 values(2,/王五/)
into testtable2 values(3,/彭六/)
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í)行的。它可以強化約束,來維護數(shù)據(jù)的完整性和一致性,可以跟蹤數(shù)據(jù)庫內(nèi)的操作從而不允許未經(jīng)許可的更新和變化。可以聯(lián)級運算。如,某表上的觸發(fā)器上包含對另一個表的數(shù)據(jù)操作,而該操作又會導(dǎo)致該表觸發(fā)器被觸發(fā)。

2。什么是存儲過程?用什么來調(diào)用?

答:存儲過程是一個預(yù)編譯的SQL語句,優(yōu)點是允許模塊化的設(shè)計,就是說只需創(chuàng)建一次,以后在該程序中就可以調(diào)用多次。如果某次操作需要執(zhí)行多次SQL,使用存儲過程比單純SQL語句執(zhí)行要快。可以用一個命令對象來調(diào)用存儲過程。

3。索引的作用?和它的優(yōu)點缺點是什么?

答:索引就一種特殊的查詢表,數(shù)據(jù)庫的搜索引擎可以利用它加速對數(shù)據(jù)的檢索。它很類似與現(xiàn)實生活中書的目錄,不需要查詢整本書內(nèi)容就可以找到想要的數(shù)據(jù)。索引可以是唯一的,創(chuàng)建索引允許指定單個列或者是多個列。缺點是它減慢了數(shù)據(jù)錄入的速度,同時也增加了數(shù)據(jù)庫的尺寸大小。

3。什么是內(nèi)存泄漏?

答:一般我們所說的內(nèi)存泄漏指的是堆內(nèi)存的泄漏。堆內(nèi)存是程序從堆中為其分配的,大小任意的,使用完后要顯示釋放內(nèi)存。當(dāng)應(yīng)用程序用關(guān)鍵字new等創(chuàng)建對象時,就從堆中為它分配一塊內(nèi)存,使用完后程序調(diào)用free或者釋放該內(nèi)存,否則就說該內(nèi)存就不能被使用,我們就說該內(nèi)存被泄漏了。

4。維護數(shù)據(jù)庫的完整性和一致性,你喜歡用觸發(fā)器還是自寫業(yè)務(wù)邏輯?為什么?

答:我是這樣做的,盡可能使用約束,如check,主鍵,外鍵,非空字段等來約束,這樣做效率最高,也最方便。其次是使用觸發(fā)器,這種方法可以保證,無論什么業(yè)務(wù)系統(tǒng)訪問數(shù)據(jù)庫都可以保證數(shù)據(jù)的完整新和一致性。最后考慮的是自寫業(yè)務(wù)邏輯,但這樣做麻煩,編程復(fù)雜,效率低下。

5。什么是事務(wù)?什么是鎖?

答:事務(wù)就是被綁定在一起作為一個邏輯工作單元的SQL語句分組,如果任何一個語句操作失敗那么整個操作就被失敗,以后操作就會回滾到操作前狀態(tài),或者是上有個節(jié)點。為了確保要么執(zhí)行,要么不執(zhí)行,就可以使用事務(wù)。要將有組語句作為事務(wù)考慮,就需要通過ACID測試,即原子性,一致性,隔離性和持久性。

鎖:在所以的DBMS中,鎖是實現(xiàn)事務(wù)的關(guān)鍵,鎖可以保證事務(wù)的完整性和并發(fā)性。與現(xiàn)實生活中鎖一樣,它可以使某些數(shù)據(jù)的擁有者,在某段時間內(nèi)不能使用某些數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu)。當(dāng)然鎖還分級別的。

6。什么叫視圖?游標是什么?

答:視圖是一種虛擬的表,具有和物理表相同的功能。可以對視圖進行增,改,查,操作,試圖通常是有一個表或者多個表的行或列的子集。對視圖的修改不影響基本表。它使得我們獲取數(shù)據(jù)更容易,相比多表查詢。

游標:是對查詢出來的結(jié)果集作為一個單元來有效的處理。游標可以定在該單元中的特定行,從結(jié)果集的當(dāng)前行檢索一行或多行。可以對結(jié)果集當(dāng)前行做修改。一般不使用游標,但是需要逐條處理數(shù)據(jù)的時候,游標顯得十分重要。

7。為管理業(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)使用標準SQL嵌套語句查詢選修課程名稱為’稅收基礎(chǔ)’的學(xué)員學(xué)號和姓名?

答案:select s# ,sn from s where S# in(select S# from c,sc where c.c#=sc.c# and cn=’稅收基礎(chǔ)’)

(2) 使用標準SQL嵌套語句查詢選修課程編號為’C2’的學(xué)員姓名和所屬單位?

答:select sn,sd from s,sc where s.s#=sc.s# and sc.c#=’c2’

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

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

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

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

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

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

SQL面試題(4)

 

1.查詢A(ID,Name)表中第31至40條記錄,ID作為主鍵可能是不是連續(xù)增長的列,完整的查詢語句如下:

select top 10 * from A where ID >(select max(ID) from (select top 30 ID from A order by A ) T) order by A

2.查詢表A中存在ID重復(fù)三次以上的記錄,完整的查詢語句如下:
select * from(select count(ID) as count from table group by ID)T where T.count>3

SQL面試題(5)

 

在面試應(yīng)聘的SQL Server數(shù)據(jù)庫開發(fā)人員時,我運用了一套標準的基準技術(shù)問題。下面這些問題是我覺得能夠真正有助于淘汰不合格應(yīng)聘者的問題。它們按照從易到難的順序排列。當(dāng)你問到關(guān)于主鍵和外鍵的問題時,后面的問題都十分有難度,因為答案可能會更難解釋和說明,尤其是在面試的情形下。

你能向我簡要敘述一下SQL Server 2000中使用的一些數(shù)據(jù)庫對象嗎?

你希望聽到的答案包括這樣一些對象:表格、視圖、用戶定義的函數(shù),以及存儲過程;如果他們還能夠提到像觸發(fā)器這樣的對象就更好了。如果應(yīng)聘者不能回答這個基本的問題,那么這不是一個好兆頭。

NULL是什么意思?

NULL(空)這個值是數(shù)據(jù)庫世界里一個非常難纏的東西,所以有不少應(yīng)聘者會在這個問題上跌跟頭您也不要覺得意外。

NULL這個值表示UNKNOWN(未知):它不表示“”(空字符串)。假設(shè)您的SQL Server數(shù)據(jù)庫里有ANSI_NULLS,當(dāng)然在默認情況下會有,對NULL這個值的任何比較都會生產(chǎn)一個NULL值。您不能把任何值與一個 UNKNOWN值進行比較,并在邏輯上希望獲得一個答案。您必須使用IS NULL操作符。

什么是索引?SQL Server 2000里有什么類型的索引?

任何有經(jīng)驗的數(shù)據(jù)庫開發(fā)人員都應(yīng)該能夠很輕易地回答這個問題。一些經(jīng)驗不太多的開發(fā)人員能夠回答這個問題,但是有些地方會說不清楚。

簡單地說,索引是一個數(shù)據(jù)結(jié)構(gòu),用來快速訪問數(shù)據(jù)庫表格或者視圖里的數(shù)據(jù)。在SQL Server里,它們有兩種形式:聚集索引和非聚集索引。聚集索引在索引的葉級保存數(shù)據(jù)。這意味著不論聚集索引里有表格的哪個(或哪些)字段,這些字段都會按順序被保存在表格。由于存在這種排序,所以每個表格只會有一個聚集索引。非聚集索引在索引的葉級有一個行標識符。這個行標識符是一個指向磁盤上數(shù)據(jù)的指針。它允許每個表格有多個非聚集索引。

什么是主鍵?什么是外鍵?

主鍵是表格里的(一個或多個)字段,只用來定義表格里的行;主鍵里的值總是唯一的。外鍵是一個用來建立兩個表格之間關(guān)系的約束。這種關(guān)系一般都涉及一個表格里的主鍵字段與另外一個表格(盡管可能是同一個表格)里的一系列相連的字段。那么這些相連的字段就是外鍵。

什么是觸發(fā)器?SQL Server 2000有什么不同類型的觸發(fā)器?

讓未來的數(shù)據(jù)庫開發(fā)人員知道可用的觸發(fā)器類型以及如何實現(xiàn)它們是非常有益的。

觸發(fā)器是一種專用類型的存儲過程,它被捆綁到SQL Server 2000的表格或者視圖上。在SQL Server 2000里,有INSTEAD-OF和AFTER兩種觸發(fā)器。INSTEAD-OF觸發(fā)器是替代數(shù)據(jù)操控語言(Data Manipulation Language,DML)語句對表格執(zhí)行語句的存儲過程。例如,如果我有一個用于TableA的INSTEAD-OF-UpDATE觸發(fā)器,同時對這個表格執(zhí)行一個更新語句,那么INSTEAD-OF-UpDATE觸發(fā)器里的代碼會執(zhí)行,而不是我執(zhí)行的更新語句則不會執(zhí)行操作。

AFTER觸發(fā)器要在DML語句在數(shù)據(jù)庫里使用之后才執(zhí)行。這些類型的觸發(fā)器對于監(jiān)視發(fā)生在數(shù)據(jù)庫表格里的數(shù)據(jù)變化十分好用。

您如何確一個帶有名為Fld1字段的TableB表格里只具有Fld1字段里的那些值,而這些值同時在名為TableA的表格的Fld1字段里?

這個與關(guān)系相關(guān)的問題有兩個可能的答案。第一個答案(而且是您希望聽到的答案)是使用外鍵限制。外鍵限制用來維護引用的完整性。它被用來確保表格里的字段只保存有已經(jīng)在不同的(或者相同的)表格里的另一個字段里定義了的值。這個字段就是候選鍵(通常是另外一個表格的主鍵)。

另外一種答案是觸發(fā)器。觸發(fā)器可以被用來保證以另外一種方式實現(xiàn)與限制相同的作用,但是它非常難設(shè)置與維護,而且性能一般都很糟糕。由于這個原因,微軟建議開發(fā)人員使用外鍵限制而不是觸發(fā)器來維護引用的完整性。

對一個投入使用的在線事務(wù)處理表格有過多索引需要有什么樣的性能考慮?

你正在尋找進行與數(shù)據(jù)操控有關(guān)的應(yīng)聘人員。對一個表格的索引越多,數(shù)據(jù)庫引擎用來更新、插入或者刪除數(shù)據(jù)所需要的時間就越多,因為在數(shù)據(jù)操控發(fā)生的時候索引也必須要維護。

你可以用什么來確保表格里的字段只接受特定范圍里的值?

這個問題可以用多種方式來回答,但是只有一個答案是“好”答案。您希望聽到的回答是Check限制,它在數(shù)據(jù)庫表格里被定義,用來限制輸入該列的值。

觸發(fā)器也可以被用來限制數(shù)據(jù)庫表格里的字段能夠接受的值,但是這種辦法要求觸發(fā)器在表格里被定義,這可能會在某些情況下影響到性能。因此,微軟建議使用Check限制而不是其他的方式來限制域的完整性。

如果應(yīng)聘者能夠正確地回答這個問題,那么他的機會就非常大了,因為這表明他們具有使用存儲過程的經(jīng)驗。

返回參數(shù)總是由存儲過程返回,它用來表示存儲過程是成功還是失敗。返回參數(shù)總是INT數(shù)據(jù)類型。

OUTpUT參數(shù)明確要求由開發(fā)人員來指定,它可以返回其他類型的數(shù)據(jù),例如字符型和數(shù)值型的值。(可以用作輸出參數(shù)的數(shù)據(jù)類型是有一些限制的。)您可以在一個存儲過程里使用多個OUTpUT參數(shù),而您只能夠使用一個返回參數(shù)。

什么是相關(guān)子查詢?如何使用這些查詢?

經(jīng)驗更加豐富的開發(fā)人員將能夠準確地描述這種類型的查詢。

相關(guān)子查詢是一種包含子查詢的特殊類型的查詢。查詢里包含的子查詢會真正請求外部查詢的值,從而形成一個類似于循環(huán)的狀況


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 土默特右旗| 扶风县| 修文县| 甘孜| 台北市| 山丹县| 天津市| 阳西县| 海城市| 饶阳县| 姚安县| 阆中市| 绥宁县| 涿州市| 南宫市| 福贡县| 霍山县| 乌审旗| 大足县| 襄城县| 玛曲县| 博罗县| 湄潭县| 临城县| 饶河县| 革吉县| 姚安县| 西吉县| 宿松县| 长沙市| 阜宁县| 芦山县| 兴山县| 都安| 靖西县| 宿迁市| 洞口县| 汽车| 安达市| 湾仔区| 寻甸|