SQL語句面試題

2021-05-07 16:51:48 字數 4420 閱讀 4711

2.請教乙個面試中遇到的sql語句的查詢問題

表中有a b c三列,用sql語句實現:當a列大於b列時選擇a列否則選擇b列,當b列大於c列時選擇b列否則選擇c列。

create table #tmp(a int,b int,c int)

insert into #tmp values('10','20','30')

--insert into #tmp values('10','30','20')

--insert into #tmp values('40','10','20')

select * from #tmp

select (case when a>b then a else b end),(case when b>c then b else c end ) from #tmp

3.面試題:乙個日期判斷的sql語句?

請取出tb_send表中日期(sendtime欄位)為當天的所有記錄?(sendtime欄位為datetime型,包含日期與時間)

select * from #tmp where datediff(dd,rq,getdate())=0

select * from #tmp where rq=rtrim(convert(varchar,getdate(),23))

4.有一張表,裡面有3個字段:語文,數學,英語。其中有3條記錄分別表示語文70分,數學80分,英語58分,請用一條sql語句查詢出這三條記

錄並按以下條件顯示出來(並寫出您的思路):

大於或等於80表示優秀,大於或等於60表示及格,小於60分表示不及格。

顯示格式:

語文數學英語

及格優秀不及格

create table #tmp(語文 int,數學 int ,英語 int)

insert into #tmp values('70','80','58')

--insert into #tmp values('100','50','60')

select * from #tmp

select (case when 語文 >=80 then '優秀'

when 語文 >=60 then '及格'

else '不及格' end ) 語文,

(case when 數學 >=80 then '優秀'

when 數學 >=60 then '及格'

else '不及格' end ) 數學,

(case when 英語 >=80 then '優秀'

when 英語 >=60 then '及格'

else '不及格' end ) 英語

from #tmp

5.在sqlserver2000中請用sql建立一張使用者臨時表和系統臨時表,裡面包含兩個欄位id和idvalues,型別都是int型,並解釋下兩者的區別?

使用者臨時表:create table #xx(id int, idvalues int)

系統臨時表:create table ##xx(id int, idvalues int)

區別:使用者臨時表只對建立這個表的使用者的session可見,對其他程序是不可見的.

當建立它的程序消失時這個臨時表就自動刪除.

全域性臨時表對整個sql server例項都可見,但是所有訪問它的session都消失的時候,它也自動刪除.

6.sqlserver2000是一種大型資料庫,他的儲存容量只受儲存介質的限制,請問它是通過什麼方式實現這種無限容量機制的。

它的所有資料都儲存在資料檔案中(*.dbf),所以只要檔案夠大,sql server的儲存容量是可以擴大的.

sql server 2000 資料庫有三種型別的檔案:

主要資料檔案

主要資料檔案是資料庫的起點,指向資料庫中檔案的其它部分。每個資料庫都有乙個主要資料檔案。主要資料檔案的推薦副檔名是 .mdf。

次要資料檔案

次要資料檔案包含除主要資料檔案外的所有資料檔案。有些資料庫可能沒有次要資料檔案,而有些資料庫則有多個次要資料檔案。次要資料文

件的推薦副檔名是 .ndf。

日誌檔案

日誌檔案包含恢復資料庫所需的所有日誌資訊。每個資料庫必須至少有乙個日誌檔案,但可以不止乙個。日誌檔案的推薦副檔名是 .ldf。

7.請用乙個sql語句得出結果

從table1,table2中取出如table3所列格式資料,注意提供的資料及結果不準確,只是作為乙個格式向大家請教。

如使用儲存過程也可以。

table1

月份mon 部門dep 業績yj

一月份 01 10

一月份 02 10

一月份 03 5

二月份 02 8

二月份 04 9

三月份 03 8

table2

部門dep 部門名稱dname

01 國內業務一部

02 國內業務二部

03 國內業務三部

04 國際業務部

table3 (result)

部門dep 一月份二月份三月份

01 10 null null

02 10 8 null

03 null 5 8

04 null null 9

create table #a(mon varchar(10),dep varchar(10) ,yj int)

insert into #a values('一月份','01','10')

insert into #a values('一月份','02','10')

insert into #a values('一月份','03','5')

insert into #a values('二月份','02','8')

insert into #a values('二月份','04','9')

insert into #a values('三月份','03','8')

select * from #a

create table #b(dep varchar(10),dname varchar(20))

insert into #b values('01','國內業務一部')

insert into #b values('02','國內業務二部')

insert into #b values('03','國內業務三部')

insert into #b values('04','國際業務部')

select * from #b

1)select dep,(select sum(yj) from #a where mon='一月份' and # 一月份,

(select sum(yj) from #a where mon='二月份' and # 二月份,

(select sum(yj) from #a where mon='三月份' and # 三月份

from #b

2)select sum(case when a.mon='一月份' then a.yj else 0 end ) as '一月份',

sum(case when a.mon='二月份' then a.yj else 0 end ) as '一月份',

sum(case when a.mon='三月份' then a.yj else 0 end ) as '一月份'

from #b b left join #a a on group by ,dname --order by

??)select a.部門名稱dname,b.業績yj as '一月份',c.業績yj as '二月份',d.業績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

8.華為一道面試題

乙個表中的id有多個記錄,把所有這個id的記錄查出來,並顯示共有多少條記錄數。

create table #b(dep varchar(10),dname varchar(20))

insert into #b values('01','國內業務一部')

insert into #b values('02','國內業務二部')

insert into #b values('03','國內業務三部')

insert into #b values('04','國際業務部')

insert into #b values('01','國內業務一部')

insert into #b values('02','國內業務二部')

insert into #b values('01','國內業務三部')

insert into #b values('03','國際業務部')

select * from #b

sql面試題彙總

目前在職場中很難找到非常合格的資料庫開發人員。我的乙個同事曾經說過 sql開發是一門語言,它很容易學,但是很難掌握。在面試應聘的sql server資料庫開發人員時,我運用了一套標準的基準技術問題。下面這些問題是我覺得能夠真正有助於淘汰不合格應聘者的問題。它們按照從易到難的順序排列。當您問到關於主鍵...

Oracle面試題庫 SQL

1.oracle用來判斷列值是否為空的操作符是 a null b is null c as null d nullis 2 分析以下的 sql命令 select from inventory i,manufacturer m where order by 如何修改上述命令使其成功執行 a order...

sql語句大全

建立資料庫 建立之前判斷該資料庫是否存在 if exists select from sysdatabases where name databasename drop database databasename gocreate database databasename 刪除資料庫 drop d...