MySQL学习---作业(1)
生活随笔
收集整理的這篇文章主要介紹了
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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计划bom表 java_ERP总结系列(
- 下一篇: 三、大数据时代下的SQL Server第