(三)数据结构化查询语言(高级用法)

简介: (三)数据结构化查询语言(高级用法)

(三)数据结构化查询语言(二)

1.排序查询Order By子句

语法:select ...from t2 [where子句][order by 子句]

格式: order by 列名 asc|desc

asc:升序排列 默认就是升序 所以可以省略

desc:降序排列

永远sql语句的最后

2.distinct 去除重复

只能指定一个字段,指定多个字段是distinct无效,必须在selcet后。

无效:SELECT DISTINCT price,name FROM t2 ORDER BY price
有效:SELECT DISTINCT price FROM t2 ORDER BY price

3.分组查询Group By子句

我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个单一的值;

另外聚合函数会忽略空值。因此,有时候需要使用函数:ifnull(字段1,vlaue)(如果字段1对应的值不是null,就使用原来的值;否则,就使用value值)

语法:select ... from name [where 条件] [group by 子句] [order by子句]

格式: group by 字段1,字段2;

五个聚合函数

count:统计指定列不为NULL的记录行数;

sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

例:

查询以部门ID为分组员工的平均工资

select deptid,avg(mony) as av from t2 group by deptid;

4.分组查询添加条件Having子句

在分组查询时,可能需要使用条件进行过滤,having子句可以使用在聚合函数后。

例:

查询以部门ID为分组员工的平均工资并且大于4000的部门

select deptid,avg(mony) as av from t2
group by deptid having avg(mony)>4000;

基本查询总结

基本查询子句有:select子句,from子句,where子句,group by子句,having子句,order by子句

完整的查询语句

select...from...[wher...][group by...][having...][order by...] 

执行顺序

from子句--where子句--group by子句--having子句--select子句--order by子句

高级关联查询

有的时候,我们要查询的数据, 一个简单的查询语句满足不了,并且我们使用的数据,表中不能直观体现出来。

而是预先经过一次查询才会有所体现。那么先执行的查询,我们称之子查询。被子查询嵌入的查询语句称之为父查询。

子查询返回的数据特点:

(1) 可能是单行单列的数据。

(2) 可能是多行单列的数据

(3) 可能是单行多列的数据

(4) 可能是多行多列的数据

子查询可以在where,from,having,select子句中,在select中相当外连接的另一种写法吧!

例:

查询表中各部门人员中大于部门平均工资的人

select name,mony,a.deptid,b.av 
from t2 a,
(select deptid,avg(ifnull(mony,0)) as av from t2 group by deptid)
where a.deptid=b.deptid and a.mony>b.av
order by deptid ASC;

其他例子:

如果时间的类型是date,则使用符号比较大小

SELECT empno,ename,hiredate FROM emp 
WHERE hiredate > '1981-02-01' AND hiredate < '1987-05-01';

查询结果是表达式(运算查询):将所有商品的价格+10元进行显示

select  pname,price+10  from  product;

商品没有分类的商品

SELECT * FROM product WHERE category_id IS NULL;

查询有分类的商品

SELECT * FROM product WHERE category_id IS NOT NULL;

(三)数据结构化查询语言(值得学习)

感谢大家,点赞,收藏,关注,评论!

目录
相关文章
|
26天前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
62 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
1月前
|
存储 Go 容器
深入探究Go语言中的数据结构
深入探究Go语言中的数据结构
39 3
|
26天前
|
存储 缓存 索引
从底层数据结构和CPU缓存两方面剖析LinkedList的查询效率为什么比ArrayList低
本文详细对比了ArrayList和LinkedList的查询效率,从底层数据结构和CPU缓存两个方面进行分析。ArrayList基于动态数组,支持随机访问,查询时间复杂度为O(1),且CPU缓存对其友好;而LinkedList基于双向链表,需要逐个节点遍历,查询时间复杂度为O(n),且CPU缓存对其帮助不大。文章还探讨了CPU缓存对数组增删操作的影响,指出缓存主要作用于读取而非修改。通过这些分析,加深了对这两种数据结构的理解。
32 2
|
5月前
|
存储 算法 数据安全/隐私保护
【Python学习篇】Python实验小练习——高级数据结构(五)
【Python学习篇】Python实验小练习——高级数据结构(五)
65 1
|
3月前
|
JSON NoSQL MongoDB
MongoDB Schema设计实战指南:优化数据结构,提升查询性能与数据一致性
【8月更文挑战第24天】MongoDB是一款领先的NoSQL数据库,其灵活的文档模型突破了传统关系型数据库的限制。它允许自定义数据结构,适应多样化的数据需求。设计MongoDB的Schema时需考虑数据访问模式、一致性需求及性能因素。设计原则强调简洁性、查询优化与合理使用索引。例如,在构建博客系统时,可以通过精心设计文章和用户的集合结构来提高查询效率并确保数据一致性。正确设计能够充分发挥MongoDB的优势,实现高效的数据管理。
56 3
|
3月前
|
搜索推荐 算法 Go
深入探索堆:Go语言中的高效数据结构
深入探索堆:Go语言中的高效数据结构
|
3月前
|
存储 C语言
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
|
3月前
|
安全 C# 数据安全/隐私保护
WPF安全加固全攻略:从数据绑定到网络通信,多维度防范让你的应用固若金汤,抵御各类攻击
【8月更文挑战第31天】安全性是WPF应用程序开发中不可或缺的一部分。本文从技术角度探讨了WPF应用面临的多种安全威胁及防护措施。通过严格验证绑定数据、限制资源加载来源、实施基于角色的权限管理和使用加密技术保障网络通信安全,可有效提升应用安全性,增强用户信任。例如,使用HTML编码防止XSS攻击、检查资源签名确保其可信度、定义安全策略限制文件访问权限,以及采用HTTPS和加密算法保护数据传输。这些措施有助于全面保障WPF应用的安全性。
51 0
|
4月前
|
存储 算法 Python
“解锁Python高级数据结构新姿势:图的表示与遍历,让你的算法思维跃升新高度
【7月更文挑战第13天】Python中的图数据结构用于表示复杂关系,通过节点和边连接。常见的表示方法是邻接矩阵(适合稠密图)和邻接表(适合稀疏图)。图遍历包括DFS(深度优先搜索)和BFS(广度优先搜索):DFS深入探索分支,BFS逐层访问邻居。掌握这些技巧对优化算法和解决实际问题至关重要。**
39 1
|
4月前
|
存储 算法 调度
惊呆了!Python高级数据结构堆与优先队列,竟然能这样优化你的程序性能!
【7月更文挑战第10天】Python的heapq模块实现了堆和优先队列,提供heappush和heappop等函数,支持O(log n)时间复杂度的操作。优先队列常用于任务调度和图算法,优化性能。例如,Dijkstra算法利用最小堆加速路径查找。堆通过列表存储,内存效率高。示例展示了添加、弹出和自定义优先级元素。使用堆优化程序,提升效率。
59 2