用SQL語句寫出,查詢所有選SQL課程的學生學號,姓名和專業

2021-03-26 12:53:11 字數 5801 閱讀 4988

1樓:匿名使用者

學生表:ta

選課表: tb

select 學號, 姓名,專業

from ta

where 學號 in

(select 學號

from tb

where 課程 = 'sql')

用sql語句查詢選修了3門及以上課程的學生學號,姓名,選修的課程數

寫乙個sql語句,查詢選修了5門課程的學生學號和姓名

2樓:匿名使用者

select 學號,姓名

from student

where 學號=(select 學號

from sc

wehere sum(課程編號)>5

group by 課程編號)

3樓:

select stuno,stuname from student where stuno in(select stuno from sc)

你試一下朋友

查詢所有選sql課程的學生學號,姓名和專業。用sql語句寫出

4樓:匿名使用者

學生表:ta

選課表: tb

select 學號, 姓名,專業

from ta

where 學號 in

(select 學號

from tb

where 課程 = 'sql')

sql資料庫中查詢選修了所有課程的學生的學號和姓名及選修門數

5樓:騰訊電腦管家

select s.sname, s.s*** , s.

sage, s.sdept c.**ame g.

grade from student s , course c ,grade g where s.sno = g.sno and g.

**o = c.**o;

6樓:站在風中望著你

??????????????????????????你好,sql是什麼

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

7樓:匿名使用者

這思路是用了個雙重否定來求解的。因為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))

8樓:風嘯無名

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

1 。 exists 子查詢找到的提交

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

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

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

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

9樓:月光雪松

樓主別著急!

為好理解我們先從這條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的目的(要實現的功能)去理解就好了。

10樓:雨夜的緣分

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表中作為條件的目的

夠詳細吧!!!!

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

11樓:匿名使用者

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

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

12樓:匿名使用者

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

13樓:匿名使用者

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.查詢學生的學號,姓名和年齡 (接著在下面)

14樓:楓啦啦

你表的字段和表的關係都沒給....

只能認為表裡面有所有的字段了...

1 select * from 成績表

2 select 學號,姓名,年齡 from 學生資訊表

3 select 學號,姓名,課程名,成績 from 選課表

4 select * from 學生資訊表 where 姓名 like '張%'

5 select top 4 * from 學生資訊表 where 學號 like '9952%'

6 select count(*) as 男生人數 from 學生資訊表 where 性別='男'

7 select * form 學生資訊表 where 性別='女' and 黨員='是'

8 select 學號 from 成績表 where 成績》80 and 成績<90

9 select 學號,姓名 from 成績表 where 成績<60

ps:這題,如果姓名不在成績表中的話應該是:

select 學號,姓名 from 成績表,學生資訊表 where 成績表.學號=學生資訊表.學號 and 成績表.成績<60

10 select 學號,姓名,性別 from 學生資訊表 order by 學號 desc

這裡我把"學生表"寫成"學生資訊表",是為了看著更清楚

如果要改的話,自己看著改

15樓:匿名使用者

1,select * from 成績表

2,select 學好,姓名,年齡 from 學生表

用sql語句查詢至少選修了學生『張徵』選修的全部課程的學生的姓名和學號,**如圖,結果求圖,要驗證

16樓:匿名使用者

select s.sno,s.sname from(select sno, count(**o) as num from sc where **o in (

select **o from s join sc on s.sno = sc.sno and sname ='張徵'

)group by sno

) t2

join(select count(**o) num from s join sc on s.sno = sc.sno and sname ='張徵' ) t1 on t2.

num = t1.num

join s on s.sno = t2.sno已驗證過

17樓:唐城冬

你也太會玩了吧,讓人橫著看啊

sql 查詢所有學生的學號 姓名 入學成績 選課門數和平均分

你select from 表的時候,from兩個表。後邊再where 表1.id 表2.id 暈了,我說的id也就是主外來鍵關係的列。也就是你說的學號 現在的學生啊 照著書一點點做比打這些字容易多了 sql語句的一道題 三個基本表 學生表 student 課程表 course 學生選課表 sc se...

sql資料庫問題查詢所有學生和教師的姓名允許重

select 姓名,性別 from teacherswhere 教師號 in select 教師號 from students where sno 03160111 例如 select 姓名,性別 from teachers,studentswhere students.學號 03160111 an...

SQL資料庫中查詢選修了所有課程的學生的學號和姓名及選修門數

select s.sname,s.s s.sage,s.sdept c.ame g.grade from student s course c grade g where s.sno g.sno and g.o c.o 你好,sql是什麼 資料庫sql語句中 查詢選修了全部課程的學生的學號和姓名 理...