【网学网提醒】:网学会员编辑为广大网友搜集整理了:SQL基础讲义简单查询1、查询全部学生的绩等信息,祝愿广大网友取得需要的信息,参考学习。
SQL基础讲义
简单查询
1、查询全部学生的信息
select*fromxs
2、查询学生的和年龄
selectxm,year(date())-year(csrq)asagefromxs
3、查询学生的平均年龄
selectavg(year(date())-year(csrq))as平均年龄fromxs
4、查询学生的人数
selectcount(*)fromxs
5、查询选修了课程的学生
selectdistinctxhfromcj
6、查询选修了课程的学生人数
selectcount(distinctxh)fromcj
7、查询有多少个不同的姓氏
selectdistinctleft(xm,2)as姓氏fromxs
8、查询所有成绩的平均分
selectavg(cj)as平均分fromcj
9、查询02课程的平均分
selectavg(cj)fromcjwherekcbh='02'
10、查询成绩不及格的
selectdistinctxhfromcjwherecj<60
11、查询成绩不及格的人数
selectcount(distinctxh)fromcjwherecj<60
12、查询出生日期在1993.1.1之前的同学
select*fromxswherecsrq<{^1993.1.1}
13、查询成绩在70-80之间的、课程号和成绩
selectxh,kcbh,cjfromcjwherecjbetween70and80
14、查询所有姓"李"的同学
select*fromxswherexmlike"郝%"
15、查询中包含"毛"字的同学
select*fromxswherexmlike"%毛%"
16、查询中第二个字是"思"的同学
select*fromxswherexmlike"_思%"
17、查询成绩为60、70、80和90分的、课程号和成绩
selectxh,kcbh,cjfromcjwherecjin(60,70,80,90)
18、查询籍贯不是湖南或四川的同学
select*fromxswherejgnotin("湖南","四川")
19、查询成绩为空的和课程号
selectxh,kcbhfromcjwherecjisnull
嵌套查询
1、查询选修了"软件工程"的同学的
selectxhfromcjwherexhin(selectxhfromkcwherekcmc='软件工程')
2、查询课程表中没有被任何学生选修的课程号和课程名
selectkcbh,kcmcfromkcwherekcbhnotin(selectdistinctkcbhfromcj)
3、查询没有选修任何课程的学生和
selectxh,xmfromxswherexhnotin(selectdistinctxhfromcj)
4、查询成绩为最高分的和成绩
selectxh,cjfromcjwherecj=(selectmax(cj)fromcj)
5、查询成绩大于平均分的和成绩
selectxh,cjfromcjwherecj>(selectavg(cj)fromcj)
6、查询成绩大于02课程平均分的和成绩
selectxh,cjfromcjwherecj>(selectavg(cj)fromcjwherekcbh='02')
7、查询02课程中成绩大于平均分的和成绩
selectxh,cjfromcjwherekcbh='02'andcj>(selectavg(cj)fromcj)
8、查询02课程中成绩大于02课程平均分的和成绩
selectxh,cjfromcjwherekcbh='02'andcj>(selectavg(cj)fromcjwherekcbh='02')
9、查询02课程中成绩大于04课程平均分的和成绩
selectxh,cjfromcjwherekcbh='02'andcj>(selectavg(cj)fromcjwherekcbh='04')
10、查询成绩小于所选修课程平均分的和成绩(相关子查询,了解即可)
selectxh,cjfromcjawhere
cj<(selectavg(cj)fromcjbwherea.kcbh=b.kcbh)
11、查询成绩等于所选修课程最高分的和成绩(相关子查询,了解即可)
selectxh,cjfromcjawherecj=(selectmax(cj)fromcjbwherea.kcbh=b.kcbh)
多表联结查询
1、查询所有学生的成绩单,列出、、课程号、课程名和成绩
selecta.xh,xm,b.kcbh,kcmc,cjfromxsa,cjb,kccwherea.xh=b.xhandb.kcbh=c.kcbh
2、查询选修了软件工程的同学的和成绩
selectxh,cjfromcja,kcbwherea.kcbh=b.kcbhandkcmc=”软件工程”
selectxh,cjfromcjajoinkcbona.kcbh=b.kcbhwherekcmc=”软件工程”
3、查询姓”李”同学的、、课程号和成绩,先按性别排序,再按成绩降序排序,并将结果存入表new中
selecta.xh,xm,xb,kcbh,cjfromxsa,cjbwherea.xh=b.xhandxmlike“李%”orderbyxb,cjdescintotablenew
selecta.xh,xm,xb,kcbh,cjfromxsajoincjbona.xh=b.xhwherexmlike“李%”orderbyxb,cjdescintotablenew
4、查询学生表中同一天出生的同学
selectdistincta.xm,a.xh,a.xb,a.csrqfromxsa,xsbwherea.csrq=b.csrqanda.xh<>b.xhorderbya.csrq,a.xm
selectdistincta.xm,a.xh,a.xb,a.csrqfromxsajoinxsbona.csrq=b.csrqwherea.xh<>b.xhorderbya.csrq,a.xm
分组统计
1、分别统计男女生人数
selectxb,count(*)as人数fromxsgroupbyxb
2、分别统计每个人的平均分
selectxh,avg(cj)as平均分fromcjgroupbyxh
3、分别统计每门课的平均分
selectkcbh,avg(cj)as平均分fromcjgroupbykcbh
4、统计每门课有多少人选修
selectkcbh,count(*)as选修人数fromcjgroupbykcbh
5、统计每个人选修了多少课
selectxh,count(*)as选修课程数fromcjgroupbyxh
6、查询成绩平均分大于70的
selectxh,avg(cj)as平均分fromcjgroupbyxhhavingavg(cj)>70
7、查询成绩平均分大于70的课程号
selectkcbh,avg(cj)as平均分fromcjgroupbykcbhhavingavg(cj)>70
8、查询选修了4门课及以上的
selectxh,count(*)as选修课程数fromcjgroupbyxhhavingcount(*)>=4
9、查询选修了4门课及以上的和
selectxh,xmfromxswherexhin(selectxhfromcjgroupbyxhhavingcount(*)>=4)
10、查询有40个人及以上选修的课程号
selectkcbh,count(*)as选修人数fromcjgroupbykcbhhavingcount(*)>=40
11、统计每门课的不及格人数
selectkcbh,count(*)as不及格人数fromcjwherecj<60groupbykcbh
12、统计每个人的不及格课程数
selectxh,count(*)as不及格课程数fromcjwherecj<60groupbyxh
13、查询不及格人数在3个人及以上的课程号和人数
selectkcbh,count(*)fromcjwherecj<60groupbykcbhhavingcount(*)>=3
14、查询不及格课程数在2门及以上的和课程数
selectxh,count(*)fromcjwherecj<60groupbyxhhavingcount(*)>=2
要注意参
照完整性规则对以下操作的影响,不能出现”孤儿记录”
插入记录
给学生表中插入一条记录
insertintoxs(xh,xm,xb,csrq)values(”1203100”,”胡敏杰”,”男”,{^1992-10-12})
删除记录
删除成绩表中成绩为空的记录
deleteformcjwherecjisnull
更新记录
将”胡敏杰”的性别更改为’女’,出生日期更改为{^1993-10-12}
updatexssetxb=’女’,csrq={^1993-10-12}wherexm=”胡敏杰”
将成绩表中低于平均分的成绩提高10%
updatecjsetcj=cj*1.1wherecj<(selectavg(cj)fromcj)