怎麼用SQL語句查詢每個學生選修的課程名及其成績

2021-03-21 16:26:43 字數 6504 閱讀 2378

1樓:消逝的風

select 姓名,課程名,成績 from (課程名所在的表名 c join 成績所在的表名 s on c.課程號=s.課程號) join 學生資訊表 on s.

學號=學生資訊表.學號 ;

具體的例子:

select sname,**ame,grade from student st left join(score s left join course c on s.**o=c.**o)

on st.sno=s.sno;

2樓:趙星宇

查詢選修了全部課程的學生姓名

:student 是學生表  course 是選課表  sc 是課程表

select sname

from student

where not exists

(select *

from course

where not exists

(select *

from sc

where sno =student.snoand **o=course.**o)

用sql語句查詢每個學生選修的課程名及其成績?

3樓:消逝的風

select 姓名,課程名,成績 from (課程名所在的表名 c join 成績所在的表名 s on c.課程號=s.課程號) join 學生資訊表 on s.

學號=學生資訊表.學號 ;

具體的例子:

select sname,**ame,grade from student st left join(score s left join course c on s.**o=c.**o)

on st.sno=s.sno;

查詢每個學生選修的課程名及其成績?用sql語句

4樓:發生等將發生

表結構,沒有表結構語句沒法出來

5樓:萇茂雀涵涵

select

姓名bai,課程名,成績

from

(課程du名所zhi

在的表名

cjoin

成績所dao在的表名son

c.課程號=s.課程號)

join

學生版信權息表

ons.學號=學生資訊表.學號

;具體的例子:

select

sname,**ame,grade

from

student

stleft

join(score

sleft

join

coursecon

s.**o=c.**o)

onst.sno=s.sno;

mysql 怎麼用sql語句寫:按學號列出每個學生所選修課程中最高分的課程名稱及其分數

6樓:黃鶯清吟

select 課程名

,a.最高bai分du from

(select max(分數zhi)最高dao分,學號回 from 表名答 group by 學號 )a,表名 bwhere b.學號=a.學號 and b.

分數=a.最高分

7樓:匿名使用者

select max(分數),名稱 from user group by id

sql語句查詢檢視90分以上學生的成績.課程名稱.學生姓名怎麼寫

8樓:匿名使用者

select 成績,課程名稱,姓名 from 成績,學生基本資訊,課程名稱 where學生基本資訊.學號=成績.學號 and 成績.

課程編號=課程名稱.課程編號 and 成績》90

9樓:匿名使用者

語句寫出,列出成績不在60分到90分之間的學生姓名和所在專業。 22.用sql 26.用sql 語句寫出,查詢沒有考試成績的學生學號。 21.select 姓名,

10樓:匿名使用者

select * from (

select * from (

select * from sc where score>90) s1 inner join stu st on s1.sno=st.sno) s2 inner join 課程

bai表

du c

on s2.**o=c.**o

上面查詢的列zhi

自己dao可以內

調一下。容

sql語言1.查詢每個學生及其選修課程的情況2、查詢所有年齡小於18週歲的女生的學號和姓名

11樓:匿名使用者

(1) select t.sname,c.cpno fromstudent t

left join sc s (s.sno=t.sno)left join course c (c.

**o=s.**o)(2) select t.sno,t.

sname from student t

where t.s***='女' and t.sage <18不行了在找我,可以密我**。

12樓:匿名使用者

1 select student.sno, sc.**ofrom student,sc

where student.sno = sc.**o;

意思就是查詢每個學生的情況,且列出相應的選修情況2 select student.s***, student.sage

from student

where student.sage<18 and student.s***=2;

's***=2意思就是等於女的意思,一般在這個表裡s***欄位設定為數字型1為男2為女,也可以設定成字元型,但不如數字型使用方便

13樓:真愛的胸懷

select sno,sname,from student where (sage<18 and s***='女')

以上是第二個語句的答案 ,第一個語句有歧義

14樓:匿名使用者

select a.sno,a.sname,b.**amefrom student a,cours b,sc cwhere a.sno=c.sno

and b.**o=c.**o

group by a.sno,a.sname,b.**ameselect sno,sname from studentwhere s***='女' and sage<18

用sql語句寫出只選修一門的學生的學號、課程名、成績。

15樓:匿名使用者

select 學號,課程名,成績 from 成績表 a,(select 學號,count(*) as num from 成績表 group by 學號) b where b.num = 1 and b.學號 = a.學號

用sql語句查詢所有學員(包括沒有選課的學員)的選課情況 (即選修的課程名和成績),沒有選課的學員相關

16樓:匿名使用者

select s.sname, c.**ame, sc.scgrade

from s left outer join sc on( s.sno = sc.sno )

left outer join c on ( c.**o = sc.**o )

資料庫sql語句中 查詢選修了全部課程的學生的學號和姓名 理解

17樓:匿名使用者

這思路是用了個雙重否定來求解的。因為sql中沒有全稱量詞,於是要把題目轉換成等價的存在量詞表達形式。即根據(∀x)p≡¬∃(¬p)來轉化為雙重否定的表達。

同時由於「學生x選修課程y 」

之間是不定的,需要使用兩個exist。

於是「選修了全部課程的學生」等價於「不存在(有他沒選的課的)學生」

使用了兩次not exists來實現雙重否定。

先查詢在課程裡查詢「沒有學生選的課程」,第一次否定,

然後再在學生裡查詢「沒有屬於上面情況的學生」的名字,第二次否定;

結合起來,就是 「沒有(沒選的課程)的學生」了。

好了,從裡到外寫出來,就是

select sname from student where not exists(

select * from course where not exists(

select * from sc where sno=student.sno and **o=course.**o

))這個只不過是逆向思維來解決問題的方法。舉一反三,比如要查「被全部學生都選的課程名」

則是求「不存在有學生沒選它的課程」

select **ame from course where not exists(

select * from student where not exists(

select * from sc where sno=student.sno and **o=course.**o

))再如,查「所有人都沒選修的課程」,這個雖然是單次否定了,但仍需要兩個存在量詞表述。

等價於查詢「不存在有學生選了它的課程」。

select **ame from course where not exists (

select * from student where exists (

select * from sc where **o=course.**o and sno=student.sno))

18樓:風嘯無名

沒有資料庫難以具體說明,總的來說,就是一個多表查詢包括學生基本資訊表、課程資訊表、成績表等,學號為主鍵,查詢姓名和課程、分數等資訊,總分用sum算。

1 。 exists 子查詢找到的提交

not exists 子查詢中 找不到的提交說明:不要去翻譯為存在和不存在,把腦袋搞暈。

2 。 建立程式迴圈的概念,這是一個動態的查詢過程。如 for迴圈 。

3 。 exists執行的流程exists首先執行外層查詢,再執行記憶體查詢,與in相反。 流程為首先取出外層中的第一元組, 再執行內層查詢,將外層表的第一元組代入,若內層查詢為真,即有結果時。

返回外層表中的第一元 組,接著取出第二元組,執行相同的演算法。一直到掃描完外層整表 。

19樓:月光雪松

樓主彆著急!

為好理解我們先從這條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 **o= course.**o)始終存在,當然,課程編號是任意的)。

那麼就輸出該學生的資訊。你不要為理解這條sql而忘記了它本身是要做什麼.

帶著sql的目的(要實現的功能)去理解就好了。

20樓:雨夜的緣分

1,select * from sc where sno= student.sno and **o= course.**o

在sc表中查詢符合sno= student.sno and **o= course.**o這兩個條件的所有資料,

2,select * from course where not exists (select * from sc where sno= student.sno and **o= course.**o);這句的意思是在course表中查詢不滿足1,中的所有資料

3,select sname from student where not exists (select * from course where not exists (select * from sc where sno= student.sno and **o= course.**o));

這整句的意思就是查詢student表中所有不滿足2,資料,就是選修了全部課程的學生了

只所以會有這麼多查詢,可能sno= student.sno and **o= course.**o這兩個條件是是sc表查詢的條件分散在另外兩個表中,引用了雙重否定,也就是肯定的意思,達到可以讓student.

sno ,course.**o,在sc表中作為條件的目的

夠詳細吧!!!!

oracle的sql語句中查詢每個學生的的學號姓名

根據你的描述應該會有三張表,把這三張表用select from查詢出來截圖看一下,那樣寫出來的問題就少點,你這樣提供資訊不怎麼全,重新補充一下問題吧,大致就是按照學號分組,求個平均成績,排序一下就可以。sno表示的是平均成績?group by 是分組 order by是排序 select sno f...

sql查詢語句怎麼寫,sql彙總查詢的語句怎麼寫啊

如果表裡只是那幾列資料的話 select a.欄位名,b.欄位名 from 表 as a left join 表 as b on a.substring 欄位名,7,2 b.substring 欄位名,7,2 where a.欄位名 like 201008 and b.欄位名 like 201009...

怎麼用SQL語句查詢student表中年齡最小

排序升序排列即可。例如 select from student order by 年齡 asc 急急急!怎麼用sql語句查詢student表中年齡最小的前三名學生資訊?select top 3 from student order by age asc top 3 是前3個學生的意思,order b...