对学生数据库进行查询等操作

对学生数据库进行查询等操作

学生数据库中有3张数据表,关系模型如下:

1、学生信息

字段名 数据类型 备注
学号 char(10) primary key
姓名 nvarchar(10)
性别 nchar(2)
出生日期 date
专业 nvarchar(10)

2、课程信息

字段名 数据类型 备注
课程序号 char(10) primary key
课程名称 nvarchar(20)
开课学期 char(1)
学分 smallint

3、成绩信息

字段名 数据类型 备注
学号 char(10) primary key, foreign key
课程序号 char(10) primary key, foreign key
成绩 tinyint

查询“计算机科学与技术”专业的学生人数,显示字段名为学生人数

select count(*) 学生人数 from 学生信息
where 专业 = "计算机科学与技术"
group by 专业

查询与“刘晨”在同一个专业学习的学生,显示学号、姓名。

注意:结果中不包括刘晨

select 学号,姓名 from 学生信息
where 专业 in (select 专业 from 学生信息 where 姓名 = "刘晨") and 姓名!="刘晨"

查询选修了课程名为“操作系统”的学生,显示学号,姓名

select a.学号,a.姓名 from 学生信息 a
inner join 成绩信息 b on a.学号 = b.学号
inner join 课程信息 c on b.课程序号 = c.课程序号
where c.课程名称 = "操作系统"

建立一个计算机科学与技术专业,且年龄不大于19岁的学生的视图,字段包括学生学号,姓名,出生日期,视图名字为 学生年龄视图

提示1 :如何利用出生日期结合系统函数计算年龄

​ DATEDIFF(datepart,startdate,enddate)

​ 返回两个指定日期的日期和时间边界数(差值),datepart 规定了用日期的哪一部分(year、month、day、week、hour等)来计算差额。

提示2 :获得当前时间GETDATE()

create view 学生年龄视图 as
select 学号,姓名,出生日期 from 学生信息
where DATEDIFF(yy,出生日期,GETDATE())<=19 and 专业 = "计算机科学与技术"

通过刚建立的 学生年龄视图,查询计算机科学与技术专业年龄不大于19岁的学生学号,姓名

select 学号,姓名 from 学生年龄视图

建立一个既选修了课程1又选修了课程2的学生视图,名为 学生课程视图 ,包含字段学号、姓名、专业

create view 学生课程视图 as
select a.学号,a.姓名,a.专业 from 学生信息 a
inner join 成绩信息 b on a.学号 = b.学号
where b.课程序号 = "1" 
union
select a.学号,a.姓名,a.专业 from 学生信息 a
inner join 成绩信息 b on a.学号 = b.学号
where b.课程序号 = "2"

通过刚建立的学生课程视图,查询学生学号,姓名

select 学号,姓名 from 学生课程视图
原文地址:https://www.cnblogs.com/lightice/p/12727901.html