6.数据查询

EMIS数据库创建的表,下面的查询语句需要哪个表你可以自己创建,实在不想创建给我留言,我给你。我个人觉得还是自己创建好点。

--select 语句对于列的查询
use EMIS
go
select * from 学生

--查询部分列
select 学号,姓名,性别 from 学生
--给列设置别名
select 学号 as 学生编号,姓名 学生姓名 from 学生
--计算列值
select 学号,课程号,成绩 as 原始分数,成绩*0.7 as 折算分数 from 选课

--select语句对行的注释
-- 选择表中的若干记录根据设置条件选择。
--消除重复 distinct | all (所有,默认) • 数量上限制
--     – top n
--     – top n percent

--消除重复和数量限制
--行选择
--消除结果的重复性
--选择所要参与选课的学生的学号
select distinct 学号 from 选课

--限制结果返回的行数,学生表有超过十条记录
--使用top n,返回10条
select top 10 * from 学生

--使用percent,返回11条(四舍五入)
select top 10 percent * from 学生

--查询满足条件的元祖例
--使用比较运算符
--查询课程表中的学分为4分的课程
select * from 课程 where 学分=4

--逻辑运算
--查询课程表中学分大于1且小于4的课程信息
select * from 课程 where 学分>1 and 学分<4

--使用like模式匹配,%多个,_一个,[]在范围内,[^]不在范围内
--查询学生表内姓孙的同学信息
select * from 学生 where 姓名 like '孙%'
--查询以"物联网_"开头的课程
select * from 课程 where 课程名 like '物联网_%'  --查的多
select * from 课程 where 课程名 like '物联网\_%' escape '\'  --查询正确

--确定范围between包含两端值
--查询学分在2到4之间的课程信息
select * from 课程 where 学分 between 2 and 4
--查询分数在60到80之间的成绩
select * from 课程 where 学分 between 60 and 80

--确定集合 in
--在选课表中,查询选课课程号为0022或0001的信息
select * from 选课 where 课程号 in('0022','0001')

--涉及NULL的查询
--查询没有先修课的课程,即先修课为NULL的课程
select * from 课程 where 先修课=NULL  --错误
select * from 课程 where 先修课 IS NULL

--对查询结果进行排序
--order by子句可以对查询的结果按照指定字段进行排序
--order by 排序表达式 [asc|desc]  asc升序 desc 降序 默认为升序排列
--对字段类型为text,ntext,Image的字段不能使用order by进行排序
--查询学生表中的女生情况,按年龄升序排列(出生日期的降序)
select * from 学生 where 性别='女' order by 出生日期 desc
--查询选课表中成绩按升序排列
select * from 选课 order by 成绩 asc

--对查询结果进行统计
--聚合函数:count(),avg(),sun(),max(),min()
--统计查询学生总人数
select count(*) from 学生
--统计参加选课的学生人数
select count(distinct 学号) from 选课
select count(学号) from 选课 --全部选课次数

--查询选修'0005'课程的学生的最高分,最低分和平均分
select max(成绩) as '最高分',min(成绩) as '最低分',avg(成绩) as '平均分' from 选课 where '课程号'='0005'

--对结果进行分组
--GROUP BY子句用于对表或视图中的数据按字段分组,还可以利用HAVING短语按照一定的条件对分组后的数据迚行筛选。
--GROUP BY [ALL] 分组表达式 [HAVING 查询条件]
--当使用HAVING短语指定筛选条件时,HAVING短语必须与GROUP BY配合使用。
--Where是对表的选择,having是设置分组的筛选条件
--求每个学生选课的门数
select 学号,count(*) as 选课数 from 选课 group by 学号
--求选课修了两门以上的课程,并且分数均超过90分的学生学号
select 学号 from 选课 where 成绩>90 group by 学号 having count(*)>2

--对查询结果生成新表
--• INTO 新表名
-- 新表名是被创建的新表,查询的结果集中的记录将添加到此表中;
-- 新表的字段由结果集中的字段列表决定;
--如果表名前加“#”则创建的表为临时表;
--用户必须拥有该数据库中建表的权限;
--对查询结果生成新表
select 课程号,max(成绩) as '最高分',min(成绩) as '最低分',avg(成绩) as '平均分' into 课程成绩单3 from 选课 group by 课程号
select * from 课程成绩单3

发布了105 篇原创文章 · 获赞 536 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_41934990/article/details/105604947