哥伦布

《数据库原理与应用》课本查询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')
复制代码

 

posted @   南柯Dream丶  阅读(299)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示