求SQL大神帮忙解答此题!

一、考试环境检查(5分)
在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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-13
动感超人准备出现,小新,你先跟小白玩会儿啊
第2个回答  2015-01-13
只写《四、数据查询》可否?
相似回答