代码
使用大师
去
------------创建数据库------------
如果存在(从 sysdatabases 中选择 *,其中 name='stuDB')
删除数据库 StuDB
创建数据库 StuDB
在小学
(
name='stuDB_data',
文件名='D:stuDB_data.mdf',
大小=3mb,
最大大小=10mb,
文件增长=1mb
)
登录
(
name='stuDB_log',
文件名='D:stuDB_data.ldf',
大小=1mb,
文件增长=1mb
)
------------创建数据库表------------
使用 StuDB
去
如果存在(从 sysobjects 中选择 *,其中 name='stuInfo')
删除表stuInfo
创建表stuInfo
(
StuId int Identity(1,1) 主键不为空,
StuName varchar(20) 不为空,
StuNo varchar(20) 不为空,
StuSex char(6) 不为空,
StuAge int 不为空,
Stu地址文本 null
)
去
如果存在(从 sysobjects 中选择 *,其中 name='stuMarks')
删除表 StuMarks
创建表 StuMarks
(
marksId int Identity(1,1) 主键不为空,
ExamNo varchar(50) not null, --考号
StuNo char(6) not null,--学号
writeExam int null,--笔试成绩
LabExam int null--机试成绩
)
去
--向学员信息表stuInfo插入数据--
INSERT INTO StuInfo(stuName,stuNo,stuSex,stuAge,stuAddress)VALUES('张秋丽','s25301','男',18,'北京海淀')
INSERT INTO StuInfo(stuName,stuNo,stuSex,stuAge,stuAddress) VALUES('李斯文','s25303','女',22,'河南洛阳')
INSERT INTO StuInfo(stuName,stuNo,stuSex,stuAge) VALUES('李文才','s25302','男',31)
INSERT INTO StuInfo(stuName,stuNo,stuSex,stuAge,stuAddress) VALUES('欧阳俊雄','s25304','男',28,'威武哈')
--向学员成绩表stuMarks插入数据--
INSERT INTO StuMarks(ExamNo,stuNo,writingExam,LabExam) VALUES('E2005070001','s25301',80,58)
INSERT INTO StuMarks(ExamNo,stuNo,writingExam) VALUES('E2005070002','s25302',50)
INSERT INTO StuMarks(ExamNo,stuNo,writingExam,LabExam) VALUES('E2005070003','s25303',97,82)
--查看数据--
从stuInfo中选择*
从 StuMarks 中选择 *
/*======查询数据练习=========*/
--1.查询两表的数据--
从stuInfo中选择*
从 StuMarks 中选择 *
--2.查询男学员名单--
从stuInfo中选择*,其中stuSex='男'
--3.查询笔试成绩优秀的学员情况(成绩在75~100之间)--
从 Stumarks 中选择*,其中书面考试在 75 到 100 之间
--4.查询参加本次考试的学员成绩,包括学员,笔试成绩,机试成绩--
从stuInfo中选择i.stuName,m.writingExam,m.LabExam作为i内连接stuMarks作为m on m.stuNo = i.stuNo
--5.统计笔试考试平均分和机试考试平均分--
从 StuMarks 中选择 avg(writingExam) 作为笔试平均成绩,avg(LabExam) 作为机试平均成绩
从 StuMarks 中选择 avg(writingExam) 笔试平均成绩,avg(LabExam) 机试平均成绩
--6.统计参加本次考试的学员人数
从 Stumarks 中选择 count(stuno)
--7.查询没有通过考试的人数(笔试或机试小于60分)--
从 Stumarks 中选择 count(stuno),其中 writeExam <= 60 或 labexam <= 60
select * from Stumarks where writeExam is null or labexam is null --查询所有参加考试的信息
--8.查询成绩,显示学号,笔试成绩,机试成绩,平均分--
select Stuno 作为学号,writingExam 笔试,labexam 机试,(writingExam+labexam)/2 平均成绩 from Stumarks
--9.排名次(按平均分从高到低排序),显示学号、平均分--
select Stuno 作为学号,(writingExam+labexam)/2 平均成绩 from Stumarks order by (writingExam+labexam)/2 desc
选择 Stuno 作为学号,(writingExam+labexam)/2 平均成绩 from Stumarks order by 平均成绩 desc
--10.排名次(按平均分从高到低排序),显示姓名,笔试成绩,机试成绩,平均分--
select i.stuno as 学号,writingExam 笔试,labexam 机试,(writingExam+labexam)/2 平均成绩
从 Stumarks as m 内部加入 Stuinfo as i on m.stuno = i.stuno order by 平均成绩 desc
--根据以上SQL语句总结:凡是两个表有同名的列名就需要用别名却分开来,如果没用别名可以直接查询列明
--11.根据平均分,显示前两项信息,包括姓名、笔试成绩、机试成绩、平均分--
选择前 2 名 i.stuno 为学号,writingExam 笔试,labexam 机试,(writingExam+labexam)/2 平均成绩
从 Stumarks as m 内部加入 Stuinfo as i on m.stuno = i.stuno order by 平均成绩 desc
/*========数据练习======修改==*/
--都提5分--
--100分封顶(加分后超过100分的,按100分计算)--
更新 Stumarks 设置 writeExam = WriteExam + 5
更新 Stumarks 设置 writeExam = 100 其中 writeExam>100