《数据库原理与应用》课本查询Demo


创建数据库//* 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')

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM