数据查询与统计

简介: 数据查询与统计

<!--p.MsoNormal{         mso-style-name: 正文;         mso-style-parent: "";         margin: 0pt;         margin-bottom: .0001pt;         mso-pagination: none;         text-justify: inter-ideograph;         mso-font-kerning: 1.0000pt;     }             p.paragraph{         mso-style-noshow: yes;         margin-top: 5.0000pt;         margin-right: 0.0000pt;         margin-bottom: 5.0000pt;         margin-left: 0.0000pt;         mso-margin-top-alt: auto;         mso-margin-bottom-alt: auto;         text-align: left;         font-family: 等线;         mso-bidi-font-family: 'Times New Roman';         font-size: 12.0000pt;     }             @list l0:level1{                     mso-level-number-format:decimal;                     mso-level-text:"%1.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l0:level2{                     mso-level-number-format:lower-alpha;                     mso-level-text:"%2)";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l0:level3{                     mso-level-number-format:lower-roman;                     mso-level-text:"%3.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l0:level4{                     mso-level-number-format:decimal;                     mso-level-text:"%4.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l0:level5{                     mso-level-number-format:lower-alpha;                     mso-level-text:"%5)";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l0:level6{                     mso-level-number-format:lower-roman;                     mso-level-text:"%6.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l0:level7{                     mso-level-number-format:decimal;                     mso-level-text:"%7.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l0:level8{                     mso-level-number-format:lower-alpha;                     mso-level-text:"%8)";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l0:level9{                     mso-level-number-format:lower-roman;                     mso-level-text:"%9.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l1:level1{                     mso-level-number-format:decimal;                     mso-level-text:"(%1)";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l1:level2{                     mso-level-number-format:lower-alpha;                     mso-level-text:"%2)";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l1:level3{                     mso-level-number-format:lower-roman;                     mso-level-text:"%3.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l1:level4{                     mso-level-number-format:decimal;                     mso-level-text:"%4.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l1:level5{                     mso-level-number-format:lower-alpha;                     mso-level-text:"%5)";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l1:level6{                     mso-level-number-format:lower-roman;                     mso-level-text:"%6.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l1:level7{                     mso-level-number-format:decimal;                     mso-level-text:"%7.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l1:level8{                     mso-level-number-format:lower-alpha;                     mso-level-text:"%8)";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l1:level9{                     mso-level-number-format:lower-roman;                     mso-level-text:"%9.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l2:level1{                     mso-level-number-format:decimal;                     mso-level-text:"(%1)";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l2:level2{                     mso-level-number-format:lower-alpha;                     mso-level-text:"%2)";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l2:level3{                     mso-level-number-format:lower-roman;                     mso-level-text:"%3.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l2:level4{                     mso-level-number-format:decimal;                     mso-level-text:"%4.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l2:level5{                     mso-level-number-format:lower-alpha;                     mso-level-text:"%5)";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l2:level6{                     mso-level-number-format:lower-roman;                     mso-level-text:"%6.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l2:level7{                     mso-level-number-format:decimal;                     mso-level-text:"%7.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l2:level8{                     mso-level-number-format:lower-alpha;                     mso-level-text:"%8)";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l2:level9{                     mso-level-number-format:lower-roman;                     mso-level-text:"%9.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l3:level1{                     mso-level-number-format:decimal;                     mso-level-text:"(%1)";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l3:level2{                     mso-level-number-format:lower-alpha;                     mso-level-text:"%2)";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l3:level3{                     mso-level-number-format:lower-roman;                     mso-level-text:"%3.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l3:level4{                     mso-level-number-format:decimal;                     mso-level-text:"%4.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l3:level5{                     mso-level-number-format:lower-alpha;                     mso-level-text:"%5)";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l3:level6{                     mso-level-number-format:lower-roman;                     mso-level-text:"%6.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l3:level7{                     mso-level-number-format:decimal;                     mso-level-text:"%7.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l3:level8{                     mso-level-number-format:lower-alpha;                     mso-level-text:"%8)";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             @list l3:level9{                     mso-level-number-format:lower-roman;                     mso-level-text:"%9.";                     mso-level-number-position:left;                     font-family:Times New Roman;                     }             -->                                  

           1.    单表无条件查询

Select 列名,表达式,函数

From 表名

Order by 关键字 desc|asc

           (1)    查询指定列

select sno,sname,sage

   from student;

           (2)    查询所有列

mysql> select *

   -> from sc;

           (3)    表达式的使用

mysql> select sno,cno,grade * 0.6

   -> from sc;

           (4)    使用别名

mysql> select sno as 学号,cno as 课程号,grade * 0.6 as 期末成绩

   -> from sc;

           (5)    使用函数

select curdate() as 当前日期;

select year(curdate()) as 当前年份;

select month(curdate()) as 当前月份;

select day(curdate()) as 当前日子;

思考:如何查询学生的出生年份?

mysql> select sno,sname,year(curdate())-sage as 出生年份

   -> from student;

           (6)    去掉重复

查找哪些同学选课了?

mysql> select distinct sno

   -> from sc;

           (7)    查找指定行的数据

mysql> select *

   -> from student limit 2,3;

           (8)    排序

mysql> select *

   -> from student

   -> order by sno desc|asc;

**默认是升序,降序desc

多关键字排序:

举例:查询学生选课信息,并按成绩降序排列,如果成绩相同,则按学号升序排列

mysql> select *

   -> from sc

   -> order by grade desc,sno;

           2.    带条件查询

(1)比较运算符 =  >  <    >=   <=   <> 或 !=

查找成绩大于90分的记录

mysql> select *

   -> from sc

   -> where grade >= 90;

(2)区间运算符

x between a and b     a <= x <= b

x not between a and b     x > b 或 x<a

查找成绩在80—90之间的记录

mysql> select *

   -> from sc

   -> where grade between 80 and 90;

查找成绩不在80—90之间的记录

mysql> select *

   -> from sc

   -> where grade not between 80 and 90;

(3)空值判断

查找成绩还没有录入的记录

mysql> select *

   -> from sc

   -> where grade is null;

查找成绩已经录入的记录

mysql> select *

   -> from sc

   -> where grade is not null;

(4)逻辑表达式

And 与   or或   not非

举例:查找18岁以上男同学信息

mysql> select *

   -> from student

    -> where sage > 18 and ssex = '男';

举例:查找18岁以上的或男同学信息

mysql> select *

   -> from student

-> where sage > 18 or ssex = '男';

(5)模糊查询    

关键字:like

通配符:% 代表任意多个任意字符

  _ 代表1个任意字符

举例:查找姓张的同学信息。

mysql> select *

   -> from student

   -> where sname like '张%';

举例:查找姓张的姓名为2个字的同学信息。

mysql> select *

   -> from student

   -> where sname like '张_';

举例:查找姓张的姓名为3个字的同学信息。

mysql> select *

   -> from student

   -> where sname like '张__';

举例:查找手机号以153开头,6结尾的同学信息

mysql> select *

   -> from student

   -> where tel like '153%6';

举例:查找手机号以153开头,倒数第2位是6的同学信息

mysql> select *

   -> from student

   -> where tel like '153%6_';

(6)列表运算符

就是or的简写

举例:查找18,20,21岁的同学信息

mysql> select *

   -> from student

   -> where sage = 18 or sage = 20 or sage = 21;

或

mysql> select *

   -> from student

   -> where sagein(18,20,21);

举例:查找选修了1号、2号、4号课程的学生学号。

           3.    统计与分组

Select

From

Where

Group by

Hving

Order by

           (1)    聚合函数

           (2)    分组 group by 关键字

举例:查找每门课的平均成绩

mysql> select cno,avg(grade)

   -> from sc

   -> group by cno;

练习:查找每个人的平均成绩

mysql> select sno,avg(grade)

   -> from sc

   -> group by sno;

练习:查询每个系男、女生人数

mysql> select dno,ssex,count(sno)

   -> from student

   -> group by dno,ssex;

           (3)    筛选having,永远跟着groupby

当条件中含有聚合函数时,用having

举例:查找平均成绩大于80分的课程

mysql> select cno,avg(grade)

   -> from sc

   -> group by cno

   -> having avg(grade) > 80;

练习:查询平均成绩在80分以上的学生学号和平均成绩

Select

From

Where

Group by

Hving

Order by

           4.    连接查询

(1)两表连接

from 表1join表2on表1.列 = 表2.列

Select

From表1join表2on表1.列 = 表2.列

Where

Group by

Hving

Order by

from student join sc onstudent.sno = sc.sno

举例:查找刘晨的各科成绩

Select成绩

From sc join student on student.sno = sc.sno

Where sname = 刘晨

练习:输出所有女生的学号、姓名、课程号及成绩

mysql> select student.sno,sname,cno,grade

   -> from student join sc on student.sno = sc.sno

   -> where ssex = '女';

查询选修数据库课程的学生学号及其成绩

mysql> select sno,grade

   -> from sc join course on sc.cno = course.cno

   -> where cname = '数据库';

查询计算机系有哪些同学

mysql> select sno,sname

   -> from student join dept on student.dno = dept.dno

   -> where dname = '计算机系';

(2)多表连接

Student---sc ---course

From student join sc on student.sno = sc.sno

Join course on sc.cno = course.cno

举例:查询选修了数据库课程的名单

学生名单(student)---sc --- 数据库课程(course)

select student.sno,sname

from student join sc on student.sno = sc.sno

            join course on sc.cno = course.cno

where cname = '数据库';

练习:查找李勇选修的课程名

select cname

from student join sc on student.sno = sc.sno

            join course on sc.cno = course.cno

where sname = '李勇';

4张表的举例:同学选修的课程名(不要求)

计算机系dept—dno---student—sno---sc—cno--course课程名

select cname

from student join sc on student.sno = sc.sno

            join course on sc.cno = course.cno

            join dept on student.dno = dept.dno

where dname = '计算机系';

(3)外连接

举例:查看所有同学的选课情况

mysql> select student.sno,sname,cno,grade

-> from student left join sc on student.sno = sc.sno;

**join左边表中不满足连接条件的记录也出现

练习:各门课的选修情况。

mysql> select sc.cno,course.cno,grade

   -> from sc right join course on sc.cno = course.cno;

           5.    子查询

理解什么是子查询

           (1)    子查询返回单个值

举例1:c01号课程中谁的成绩不低于平均成绩?

select sno

from sc

where cno = 'c01' and grade >= (select avg(grade)

                            from sc

                                where cno = 'c01');

举例2:查询和刘晨在同一个系的学生信息。

select *

from student

where sname <> '刘晨' and dno = (select dno

                               from student

                               where sname = '刘晨');

           (2)    子查询返回值列表:可以使用in、not in、any、all操作符

举例1查询选修c03课程的学生平均年龄。

select avg(sage)

from student

where sno in (select sno

           from sc

           where cno = 'c03');

关于any和all举例:

查询成绩高于3号课任何成绩的选课信息

select*

from sc

where grade >any(select grade

from sc

where sno ='0003');

查询成绩高于3号课所有成绩的选课信息

select*

from sc

where grade > all (select grade

from sc

where sno ='0003');

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
Web App开发 移动开发 安全
Struts2 S2-062 (CVE-2021-31805) 远程代码执行漏洞
Apache 官方发布了 Apache Struts2 的风险通告,漏洞编号为 CVE-2021-31805,可能会导致远程代码执行。
763 1
|
存储 XML Java
Activiti7(图文并茂)
Activiti7(图文并茂)
|
SQL 关系型数据库 PostgreSQL
PostgreSQL datediff 日期间隔(单位转换)兼容SQL用法
标签 PostgreSQL , datediff 背景 使用datediff,对时间或日期相减,得到的间隔,转换为目标单位(日、月、季度、年、小时、秒。。。等)的数值。 DATEDIFF ( datepart, {date|timestamp}, {date|timestamp} ) 周...
17372 0
|
3月前
|
人工智能 安全 IDE
公司不给你配 AI,你会自己掏钱吗?
AI正成为新时代的“办公软件”,开发者每月自费数百元订阅Claude、Cursor、Copilot等工具,实为工作刚需。公司尚未建立报销机制,但先行投入者已悄然积累不可替代的AI能力——这并非倒贴,而是抢占效率高地的聪明投资。
323 0
公司不给你配 AI,你会自己掏钱吗?
|
3月前
|
人工智能 自然语言处理 API
从入门到精通阿里云千问:模型矩阵、免费额度、API代码调用与企业落地指南
AI产业落地的浪潮下,自研通用大模型已经成为数字化转型的核心基础设施。阿里云千问,官方名称通义千问,代号Qwen,是阿里云完全自主研发的全栈式大模型家族,并非单一文本模型,而是覆盖纯文本、代码、图像、音频、视频、行业垂直场景的完整产品矩阵,统一依托阿里云百炼大模型服务平台对外提供模型调用、微调、智能体开发、私有知识库构建、应用一键部署等全链路MaaS服务。当前主力迭代版本为Qwen3.7系列,形成旗舰、均衡、轻量、多模态、代码专用五大分支模型,在中文理解、超长上下文推理、自主智能体执行、多模态统一解析四大维度具备国产头部水准,同时搭配免费试用、按量计费、Token Plan订阅、长期节省计划四
1388 4
|
5月前
|
运维 小程序 数据可视化
小程序开发实测|踩坑无数!游戏陪玩小程序为什么一定要用第三方专业分账系统?
经过多项目实测验证,分账链是目前适配陪玩小程序最贴合、最稳妥的第三方专业分账解决方案。它不是通用型工具,而是针对性适配文娱陪玩、小程序撮合场景的垂直分账系统,兼顾了「低开发成本、全场景适配、合规兜底、高稳定性」四大核心优势。 对于想要快速上线、稳定运营、合规放量、降低运维成本的小程序开发团队,直接接入成熟的垂直专业分账系统,是性价比最高、踩坑最少的技术选型。
549 2
|
自然语言处理 JavaScript API
百宝箱开放平台 ✖️ 开发流程
本文介绍通过开放平台集成智能体能力的流程,包括创建发布应用、获取授权令牌及调用API/SDK三步。涵盖智能体调用、模型测评、文件操作等接口,并提供Java、Python、Node.js及Web SDK支持,助力开发者快速实现智能对话与内容生成功能集成。(239字)
903 0
百宝箱开放平台 ✖️ 开发流程
|
12月前
|
运维 监控 搜索推荐
用低代码做了一个又一个项目之后,企业开始寻找可沉淀可复用的架构
企业推进数字化时,低代码因“快速搭建”广受青睐,但随规模扩大,系统维护难、重复建设、逻辑缠绕等问题凸显。真正挑战不在工具,而在缺乏可复用、可持续演进的能力体系。低代码的价值不应止于“做得快”,而应转向“沉淀得住”——通过统一模型、模块化组件、标准化流程,构建可继承、可装配的产品化能力。
580 0
|
人工智能 监控 算法
基于无人机与AI视觉的矿山盗采智能监测系统技术解析
本文提出融合无人机与AI的三维监管方案。通过全天候视频覆盖、AI车辆识别与行为分析、数据闭环管理及动态算法迭代,实现对矿区24小时智能监控,大幅提升响应效率与监管精度,有效降低人工成本,保障矿区安全。
794 6
|
缓存 负载均衡 算法
(四)网络编程之请求分发篇:负载均衡静态调度算法、平滑轮询加权、一致性哈希、最小活跃数算法实践!
先如今所有的技术栈中,只要一谈关于高可用、高并发处理相关的实现,必然会牵扯到集群这个话题,也就是部署多台服务器共同对外提供服务,从而做到提升系统吞吐量,优化系统的整体性能以及稳定性等目的。
856 2

热门文章

最新文章