日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL - 常见SQL笔试题整理(长期更新)

發(fā)布時(shí)間:2023/12/10 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL - 常见SQL笔试题整理(长期更新) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1)?有一張表,里面有3個(gè)字段:語文,數(shù)學(xué),英語。其中有3條記錄分別表示語文70分,數(shù)學(xué)80分,英語58分,請用一條SQL語句查詢出這三條記錄并按以下條件顯示出來: 大于或等于80表示優(yōu)秀,大于或等于60表示及格,小于60分表示不及格。

select(case when 語文 >= 80 then '優(yōu)秀' when 語文 >= 60 and 語文 < 80 then '及格' else '不及格' end) as 語文,(case when 數(shù)學(xué) >= 80 then '優(yōu)秀' when 數(shù)學(xué) >= 60 and 數(shù)學(xué) < 80 then '及格' else '不及格' end) as 數(shù)學(xué),(case when 英語 >= 80 then '優(yōu)秀' when 英語 >= 60 and 英語 < 80 then '及格' else '不及格' end) as 英語from [table]

2)一張table-t表,里面有三個(gè)字段:英語,其中有三條記錄分別表示語文70分,數(shù)學(xué)80分,英語58,請用一條sql語句查詢出這三條記錄并按以下條件顯示出來:大于或等于80表優(yōu)秀,大于等于60表及格,小于60表不及格顯示格式:及格 優(yōu)秀 不及格

select case when 語文>=80 then '優(yōu)秀' when 語文>=60 then '及格' else '不及格' end 語文 ,case when 數(shù)學(xué)>=80 then '優(yōu)秀' when 數(shù)學(xué)>=60 then '及格' else '不及格' end 數(shù)學(xué) ,case when 英語>=80 then '優(yōu)秀' when 英語>=60 then '及格' else '不及格' end 英語 from table_t

3)表結(jié)構(gòu)和數(shù)據(jù)

date ???????????????result

2011-02-01 ?????????勝

2011-02-01 ?????????負(fù)

2011-02-01 ?????????勝

2011-02-02 ?????????勝

2011-02-02 ?????????負(fù)

查詢出來的結(jié)果:

date ????????勝 ????負(fù)

2011-02-01 ???2 ?????1

2011-02-02 ???1 ?????1

請寫出SQL語句:

SELECT date,( SELECT count( * ) FROM table1 WHERE date = t.date AND result = '勝' ) AS '勝',( SELECT count( * ) FROM table1 WHERE date = t.date AND result = '負(fù)' ) AS '負(fù)'FROM table1 AS t GROUP BY date;

4)已知商品的關(guān)系模型:G(GNO,GNAME,GSALES,GPRICE,GTIME),GNO為商品編碼,GNAME為商品名稱,GSALES為商品銷售量,GPRICE為商品價(jià)格,GTIME為商品上架時(shí)間。按要求寫SQL語句,假設(shè)數(shù)據(jù)庫是mysql。創(chuàng)建這張商品表的sql。取商品銷售額排前5名的商品名稱和上架時(shí)間。

創(chuàng)建表CREATE TABLE `G` (`GNO` varchar(10) NOT NULL,`GNAME` varchar(20) NULL,`GSALES` decimal(10, 2) NULL,`GPRICE` decimal(10, 2) NULL,`GTIME` datetime(0) NULL,PRIMARY KEY (`GNO`));查詢銷售額前5的商品名稱和上架時(shí)間select GNAME,GTIME from g order by GSALES desc limit 0,5

5)用SQL語句查詢每門課都大于80的學(xué)生姓名

name ??kecheng ???fenshu

張三?????語文?????81

張三?????數(shù)學(xué)?????75

李四?????語文?????76

李四?????數(shù)學(xué)?????90

王五?????語文?????81

王五?????數(shù)學(xué)?????100

王五?????英語?????90

方法一:思路:如果能獲得一張表,由學(xué)生姓名,語文成績,數(shù)學(xué)成績,英語成績的表,剩下的就是在WHERE條件中篩選及可以獲得想要的結(jié)果。具體辦法:通過自連接的辦法,以“姓名”為連接條件,自連接三次,便可以獲得包含又姓名和三門課程成績的數(shù)據(jù)行。雖然可以得到想要的數(shù)據(jù)列。但會(huì)有很多冗余重復(fù)列!點(diǎn)評:此方法是根據(jù)題目,依題解題,中規(guī)中矩! 不過多張表連接非常耗費(fèi)時(shí)間。而且SQL語句也比較復(fù)雜,需要注意事項(xiàng)很多。SELECT D.name FROM (SELECT S.name,S.score AS ITEM1,S1.score AS ITEM2,S2.score AS ITEM3FROM Student Sinner join Student S1 on S.name = S1.name and S.course <> S1.courseinner join Student S2 on S.name = S2.name and S.course <> S2.courseWHERE S.score>=80 and S1.score>=80 and S2.score>=80) DGROUP BY D.name 方法二:思路:采用逆向思維想想。。。。。。求三門成績都大于80的人,也可以是使先查出有成績小于80 的人,再除去這些人不就是三門成績都大于80的人了么? 以前學(xué)過的數(shù)學(xué)邏輯逆向思維還真是有用的阿!!具體辦法:先掃描表,查出有成績小于80的人的姓名,然后再次掃描表,用not in 或not exists 方法。點(diǎn)評:此方法采用逆向思維,能快速寫出高效且簡單的 SQL語句。//not inSELECT DISTINCT A.name FROM Student AWHERE A.name not in(SELECT Distinct S.name FROM Student S WHERE S.score <80)//not existsSELECT DISTINCT A.name From Student A where not exists (SELECT 1 From Student S Where S.score <80 AND S.name =A.name) 方法三:SELECT S.nameFROM Student SGROUP BY S.nameHaving MIN(S.score)>=80

6)刪除除了自動(dòng)編號(hào)不同,其他都相同的學(xué)生冗余信息

有如下學(xué)生表

自動(dòng)編號(hào)?學(xué)號(hào)??姓名?課程編號(hào)?課程名稱?分?jǐn)?shù)

1 ?????2005001?張三?0001 ?????數(shù)學(xué) ??69

2 ?????2005002?李四?0001 ?????數(shù)學(xué) ??89

3 ?????2005001?張三?0001 ?????數(shù)學(xué) ??69

要求:刪除除了自動(dòng)編號(hào)不同,其他都相同的學(xué)生冗余信息

DELETE from score where (name,kecheng,fenshu) in ( select name,kecheng,fenshu from score GROUP by name,kecheng,fenshu having count(name) > 1) ;

7)數(shù)據(jù)庫表如下,寫出sql語句求出每個(gè)人的平均成績,格式為【姓名,平均成績】

tbl_score

id ?學(xué)生ID ????課程名稱 ???成績

1 ?????1 ??????數(shù)學(xué) ?????99

2 ?????2 ??????數(shù)學(xué) ????100

3 ?????1 ??????語文 ?????80

4 ?????2 ??????語文 ?????96

tbl_student

id ?姓名 ??年齡

1 ??張三 ??12

2 ??李四 ??13

select s.姓名,avg(t.`成績`) 平均成績 from tbl_score t left join tbl_student s on t.`學(xué)生ID`=s.id group by s.id

?

總結(jié)

以上是生活随笔為你收集整理的MySQL - 常见SQL笔试题整理(长期更新)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。