當前位置:
首頁 > 教育 > sql經典面試試題,讓你更好的了解和運用sql語言

sql經典面試試題,讓你更好的了解和運用sql語言

sql經典面試試題,讓你更好的了解和運用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

select name from table group by name having count(kecheng)>=3 and 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. 面試題:怎麼把這樣一個表兒

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 m.year=aaa.year) as m1,

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

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

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

from aaa group by year

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

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

5.有一張表,裡面有3個欄位:語文,數學,英語。其中有3條記錄分別表示語文70分,數學80分,英語58分,請用一條sql語句查詢出這三條記錄並按以下條件顯示出來(並寫出您的思路):

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

顯示格式:

語文 數學 英語

及格 優秀 不及格

------------------------------------------

select

(case when 語文>=80 then "優秀"

when 語文>=60 then "及格"

else "不及格") as 語文,

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

when 數學>=60 then "及格"

else "不及格") as 數學,

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

when 英語>=60 then "及格"

else "不及格") as 英語,

from table

6、編寫SQL語句

1) 創建一張學生表,包含以下信息,學號,姓名,年齡,性別,家庭住址,聯繫電話

Create table stu (學號 int ,

姓名 varchar(8),

年齡 int,

性別 varchar(4),

家庭地址 varchar(50),

聯繫電話 int

);

2) 修改學生表的結構,添加一列信息,學歷

Alter table stu add 學歷 varchar(6);

3) 修改學生表的結構,刪除一列信息,家庭住址

Alter table stu drop column 家庭地址

4) 向學生表添加如下信息:

學號 姓名年齡性別聯繫電話學歷

1A22男123456小學

2B21男119中學

3C23男110高中

4D18女114大學

Insert into stu values(1,』A』,22,』男』,123456,』小學』)

Insert into stu values(2,』B』,21,』男』,119,』中學』)

Insert into stu values(3,』C』,23,』男』,110,』高中』)

Insert into stu values(4,』D』,18,』女』,114,』大學』)

5) 修改學生表的數據,將電話號碼以11開頭的學員的學歷改為「大專」

Update stu set 學歷=』大專』 where 聯繫電話 like 『11%』

6) 刪除學生表的數據,姓名以C開頭,性別為『男』的記錄刪除

Delect from stu where 性別=』男』 and 姓名 like 『c%』

7) 查詢學生表的數據,將所有年齡小於22歲的,學歷為「大專」的,學生的姓名和學號示出來

Select 姓名,學號 from stu where 年齡<22 and 學歷=』大專』

8) 查詢學生表的數據,查詢所有信息,列出前25%的記錄

Select top 25 percent * from stu

9) 查詢出所有學生的姓名,性別,年齡降序排列

Select 姓名,性別 from stu order by 年齡 desc

10) 按照性別分組查詢所有的平均年齡

Select avg(年齡) from stu group by 性別

7、查詢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

8、查詢表A中存在ID重複三次以上的記錄,完整的查詢語句如下:

select * from(select count(ID) as count from table group by ID)T where T.count>3

9、說出以下聚合數的含義:avg ,sum ,max ,min , count ,count(*)

AVG:求平均值

SUM:求和

MAX:求最大值

MIN:求最小值

COUNT(*):返回所有行數

*****************************************************************

事務 Transaction 觸發器 TRIGGER 繼續 continue 唯一 unqiue

主鍵 primary key 標識列 identity 外鍵 foreign key 檢查 check

約束 constraint

*****************************************************************

10、說明:隨機取出10條數據

select top 10 * from tablename order by newid()

11、查詢平均成績大於60分的同學的學號和平均成績;

select stuId,avg(score)

from Scores

group by stuId having avg(score) >60;

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!

TAG: |