在长期进行asp.net的项目开发中,部署web项目是一件很常见的事情。然后一件司空见惯的事情,很多程序员甚至是多年开发的程序员去会在部署的时候出现一些不应该犯下的错误:
错误1:在asp.net项目开发完毕后,直接使用Debug调试的时候编译好的dll直接部署。
正确做法:将asp.net 项目使用Release模式编译后dll文件上传,会比debug模式生成的dll文件更加简洁有效。
错误2:在讲web项目部署到服务器上的时候,将web.config文件中的compilation 的debug选项直接设置为true。
正确做法:在部署的时候,将compilation debug设置为false。这样的话,.net程序在运行的时候会比debug设置为true的时候响应速度快很多。
错误3:直接将错误提示不加任何处理的抛给客户。在asp.net中,我们经常使用Try Catch finally 来捕获异常,而web.config中错误提示的默认设置是:<customErrors mode="Off"/>,我们最好是设置为 RemoteOnly。而且最好是将一些对应的错误做成对应错误响应页面。并且将错误页面加上返回到首页的链接,这样的话用户体验会好很多。
通过以下习题的练习,我们能快速熟悉掌握sql语句查询的语法和要领,大家要用心领会其中的要领和步骤,要学会分析步骤。
一、单表查询练习
1、查询<学生信息表>,查询学生"张三"的全部基本信息
Select *
from A_studentinfo
where sname='张三'
2、查询<学生信息表>,查询学生"张三"和”李四”的基本信息
Select *
from A_studentinfo
where sname='张三'
or sname='李四'
3、查询<学生信息表>,查询姓"张"学生的基本信息
Select *
from A_studentinfo
where sname like '张%'
4、查询<学生信息表>,查询姓名中含有"四"字的学生的基本信息
Select *
from A_studentinfo
where sname like '%四%'
5、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。
select *
from A_studentinfo
where sname like '李_强'
6、查询<学生信息表>,查询姓"张"或者姓”李”的学生的基本信息。
Select *
from A_studentinfo
where sname like '张%'
or sname like '李%'
7、查询<学生信息表>,查询姓"张"并且"所属省份"是"北京"的学生信息
Select *
from A_studentinfo
where sname like '张%'
and province='北京'
8、查询<学生信息表>,查询"所属省份"是"北京"、”新疆”、”山东”或者"上海"的学生的信息
Select *
from A_studentinfo
where province in ('北京','上海','新疆','山东')
9、查询<学生信息表>,查询姓"张",但是"所属省份"不是"北京"的学生信息
Select *
from A_studentinfo
where sname like '张%'
and province !='北京'
10、查询<学生信息表>,查询全部学生信息,并按照“性别”排序,性别相同的情况下按照“所属省份”排序,所属省份相同的情况下再按照“班级”排序
select *
from A_studentinfo
order by sex,province,class
11、查询<学生信息表>,查询现有学生都来自于哪些不同的省份
select distinct province as省份
from A_studentinfo
12、查询<学生选修信息表>,查询没有填写成绩的学生的学号、课程号和成绩
Select *
from A_studentcourse
where score is null
13、查询<学生选修信息表>,查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序
Select *
from A_studentcourse
where score is not null
order by score desc
二、聚合函数练习
1、统计<学生信息表>,统计共有多少个学生
Select count (*) as学生数量
from A_studentinfo
2、统计<学生信息表>,统计年龄大于20岁的学生有多少个
Select count(*) as学生数量
from A_studentinfo
where (2008-yearofbirth)>20
3、统计<学生信息表>,统计入学时间在1980年至1982年的学生人数
select count(*) as学生数量
from A_studentinfo
where enrollment between '1998-01-01' and '2003-12-30'
对比以下查询方式,看看有何不同,为什么?
select count(*) as学生数量
from A_studentinfo
where enrollment between '1998' and '2003'
4、统计<学生选修信息表>,统计学号为"S001"的学生的平均成绩
Select avg(score) as平均成绩
from A_studentcourse
where sno='S001'
5、统计<学生选修信息表>,统计学号为"S001"的学生的总成绩
select sum(score) as总成绩
from A_studentcourse
where sno ='S001'
6、统计<学生选修信息表>,查询课程号为”C001”的课程的最高成绩
select max(score) as最高成绩
from A_studentcourse
where cno='C001'
7、统计<学生信息表>,查询所有学生中的最大年龄是多少
select 2008-min(yearofbirth) as最大年龄
from A_studentinfo
三、分组查询练习
1、统计<学生选修信息表>,统计每个课程的选修人数
select cno,count(*) as学生数量
from A_studentcourse
group by cno
2、统计<学生选修信息表>,统计每个同学的总成绩
select sno,sum(score) as总成绩
from A_studentcourse
group by sno
3、统计<学生信息表>,统计每个班级中每种性别的学生人数,并按照班级排序
select class as班级,sex as性别, count(*) as人数
from A_studentinfo
group by class,sex
order by class
4、统计<学生选修信息表>,统计每门课程的平均成绩,并按照成绩降序排序
Select cno,avg(score) as平均成绩
from A_studentcourse
group by cno
order by avg(score) desc
5、统计<学生选修信息表>,显示有两门以上课程不及格的学生的学号
Select sno as不及格学生学号
from A_studentcourse
where score<60
group by sno
having count(*)>1
6、统计<学生信息表>,统计每个班级中的最大年龄是多少
select class as班级, 2008-min(yearofbirth) as最大年龄
from A_studentinfo
group by class
四、嵌套查询练习
1、用子查询实现,查询选修“高等数学”课的全部学生的总成绩
select sum(score) as高等数学总成绩
from A_studentcourse
where cno =
(
select cno
from A_courseinfo
where subject='高等数学'
)
2、用子查询实现,统计<学生选修信息表>,显示学号为"S001"的学生在其各科成绩中,最高分成绩所对应的课程号和成绩
select score,cno
from A_studentcourse
where sno='S001'
and score =
(
select max(score)
from A_studentcourse
where sno ='S001'
)
思考:如果该学号学生有两个课程分数都为最高的100分,查询会有什么结果
3、用子查询实现,查询2班选修"数据库技术"课的所有学生的成绩之和
select sum(score) as数据库技术总成绩
from A_studentcourse
where cno =
(
select cno
from A_courseinfo
where subject='数据库技术')
and sno in
(
select sno
from A_studentinfo
where class='2'
)
4、用子查询实现,查询3班"张三"同学的"测试管理"成绩
select score
from A_studentcourse
where cno=
(
select cno
from A_courseinfo
where subject='测试管理'
)
and sno in
(
select sno
from A_studentinfo
where class='3'
and sname='张三'
)
五、联接查询练习
1、查询"张三"的各科考试成绩,要求显示姓名、课程号和成绩
select sname as姓名,cno as课程号,score as成绩
from A_studentinfo,A_studentcourse
where A_studentinfo.sno=A_studentcourse.sno
and sname='张三'
2、查询"张三"的各科考试成绩中,哪科没有记录考试成绩,要求显示姓名、课程号和成绩
select sname as姓名,cno as课程号,score as成绩
from A_studentinfo,A_studentcourse
where A_studentinfo.sno=A_studentcourse.sno
and sname='张三'
and score is null
3、查询"张三"的各门课程成绩,要求显示姓名、课程名称和成绩
select sname as姓名,subject as课程名称,score as成绩
from A_studentinfo,A_courseinfo,A_studentcourse
where A_studentcourse.sno=A_studentinfo.sno
and A_studentcourse.cno=A_courseinfo.cno
and A_studentinfo.sname='张三'
4、查询3班"张三"的"测试管理"成绩,要求显示姓名、成绩
select sname as姓名,score as成绩
from A_studentcourse,A_courseinfo,A_studentinfo
where A_studentcourse.cno=A_courseinfo.cno
and A_studentcourse.sno=A_studentinfo.sno
and subject='测试管理'
and class='3'
and sname='张三'
5、查询所有2000年以前入学的,各班男生的各科考试平均成绩
select class as班级,avg(score) as男生平均成绩
from A_studentcourse,A_courseinfo,A_studentinfo
where A_studentcourse.cno=A_courseinfo.cno
and