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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL学习---作业(1)

發布時間:2023/12/16 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL学习---作业(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目是從學校MOOC平臺粘過來的!
3.8 對于教學數據庫的三個基本表:

S(學號,姓名 ,年齡,性別)

SC(學號 ,課程號,成績)

C(課程號 ,課程名,任課教師姓名)

試用SQL語句表達下列查詢:

⑴ 查詢姓劉的老師所授課程的課程號和課程名。

⑵ 查詢年齡大于23歲的男同學的學號和姓名。

⑶ 查詢學號為S3的學生所學課程的課程號、課程名和任課教師姓名。

⑷ 查詢“張小飛”沒有選修的課程號和課程名。

⑸ 查詢至少選修了3門課程的學生的學號和姓名。

⑹ 查詢全部學生都選修了的課程編號和課程名稱。

⑺ 在SC中刪除尚無成績的選課元組。

⑻ 把“高等數學”課的所有不及格成績都改為60。

⑼ 把低于總評均成績的女同學的成績提高5%。

⑽ 向C中插入元組(‘C8’,‘VC++’,‘王昆’)

無法把要更新的表放在from語句下:
You can’t specify target table for upedate in from column
解決方案
需要把(邏輯上)需要放在from之后的表(也就是那些滿足篩選條件的與元組集合)偽裝成一個新的表,再從中取出作為限制條件。

我覺得有些吃力的是(8)、(9):

#(8)update sc as a,(select 學號,課程號 from sc where 課程號=(select 課程號 from c where 課程名='高等數學')) as bset 成績=60where a.學號=b.學號and a.課程號=b.課程號and a.成績<60;#(9) 這種方法有缺陷---只通過將修改元組的學號來選擇記錄update scset 成績=(1+0.05)*成績where 學號 in (select a.學號 from(select DISTINCT s.學號 from s join sc on s.學號=sc.學號where sc.成績<(select avg(成績) from sc)and s.性別='女') as a);

修整一下:

#題目:把高等數學不及格的成績都修改成60 #首先選出高等數學不及格的學號和課程號 SELECT 學號,課程號 FROM SC WHERE 成績<60 AND 課程號= (SELECT 課程號 from c where 課程名= '高等數學') #接著,更新相應成績 UPDATE SC as a,(SELECT 學號,課程號 FROM SC WHERE 成績<60 AND 課程號= (SELECT 課程號 from c where 課程名= '高等數學')) as b SET 成績=60 WHERE a.學號=b.學號 and a.課程號=b.課程號; #題目:把低于總平均成績的女同學的成績提高5% update sc a set 成績=(1+0.05)*成績 where a.學號 in (select 學號 from s where 性別='女') and a.成績 in (select m.成績 from (select 成績 from sc where 成績<(select avg(成績) from sc) )as m);

注:最后一行體現了上述的“偽裝”—把選出的成績沒有直接選擇,而是通過命名成新的表m,再行選擇

總結

以上是生活随笔為你收集整理的MySQL学习---作业(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。