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

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

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

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;

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

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

目录
相关文章
|
2天前
|
存储 Go 容器
深入探究Go语言中的数据结构
深入探究Go语言中的数据结构
11 3
|
4月前
|
存储 算法 数据安全/隐私保护
【Python学习篇】Python实验小练习——高级数据结构(五)
【Python学习篇】Python实验小练习——高级数据结构(五)
57 1
|
2月前
|
JSON NoSQL MongoDB
MongoDB Schema设计实战指南:优化数据结构,提升查询性能与数据一致性
【8月更文挑战第24天】MongoDB是一款领先的NoSQL数据库,其灵活的文档模型突破了传统关系型数据库的限制。它允许自定义数据结构,适应多样化的数据需求。设计MongoDB的Schema时需考虑数据访问模式、一致性需求及性能因素。设计原则强调简洁性、查询优化与合理使用索引。例如,在构建博客系统时,可以通过精心设计文章和用户的集合结构来提高查询效率并确保数据一致性。正确设计能够充分发挥MongoDB的优势,实现高效的数据管理。
47 3
|
2月前
|
搜索推荐 算法 Go
深入探索堆:Go语言中的高效数据结构
深入探索堆:Go语言中的高效数据结构
|
2月前
|
存储 C语言
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
|
3月前
|
存储 算法 Python
“解锁Python高级数据结构新姿势:图的表示与遍历,让你的算法思维跃升新高度
【7月更文挑战第13天】Python中的图数据结构用于表示复杂关系,通过节点和边连接。常见的表示方法是邻接矩阵(适合稠密图)和邻接表(适合稀疏图)。图遍历包括DFS(深度优先搜索)和BFS(广度优先搜索):DFS深入探索分支,BFS逐层访问邻居。掌握这些技巧对优化算法和解决实际问题至关重要。**
31 1
|
3月前
|
存储 算法 调度
惊呆了!Python高级数据结构堆与优先队列,竟然能这样优化你的程序性能!
【7月更文挑战第10天】Python的heapq模块实现了堆和优先队列,提供heappush和heappop等函数,支持O(log n)时间复杂度的操作。优先队列常用于任务调度和图算法,优化性能。例如,Dijkstra算法利用最小堆加速路径查找。堆通过列表存储,内存效率高。示例展示了添加、弹出和自定义优先级元素。使用堆优化程序,提升效率。
49 2
|
3月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
179 1
|
3月前
|
存储 数据处理 开发者
告别繁琐查找!Python高级数据结构Trie树与Suffix Tree,让数据处理更轻松!
【7月更文挑战第19天】Python的Trie树优化字符串搜索,利用前缀减少无效操作,提升效率;Suffix Tree则高效处理后缀问题,尤其适用于文本搜索与生物信息学。虽构建复杂,但能加速后缀查询。掌握这两种数据结构,能有效应对大规模数据挑战,简化处理流程,提升开发效率。
86 0
|
3月前
|
算法 安全 调度
逆天改命!Python高级数据结构堆(Heap)与优先队列,让你的算法效率飙升至宇宙级!
【7月更文挑战第8天】Python的heapq模块和queue.PriorityQueue实现了堆和优先队列,提供高效算法解决方案。堆用于Dijkstra算法求解最短路径,例如在图论问题中;PriorityQueue则在多线程下载管理中确保高优先级任务优先执行。这两个数据结构提升效率,简化代码,是编程中的强大工具。
40 0