数据库实验三 数据查询一
第1关:按条件查询单表的所有字段
任务描述
本关任务:按条件查询数据表的所有字段
为了完成本关任务,你需要掌握:
如何查询数据表的所有字段
相关知识
查询数据表
命令格式:
select * from 数据表 where 查询条件
任务要求
打开province数据库
第一题
查询街道信息(jdxx)数据表的开福区(qxmc)的所有字段
第二题
查询街道信息(jdxx)数据表的开福区和岳麓区(qxmc)的所有字段
第三题
查询街道信息(jdxx)数据表的长沙市(cs)的西湖街道(name)所有字段
jdxx数据表有四个字段,分别是省份(sf)、城市(cs)、区县(qxmc)、街道(name)。
例如,查询天心区(qxmc)的所有字段的值结果如图所示
use province;
#代码开始
#第一题
select * from jdxx where qxmc='开福区';
#第二题
select * from jdxx where qxmc='开福区' or qxmc='岳麓区';
#第三题
select * from jdxx where cs='长沙市' and name='西湖街道';
#代码结束
第2关:查询唯一值
任务描述
本关任务:
根据jdxx数据表,查询湖南省(sf)所有的区县名称(qxmc),每个区县只出现一次
查询长沙市(cs)所有的区县名称(qxmc),每个区县只出现一次
为了完成本关任务,你需要掌握:
1.唯一值distinct
相关知识
唯一值
命令格式:
distinct <字段名>去掉重复的查询结果
use province;
#代码开始
select distinct qxmc from jdxx where sf='湖南省';
select distinct qxmc from jdxx where cs='长沙市';
#代码结束
第3关:统计查询
任务描述
本关任务:对jdxx统计查询
查询湖南省的街道个数
查询长沙市的街道个数
查询湖南省的区县个数
查询长沙市的区县个数
相关知识
为了完成本关任务,你需要掌握:统计查询函数
统计查询函数
SUM
计算数值列的和
AVG
计算数值列的平均值
MAX
计算列(数值、日期、字符)的最大值
MIN
计算列(数值、日期、字符)的最小值
COUNT
计算查询结果的数目
jdxx数据表有四个字段,分别是省份(sf)、城市(cs)、区县(qxmc)、街道(name)。
例如,查询天心区(qxmc)的所有字段的值结果如图所示
use province;
#代码开始
select count(name) from jdxx where sf='湖南省';
select count(name) from jdxx where cs='长沙市';
select count(distinct qxmc) from jdxx where sf='湖南省';
select count(distinct qxmc) from jdxx where cs='长沙市';
#代码结束
第4关:分组查询
任务描述
本关任务:统计每个省的名称和街道数目
显示街道数目大于200个的城市和街道数目
显示长沙市每个区县的街道数目
相关知识
为了完成本关任务,你需要掌握:
分组查询
如何分组查询
select 表达式列表 from 数据表 where 条件 group by 分组字段 having 分组条件
表达式列表可以为分组字段,也可以是统计函数
注意分组条件和条件的区别
jdxx数据表有四个字段,分别是省份(sf)、城市(cs)、区县(qxmc)、街道(name)。
例如,查询天心区(qxmc)的所有字段的值结果如图所示
use province;
#代码开始
#第一题
select sf,count(*) from jdxx group by sf;
#第二题
select cs,count(*) from jdxx group by cs having count(name)>200;
#第三题
select qxmc,count(*) from jdxx where cs='长沙市' group by qxmc;
#代码结束
第5关:数据排序
任务描述
本关任务:显示jdtj数据表中街道个数最多的10个的所有字段;
显示jdtj数据表中街道个数最少的10个的所有字段;
按街道个数从高到底,街道个数相同的按省份升序排序显示jdtj数据表中街道个数大于35的所有字段
jdtj数据表字段为省份(sf)、城市(cs)、区县(qx) 、街道个数(jdgs)字段
相关知识
为了完成本关任务,你需要掌握:如何排序
排序数据
Order by <字段名1> ASC|DESC,
<字段名2> >ASC|DESC……
首先按照<字段名1>的顺序排列记录
若多条记录的<字段名1>值相同,则按<字段名2>的顺序排列
ASC升序 DESC降序 默认升序
使用limit 位置偏移量 <行数> 指定查询结果的数量
位置偏移量指示从第几行开始显示,0表示从第1行开始,若省略默认为0,<行数>指定返回的记录条数
use province;
#代码开始
#第一题
select * from jdtj order by jdgs desc limit 10;
#第二题
select * from jdtj order by jdgs limit 10;
#第三题
select * from jdtj where jdgs>35 order by jdgs desc,sf;
#代码结束