求SQL大神帮忙解答此题!
在D盘根目录下建立考试文件夹,以学号+姓名作为文件夹名称,并检查当前机器上SQL SERVER是否正常。所有上机操作命令保存在一个文件中,以学号+姓名命名,例如20100110张三.sql(5分)
二、数据库操作(10分)
1、使用命令方式创建XSCJ数据库。(5分)
2、使用命令将XSCJ数据库重新命名为学生成绩。(5分)
三、表操作(23分)
1、在学生成绩数据库中创建学生表,包括学号、姓名、性别、出生日期,家庭地址字段,定义学号为主键,性别默认为男,所有字段数据类型可自行合理设计。(8分)
2、在学生成绩数据库中创建课程表,包括课程代码,课程名称,定义课程代码为主键,课程名称非空,字段数据类型可自行合理设计。(5分)
3、在学生成绩数据库中创建成绩表,包括学号、课程代码、分数,其中以学号、课程代码组合建立主键,通过学号与学生表建立外键约束,通过课程代码与课程表建立外键约束,字段数据类型可自行合理设计。(10分)
四、数据查询(42分)
1、使用SQL命令将下列数据添加到学生表中。(3分)
学号
姓名
出生日期
2010001
张三
1988-02-02
2、使用SQL命令将学号为2010001的学生的出生日期修改为1987-3-1。(3分)
3、使用SQL命令查看学生表中所有男生的学号、姓名、性别和年龄。(6分)
4、使用SQL命令查看年龄超过平均年龄的学生信息。(8分)
5、使用SQL命令统计每门课程的最高分、最低分和平均分。(8分)
6、使用SQL命令统计每个学生不及格课程门数。(8分)
7、使用SQL命令列出学生表中年龄最大的前10名来自重庆市的学生的学号、姓名和年龄。(6分)
四、视图的使用(10分)
1、创建一个名为V_XS的视图,要求视图中包括所有学生的学号、姓名以及每门课程的考试成绩。
五、存储过程的使用(10分)
1、创建一个名为XS_TJ的存储过程,要求通过传入学生学号查询当前这个学生的基本信息。 展开
-----------------------------------
create database XSCJ
use XSCJ
-----------------------------------
exec sp_renamedb 'XSCJ', '学生成绩'
-----------------------------------
create table 学生表
(学号 varchar(10) primary key,
姓名 varchar(10) ,
性别 varchar(2)default '男',
出生日期 date,
家庭地址 varchar(50)
)
-----------------------------------
create table 课程表
(课程代码 varchar(10) primary key,
课程名称 varchar(50) NOT NULL,
)
-----------------------------------
create table 成绩表
(学号 varchar(10) not null,
课程代码 varchar(10) not null,
分数 int,
primary key(学号,课程代码),
foreign key(学号) references 学生表(学号),
foreign key(课程代码) references 课程表(课程代码)
)
-------------------------------------------
insert into 学生表(学号,姓名,出生日期) values('2010001','张三','1988-02-02')
------------------------------------------
update 学生表 set 出生日期='1987-3-1' where 学号='2010001'
--------------------------------------------
select 学号,姓名,性别,year(getdate())-year(出生日期) as 年龄 from 学生表
----------------------------------------
select * from 学生表 where DATEDIFF(yyyy,出生日期,getdate())>DATEDIFF(yyyy,出生日期,getdate())/(select COUNT(*) from 学生表)
-----------------------------------------
select a.课程代码,a.课程名称,b.maxscore,b.minscore,b.avgscore from 课程表 a,(select 课程代码,MAX(分数) as maxscore,min(分数) as minscore,avg(分数)as avgscore from 成绩表 group by 课程代码)b where a.课程代码=b.课程代码
------------------------------------------
select a.学号,a.姓名,c.failedNo from 学生表 a,(select 学号,COUNT(*) as failedNo from 成绩表 where 分数<60 group by 学号)c where a.学号=c.学号
------------------------------------------
select top 10 学号,姓名,DATEDIFF(yyyy,出生日期,getdate())as 年龄 from 学生表 where 家庭地址='重庆市' order by 年龄 desc
------------------------------------------
create view view_score as
select a.学号,a.姓名,c.课程代码,c.分数 as 成绩 from 学生表 a inner join 成绩表 c on a.学号=c.学号
------------------------------------------
create procedure XS_TJ
@getnumb varchar(10)
as
begin
select * from 学生表 A where A.学号=@getnumb
end