『壹』 資料庫中查詢全部學生都選修了的課程號和課程名、
select 課程.課程號,課程.課程名
from 課程 where 課程號 in(
select distinct 課程號 from 選課
group by 課程號
having count(*) =(select count(*) from 學生)
)
根據人數判斷 ,比較土,可以這樣試試。
『貳』 資料庫sql語句中 查詢選修了全部課程的學生的學號和姓名 理解
樓主別著急!
為好理解我們先從這條SQL語句所要實現的功能入手。
功能:查出選修了全部課程的學信息。那麼SQL在查詢數據的時候的遍歷每一個學生信息。判斷該學生是否滿足條件。
1
如果存在這么一條Course記錄A(暫命名為A),
則不選擇該學生。否則該學生就被查詢出來
2
那麼記錄A,是怎麼查出來的呢?A查出的條件是:不存在SC記錄B,只要不存在B,就可查出A
3
那麼B記錄是什麼?B記錄是選課信息表,根據學號和課程號可查出記錄B
如果B為空(該學生有沒有選的課程)也就是不存在,則A就有一條記錄,根據規則2可知:因為有A,所以該學生信息將不被輸出。
如果在SC中每一個課程編號和該學生編號為條件都能夠查出一條記錄B(也就是該學生選修了全部課程),所以A記錄不存在,則輸出該學生的信息。
也就是在選課表中,如果學生選了全部課程(也就是滿足SELECT
*
FROM
SC
WHERE
Sno=
Student.Sno
AND
Cno=
Course.Cno)始終存在,當然,課程編號是任意的)。那麼就輸出該學生的信息。你不要為理解這條SQL而忘記了它本身是要做什麼.
帶著SQL的目的(要實現的功能)去理解就好了。
『叄』 SQL:查詢每門課程的課程名、選課學生姓名及其學號,選課人數
我的學生資料庫跟你的差不多,我就用我的這些表給你做了個
selectc.Cno,s.Sname,s.Sno,選課人數fromCoursec
leftjoinSConc.cno=sc.cno
leftjoinstudentsons.Sno=SC.Sno
leftjoin(selectc.cno,COUNT(s.Sno)選課人數from
CoursecleftjoinSConc.cno=sc.cno
leftjoinstudentsons.Sno=SC.Sno
groupbyc.Cno)asTONT.Cno=c.Cno
『肆』 sql 查詢每個學生的基本信息以及所選修的課程情況
很簡單的關聯查詢,SQL如下:
selecta.sn,a.sd,a.sex,a.sb,c.cn,c.teacher,b.gradefromsasa
joinscasb
ona.sno=b.sno
joincasc
onb.cno=c.cno
如上是查詢到所有學生的基本信息和選課情況還有成績。
『伍』 資料庫授權問題,自己只能查看自己所有個人信息和選課信息
一戶授權問題,自己只能查看自己所述的個人信息,對的,這是肯定的,一般性不可以查別人的