条件、统计、分组、排序查询,数据库实验三 数据查询一(头歌实践教学平台)

文章目的初衷是希望学习笔记分享给更多的伙伴,并无盈利目的,尊重版权,如有侵犯,请官方工作人员联系博主谢谢。

目录

第1关:按条件查询单表的所有字段

任务描述

任务描述

相关知识

 第3关:统计查询

任务描述

相关知识

第4关:分组查询

任务描述

相关知识

 第5关:数据排序

任务描述

相关知识


第1关:按条件查询单表的所有字段

任务描述

本关任务:按条件查询数据表的所有字段 为了完成本关任务,你需要掌握:

如何查询数据表的所有字段

相关知识

查询数据表

命令格式: select * from 数据表 where 查询条件

任务要求

打开province数据库 第一题 查询街道信息(jdxx)数据表的开福区(qxmc)的所有字段 第二题 查询街道信息(jdxx)数据表的开福区和岳麓区(qxmc)的所有字段 第三题 查询街道信息(jdxx)数据表的长沙市(cs)的西湖街道(name)所有字段

jdxx数据表有四个字段,分别是省份(sf)、城市(cs)、区县(qxmc)、街道(name)。 例如,查询天心区(qxmc)的所有字段的值结果如图所示

 use province;
-- select* from jdxx
 #代码开始
 #第一题
 
select* from jdxx 
where qxmc='开福区';
 #第二题
 
select* from jdxx 
where qxmc='开福区' or qxmc='岳麓区';

 #第三题
select* from jdxx 
where qxmc='长沙市' and name='西湖街道';

select* from jdxx 
where cs='长沙市' and sf='湖南省' and qxmc='岳麓区'and name='西湖街道';
  
 #代码结束

 

 第2关:查询唯一值

任务描述

本关任务: 根据jdxx数据表,查询湖南省(sf)所有的区县名称(qxmc),每个区县只出现一次 查询长沙市(cs)所有的区县名称(qxmc),每个区县只出现一次

为了完成本关任务,你需要掌握: 1.唯一值distinct

相关知识

唯一值

命令格式: distinct <字段名>去掉重复的查询结果

use province
 #代码开始
 
 select DISTINCT qxmc ##在要查询的列名前+DISTINCT(相同只出现一次)
 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;
#代码开始
#答案1
select count( name) ##在湖南省中查询列名的结果个数
from jdxx
where sf='湖南省';

#答案2
select count( name)
from jdxx
where cs='长沙市';

#答案3

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;
#代码开始
#题目1
select sf,count(*)## *是所有行的意思,从jdxx表中选择列名为sf的
##对该列所有行统计(相同名字的为一组)他们的数量
from jdxx
group by sf;
#题目2
select cs,count(*)##对分组条件进行限制,筛选小组数量大于200的
from jdxx
group by cs having count(*)>200;

#题目3
select qxmc,count(*)
from jdxx
where cs='长沙市'
group by qxmc;


#题目4
 
 
 #代码结束

 

 第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;##desc是降序,从多到少,符合题目要求显示最多的字段
 #第二题
select *
from jdtj
order by jdgs asc limit 10;##asc是升序,从少到多,符合题目要求显示最少的字段

 #第三题
 select *
from jdtj
where jdgs>35
order by jdgs desc,sf asc;#街道个数从高到低、省份从低到高,限制街道个数大于35
 #代码结束

 

 显示部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值