創建數據庫/表 /* create database studentCourse */ use studentCourse go create table Student( Sno char(6) Primary Key, Sname nvarchar(20)not null, Ssex nchar(1) not null default '男' check(Ssex in('男','女')), Sbirthday smalldatetime, Sdept nvarchar(20), Memo text ) use studentCourse go CREATE TABLE Course( Cno CHAR(3) PRIMARY KEY, Cname NVARCHAR(20) NOT NULL, PerCno CHAR(3), Credit TINYINT, Semester TINYINT ) use studentCourse go CREATE TABLE SC( Sno CHAR(7), Cno NCHAR(20) , Grade SMALLINT CHECK(Grade between 0 and 100), PRIMARY KEY (Sno,Cno), ) 或 use testStudent go CREATE TABLE SC( Sno CHAR(6), Cno CHAR(3) , Grade SMALLINT CHECK(Grade between 0 and 100), PRIMARY KEY (Sno,Cno), FOREIGN KEY(Sno) REFERENCES Student(Sno), FOREIGN KEY(Cno) REFERENCES Course(Cno), )
use studentCourse --4.11-4.31
--查詢全體學生的學號和姓名 --select Sno,Sname --from Student --查詢全體學生的全部信息 --select *
--from Student --查詢全體學生的歲數 --select Sname,YEAR(GETDATE())-YEAR(Sbirthday) --from Student --查詢全體學生的姓名 年齡 字符串 今年是 今年年份 --select Sname 姓名,YEAR(GETDATE())-YEAR(Sbirthday) 年齡, '今年是' 今年是,YEAR(Sbirthday) 年份 --from Student --查詢全體計算機學生的姓名 --select Sname --from Student --where Sdept = '計算機系'
--查詢考試成績大雨90的學生的學號 課程號 成績 --select Sno,Cno --from SC --where Grade>90
--查詢學分在2-3之間的課程的課程名 學分 開課學期 --select Cname, Credit,Semester --from Course --where Credit between 2 and 3
--查詢學分不在2-3之間的課程的課程名 學分 開課學期 --select Cname, Credit,Semester --from Course --where Credit not between 2 and 3
--查詢出生在1997年學生的全部信息 --select *
--from Student --where Sbirthday between '1997-01-01' and '1997-12-31'
--查詢 計算機系 機電系 學生的學號 姓名 和所在系 --use studentCourse --select Sno,Sname,Sdept --from Student --where Sdept in ('計算機系','機電系') --查詢 不在 計算機系 機電系 學生的學號 姓名 和所在系 --use studentCourse --select Sno,Sname,Sdept --from Student --where Sdept not in ('計算機系','機電系') --查詢 姓 李 的學生的學號 姓名和所在系 --select Sno,Sname,Sdept --from Student --where Sname like '李%'
--查詢 姓名鍾第二個字是 沖 的學生的學號 姓名 所在系 --select Sno,Sname,Sdept --from Student --where Sname like '_沖%'
--查詢 還沒有考試的學生的學號 相應的課程號 成績 --select Sno,Cno --from SC --where Grade is null
--查詢 有備注學生的學號 姓名 備注 --use studentCourse --select Sno,Sname,Memo --from Student --where Memo is not null
--查詢 機電系有備注學生的學號 姓名所在系 備注 --select Sno,Sname,Sdept,Memo --from Student --where Memo is not null and Sdept = '機電系'
--查詢 機電系 計算機系 1997年出生 的學號 姓名 所在系 出生日期 --select Sno,Sname,Sdept,Sbirthday --from Student --where (Sdept = '計算機系' or Sdept = '機電系') and Sbirthday between '1997-01-01' and '1997-12-31') --查詢 有考試掛科的學生的學號 --select Sno --from SC --where Grade<60
--將 C01 號 的課程成績按升序排列 --select Cno, Grade --from SC --where Cno = 'C01' order by Grade --將 060101 號 學生 的成績按降序排列 --select Cno, Grade --from SC --where Sno = '060101' order by Grade desc --4.32-4.68
--32.統計學生總人數 --select COUNT(*) 學生總人數 --from Student --33.統計學生060101的總成績 --select SUM(grade)總成績 --from SC --where sno = '060101'
--34.統計學生060101的平均成績 --select AVG(grade)平均成績 --from SC --where sno = '060101'
--35.統計課程C01的最高分數和最低分數 --select MAX(grade)最高分,MIN(grade)最低分 --from SC --where cno = 'C01'
--36.統計每門課程的選課人數 列出課程號和選課人數 --select cno 課程號,COUNT(sno)選課人數 --from SC --group by cno --37.統計每個學生的選課門數 列出學號 選課門熟 平均成績 --select sno,COUNT(cno)選課門數,AVG(grade)平均成績 --from SC --group by sno --38.統計每個系的男生人數和女生人數 結果按系名的升序排序 --select Sdept,Ssex,COUNT(*)人數 --from Student --group by Sdept,Ssex --order by Sdept asc --39.統計每個系的男生人數 --select Sdept,COUNT(*)男生人數 --from Student --where Ssex='男'
--group by Sdept --40.查詢選課門數超過3門的學生的學號和選課門數 --select Sno,COUNT(*)選課門數 --from SC --group by sno --having COUNT(*)>3
--41.查詢 計算機系 機電系 每個系的學生人數 兩種寫法 --select Sdept,COUNT(*)學生人數 --from Student --group by Sdept --having Sdept in('計算機系','機電系') --42.查詢每個學生及其選課的詳細 --select *
--from Student inner join SC on Student.Sno = SC.sno --43.查詢每個學生及其選課的詳細 要求去掉重復的列 --select S.Sno,Sname,Ssex,Sbirthday,Sdept,Memo,Cno,Grade --from Student S inner join SC ON S.sno=SC.Sno --44.查詢 計算機系選修了 數據庫原理 課程的學生成績單,成績單包含姓名 課程名稱 成績信息 --select Sname ,Cname ,Grade --from Student S inner join SC on S.Sno=SC.Sno join Course C on SC.cno=C.Cno --where Sdept='計算機系' and Cname='數據庫原理'
--45. --select Sname,Sdept from Student S inner join SC on S.Sno=SC.Sno join Course C on SC.Cno=C.Cno --where Cname='數據庫原理'
--46
--select Sdept, AVG(Grade)系平均成績 from Student S inner join SC on S.Sno=SC.Sno join Course C on SC.Cno=C.Cno --group by Sdept --47
--select Cno ,COUNT(*)選課門數,AVG(Grade)平均分,MAX(Grade) 最高分,MIN(Grade)最低分 --from Student S join SC on S.Sno=SC.Sno --where Sdept='計算機系' group by Cno --48
--select C1.Cname 課程名, C2.Cname 先修課程名 --from Course C1 join Course C2 on C1.PerCno=C2.Cno -- where C1.Cname='數據庫原理'
--49
--select S2.Sname, S1.Sdept --from Student S1 join Student S2 on S1.Sdept=S2.Sdept --where S1.Sname='鍾文輝' and S2.Sname!='鍾文輝'
--50
--select S.Sno,Sname,Sdept,SC.Cno --from Student S left join SC on S.Sno=SC.Sno --where Sdept='計算機系' On S1.Sdept=S2.Sdept --51
--select Cname,Sno --from Course C left join SC on C.Cno=SC.Cno --where SC.Cno is null
--52
--select Sc.Sno 學號 ,COUNT(SC.Cno) 選課門數 --from Student S left join Sc on S.Sno=SC.Sno --where Sdept='計算機系'
--group by Sc.Sno --53
--select SC.Sno 學號 ,COUNT(SC.Cno) 選課門數 --from Student S left join SC on S.Sno=SC.Sno --where Sdept='機電系'
--group by SC.Sno --having COUNT(SC.Cno)<3
--order by COUNT(SC.Cno)DESC --54
--select top 3 Sno,grade --from SC --where Cno='C04'
--order by Grade DESC --55
--select top 4 Cname,Credit,Semester --from Course --order by Credit DESC --56
--select top 2 with ties Cno,COUNT(*)選課人數 --from Sc --group by Cno order by count(Cno) DESC --57
--select Sno 學號,Sname 姓名,Ssex 性別, -- case Sdept -- when '計算機系' then 'CS'
-- when '機電系' then 'JD'
-- when '信息管理系' then 'IM'
-- end 所在系 --from Student --58
--select Sno,Grade, -- case
-- when Grade >=90 then '優'
-- when Grade >=80 and Grade<90 then '良'
-- when Grade >=70 and Grade<80 then '中'
-- when Grade >=60 and Grade<70 then '及格'
-- when Grade <60 then '不及格'
--end 等級 --from SC --where Cno='C04'
--59
--select S.Sno 學號,Count(Cno)選課門數, --case
-- when count(Cno)>3 then '多'
-- when count(Cno)>=2 and count(Cno)<=3 then '一般'
-- when count(Cno)=1 then '少'
-- when count(Cno)=0 then '未選'
--end 選課情況 --from Student S left join SC on S.Sno=SC.Sno --where Sdept='計算機系'
--group by S.Sno --60
--select Sno,Sname,Ssex,YEAR(getdate())-YEAR(Sbirthday) Sage into Student_CS --from Student --where Sdept='計算機系'
--select * from Student_CS --61
--select Sno ,Sname,Ssex,Sdept --from Student --where Sdept in(select Sdept from Student where Sname='鍾文輝') --62
--select Sno ,Grade --from SC where Cno='C04' and Grade >(select avg (grade) from SC where Cno='C04') --63
--select Sno ,Grade --from SC --where Cno='C04' and Grade >ALL(select Grade from SC where Cno='C03') --64
--select Sname --from Student --where exists(select *from SC where SC.Sno=Student.Sno and Cno='C04') --65
--select Sname from Student --where not exists((select *from Course where Semester=3 and not exists(select *from SC where SC.Sno=Student.Sno and Course.Cno=SC.Cno)) --66
--(select Sno,Sname ,Ssex,Sdept --from Student --where Sdept ='計算機系')union(select Sno,Sname ,Ssex,Sdept from Student where Sdept ='機電系') --67
--(select Sno from SC where Cno='C03')intersect(select Sno from SC where Cno='C04') --68
--(select Sno from SC where Cno='C01')except(select Sno from SC where Cno='C02')