1. sql關系代數,求至少選修了兩門以上課的學生的學號,用關系代數寫出來。
代碼入戲:
use hngy
go
/*查詢至少選修兩門課程的學生學號*/
select StuNO,count(CNO) 選修門數 from SC
group by StuNO
having count(CNO)>=2
go
(1)sql篩選選兩門課擴展閱讀
關系代數的運算有集合運算(集合<表>與集合<表>之間的運算)和關系運算(集合<表>內部的運算)集合運算:並運算: R U S 差運算: R - S 交運算: R ∩ B 笛卡兒積: R x S (組合運算)。
並,交,差(是對各集合元組的重新組合;要求:參加集合操作的各結果表的列數必須相同,對應項的數據類型也必須相同)
關系運算:
選擇 , σF(R)={t|t∈R∧F(t)=True}σF(R)={t|t∈R∧F(t)=True} ------水平分割表
投影 , πA(R)={t[A]|t∈R}πA(R)={t[A]|t∈R} -------垂直分割表
連接 【/* 這里是比較運算符 */,為大於,小於的連接叫比較連接,為等於的連接叫等值連接,自然連接 ⋈ /*它是等值連接的特殊情況,結果集中公共的屬性只保留一個------去除重復列。
兩表關聯,外鍵主建出現在同一集合里(外鍵和主鍵就是重復的列,要去除一列),2*/自然, = σ XθY(R×S),擴展的還有外連接 】
2. 三張表查詢出選了兩門課以上的學生,學生表課程表選課表sql怎麼寫
學生表:student(學號:sno、姓名:sname、性別:sgender、年齡:sage)
課程表:couse (課程編號:cno、課程名稱:cname)
選課表:sc(學號:sno、課程編號:cno、成績:marks)
SELECT s.sno ,
s.sname ,
c.cname
FROM student s
INNER JOIN sc t1 ON t1.sno = s.sno
INNER JOIN couse c ON sc.cno = c.cno
WHERE s.sno IN ( SELECT t.sno
FROM sc t
GROUP BY t.sno
HAVING COUNT(t.cno) = 2 )
3. SQL如何查詢同時選了「A」和「B」兩門課的學生
select
a.學號
from
選課表a
innerjoin選課表bona.學號=b.學號
where
a.課程名稱='a'
andb.課程名稱='b'
4. sql如何查詢選課兩門以上而且各門課程均及格的學生學號及其所選課程的門數
一樓的根本沒看清楚,二樓的過分了
我覺得,你這個寫的基本正確,但是既然是「各門課程均及格」,那麼應該用having min(成績)>=60,而你寫的「WHERE 成績>=60」,這個成績不明確…………我的感覺。
5. SQL查詢既選修了『現代資料庫技術』,又選修『網路操作系統』這兩門課程的學生的詳細信息。
方法一:採用嵌套查詢,兩層大嵌套,總體思路是在學號是選修了現代資料庫技術的學生中找選修了網路操作系統這門課的學生
select * from student
where no in (select sno from sc
where cno=(select cno from course
where cname='網路操作系統'))and
no in (select no from student
where no in (select sno from sc
where cno=(select cno from course
where cname='現代資料庫技術')))
方法二,用連接查詢應該簡單點,我就不寫了。嘿嘿
6. sql 提問 查詢選課表中同一個學生選擇多門課的學生信息,選課表有學號,姓名,課目,成績等欄位.沒有主健.
--查詢選課表中同一個學生選擇多門課的學生信息
select * from student
in
(select student_id from select_course group by student_id having count(course_id)>1)
/* 註:我估計你有三張表,學生信息表(student),科目表(course),選修表(select_course),
查詢時先查選修表,將選擇科目大於一門的同學id取出,然後再在學生信息表中匹配這些信息,將這些選修科目大於一門的學生信息輸入。*/
祝你成功 ^^)
7. SQL語句:查詢擔任兩門課程以上授課任務的教師,顯示教師的工號和授課數量
給出表的表結構
給你個大概吧,若表tableName有課程ID,教師ID,sql如下
select * from (
select count(課程ID) num --授課數
,教師ID from tableName group by 教師ID
) t
where t.num>=2
8. 如何用sql實現列出至少選修兩門課程的學生學號
select sno,count(cno) from sc
group by sno
having count(cno) >=2
9. access中的SQL如何寫找出一個表中同時選修了課程編號為1和2兩門課的學生的姓名
Select 姓名 from Table where 課程編號=1 and 課程編號=2
10. SQL查詢選修了兩門以上(包括兩門)課程的學生信息
1:select sno(學生的學號) from sc(學生選課表)
group by sno having count(*)>1
2:select s.sno,s.name from student s
where s.sno in(select sno from score sc
group by sc.cno having sum(sc.sno)>2 )
3:應為三張表;學生表A 課程表B 選修表C(cid aid bid)--沒有選修任何課程的學生的學號