2017年Sql常見面試題

NIIT 在廣泛的軟件和硬件平臺上成功完成了1000多個主要的信息技術項目。以下是關於Sql常見面試題,希望大家認真閱讀!

2017年Sql常見面試題

1. 用一條SQL 語句 查詢出每門課都大於80 分的學生姓名

name kecheng fenshu

張三 語文 81

張三 數學 75

李四 語文 76

李四 數學 90

王五 語文 81

王五 數學 100

王五 英語 90

A: select distinct name from table where name not in (select distinct name from table where fenshu<=80)

select name from table group by name having min(fenshu)>80

2. 學生表 如下:

自動編號 學號 姓名 課程編號 課程名稱 分數

1 2005001 張三 0001 數學 69

2 2005002 李四 0001 數學 89

3 2005001 張三 0001 數學 69

刪除除了自動編號不同, 其他都相同的學生冗餘信息

A: delete tablename where 自動編號 not in(select min( 自動編號) from tablename group by 學號, 姓名, 課程編號, 課程名稱, 分數)

3. 一個叫 team 的表,裏面只有一個字段name, 一共有4 條紀錄,分別是a,b,c,d, 對應四個球對,現在四個球對進行比賽,用一條sql 語句顯示所有可能的比賽組合.

你先按你自己的想法做一下,看結果有我的這個簡單嗎?

答:select ,

from team a, team b

where <

4. 請用SQL 語句實現:從TestDB 數據表中查詢出所有月份的'發生額都比101 科目相應月份的發生額高的科目。請注意:TestDB 中有很多科目,都有1 -12 月份的發生額。

AccID :科目代碼,Occmonth :發生額月份,DebitOccur :發生額。

數據庫名:JcyAudit ,數據集:Select * from TestDB

答:select a.*

from TestDB a

,(select Occmonth,max(DebitOccur) Debit101ccur from TestDB where AccID='101' group by Occmonth) b

where onth=onth and tOccur>t101ccur

5. 面試題:怎麼把這樣一個表兒

year month amount

1991 1 1.1

1991 2 1.2

1991 3 1.3

1991 4 1.4

1992 1 2.1

1992 2 2.2

1992 3 2.3

1992 4 2.4

查成這樣一個結果

year m1 m2 m3 m4

1991 1.1 1.2 1.3 1.4

1992 2.1 2.2 2.3 2.4

  答案一、

select year,

(select amount from aaa m where month=1 and =) as m1,

(select amount from aaa m where month=2 and =) as m2,

(select amount from aaa m where month=3 and =) as m3,

(select amount from aaa m where month=4 and =) as m4

from aaa group by year

6. 說明:複製表( 只複製結構, 源表名:a 新表名:b)

SQL: select * into b from a where 1<>1 (where1=1,拷貝表結構和數據內容)

ORACLE:create table b

As

Select * from a where 1=2

[<>(不等於)(SQL Server Compact)

比較兩個表達式。 當使用此運算符比較非空表達式時,如果左操作數不等於右操作數,則結果爲 TRUE。 否則,結果爲 FALSE。]

7. 說明:拷貝表( 拷貝數據, 源表名:a 目標表名:b)

SQL: insert into b(a, b, c) select d,e,f from a;

8. 說明:顯示文章、提交人和最後回覆時間

SQL: select e,name,ate from table a,(select max(adddate) adddate from table where e=e) b

9. 說明:外連接查詢( 表名1 :a 表名2 :b)

SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUTER JOIN b ON a.a = b.c

ORACLE :select a.a, a.b, a.c, b.c, b.d, b.f from a ,b

where a.a = b.c(+)

10. 說明:日程安排提前五分鐘提醒

SQL: select * from 日程安排 where datediff('minute',f 開始時間,getdate())>5

11. 說明:兩張關聯表,刪除主表中已經在副表中沒有的信息

SQL:

Delete from info where not exists (select * from infobz where d=d )

12. 有兩個表A 和B ,均有key 和value 兩個字段,如果B 的key 在A 中也有,就把B 的value 換爲A 中對應的value

這道題的SQL 語句怎麼寫?

update b set e=(select e from a where =) where in(select from b,a where =);