1樓:匿名使用者
1)select a.sname,c.**ame from student a,sc b,course c
where a.sno=b.sno and b.**o=c.**o
2)沒看到你的意思啊,查詢課程名是『資料庫』的課程?
2樓:愛未動心已死
學生表和課程表是分開的,多表查詢你要把你的表發出來
sql查詢全部學生都選修的課程的課程號和課程名問題
sql查詢全部學生都選修的課程的課程號和課程名問題
sql語言1.查詢每個學生及其選修課程的情況2、查詢所有年齡小於18週歲的女生的學號和姓名
3樓:匿名使用者
(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不行了在找我,可以密我**。
4樓:匿名使用者
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為女,也可以設定成字元型,但不如數字型使用方便
5樓:真愛的胸懷
select sno,sname,from student where (sage<18 and s***='女')
以上是第二個語句的答案 ,第一個語句有歧義
6樓:匿名使用者
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語句查詢每個學生選修的課程名及其成績?
7樓:消逝的風
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;
8樓:趙星宇
查詢選修了全部課程的學生姓名
: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查詢統計每門課程的選修人數顯示課程編號學生人數。
9樓:無怨深淵
sql查詢語句:select 課程編號,count(*) 學生人數 from 課程 group by 選修人數;
ps:sql用於統計
專和分組的函式是:
統計函式:屬
count(*)
。
分組函式: group by 分組表示式。
sql:
結構化查詢語言,是一種特殊目的的程式語言,是一種資料庫查詢和程式設計語言,用於存取資料以及查詢、更新和管理關聯式資料庫系統;同時也是資料庫指令碼檔案的副檔名。
group by :
從字面意義上理解就是「根據(by)一定的規則進行分組(group)」。它的作用是通過一定的規則將一個資料集劃分成若干個小的區域,然後針對若干個小區域進行資料處理。
10樓:楓葉vs童話
select
c.`dao**ame`,
count(distinct s.`sno`) as '選修內人數容'
from
score s
right join course c
on s.`**o` = c.`**o`
group by c.`**ame`
11樓:匿名使用者
select 成績表.課程編號,count(成績表.課程編號) from 成績表 group by 成績表.課程編號
12樓:匿名使用者
select 課程資訊
表.課程名稱,count(distinct 成績表.學號) from 成績表
join 課程專資訊屬表 on 成績表.課程編號=課程資訊表.課程編group by 課程資訊表.課程名稱
13樓:阿彭
select **o,count(sno)
from sc
group by **o;
14樓:匿名使用者
這個還要問下學校方面
用sql語句查詢每個學生選修的課程名及其成績?
15樓:消逝的風
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語句中 查詢選修了全部課程的學生的學號和姓名 理解
16樓:匿名使用者
這思路是用了個雙重否定來求解的。因為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))
17樓:風嘯無名
沒有資料庫難以具體說明,總的來說,就是一個多表查詢包括學生基本資訊表、課程資訊表、成績表等,學號為主鍵,查詢姓名和課程、分數等資訊,總分用sum算。
1 。 exists 子查詢找到的提交
not exists 子查詢中 找不到的提交說明:不要去翻譯為存在和不存在,把腦袋搞暈。
2 。 建立程式迴圈的概念,這是一個動態的查詢過程。如 for迴圈 。
3 。 exists執行的流程exists首先執行外層查詢,再執行記憶體查詢,與in相反。 流程為首先取出外層中的第一元組, 再執行內層查詢,將外層表的第一元組代入,若內層查詢為真,即有結果時。
返回外層表中的第一元 組,接著取出第二元組,執行相同的演算法。一直到掃描完外層整表 。
18樓:月光雪松
樓主彆著急!
為好理解我們先從這條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的目的(要實現的功能)去理解就好了。
19樓:雨夜的緣分
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表中作為條件的目的
夠詳細吧!!!!
查詢至少選修了學生2019選修的全部課程的學生號碼
select 學生號碼 from 學生 where not exists select from 課程 where not exists select from 學習 where 學號 版 學生.學號 and 課程號權 課程.課程號 and 日期 2011 不存來在這樣的課程 源y,學bai生200...
查詢同時只選修了1號和2號課程的學生的學號
select distinct t.學號 from select distinct 表名.學號 from表名 表名 t2 where表名.課程號 1 and t2.課程號 2 and 表名.學號 t2.學號 t where t.學號 not in select distinct 表名.學號 from...
資料庫sql查詢同時選修了選修課1和選修課2的學生學號
你好像寫來錯了吧自,我感覺應該是 select sno from sc where o 1 and son in select sno from sc where o 2 或者where o 1 intersert select sno from sc where o 2 intersect對兩個查...