navicat操作数据库 数据查询功能
作者:@kuaiquxie
作者的github:https://github.com/bitebita
本文为作者原创,如需转载,请注明出处:https://www.cnblogs.com/dzwj/p/16006574.html
1.select语句
SELECT * FROM <表名>;
1.1.通配符的使用:
通配符 * :查询所有的列等等
通配符 _ :匹配一个字符
通配符 %:匹配任意长度的字符,包括空字符串
1.2.查询关键字
1.2.1 关键字 distinct的用法 除去数据重复的值
SELECT DISTINCT [字段名] FROM <表名>
1.2.2关键字 like的用法 like与通配符配合使用
SELECT [字段名1,字段名2,…] FROM <表名> WHERE [字段名] [ NOT ] LIKE ‘匹配字符串’
2.子查询
常用的子查询语句有五种:
- 条件查询(where子句):按照“条件表达式”指定的条件进行查询。
- 分组查询(group by子句):按照“属性名”指定的字段进行分组。group by子句通常和count()、sum()等聚合函数一起使用。
- 筛选查询(having子句):有group by才能having子句,只有满足“条件表达式”中指定的条件的才能够输出。
- 排序查询(order by子句):按照“属性名”指定的字段进行排序。排序方式由“asc”和“desc”两个参数指出,默认是按照“asc”来排序,即升序。
- 限制查询(limit):限制结果集。
2.1条件查询(where子句)
where子句常与运算符配合使用
2.2分组查询(group by子句)
分组将一个区域划分成多个小区域,对多个小区域进行数据处理
select 类别, sum(数量) as 数量之和 from A group by 类别
2.3筛选查询(having子句) 针对“组”里面条件进行筛选
having一般跟在group by之后,执行记录组选择的一部分来工作的。where则是执行所有数据来工作的。
再者having可以用聚合函数,如having sum(qty)>1000。
2.4排序查询(order by子句)
- order by <列名> # 默认升序排列
- order by <列名> desc # 降序排列
- order by <列名> asc # 升序排列
- order by rand() # 随机排列
2.5限制查询(limit子句)
在查询语句中,我们想要只返回前面几行数据
limit [offset] N
2.6 子查询关键字
2.6.1 关键字 as的用法
1. as的用法一般是用于重命名“列名”、“表名”,为了查询方便。
2.as作为连接语句的操作符
create table charm1 as select * from charm2
解释:上面的语句是先获取charm1表格中所有数据,之后再创建一张charm1表,结构和charm2表相同,记录为后面语句的查询结果
2.6.2 关键字 in的用法
列如:现在我们查询成绩大于60的学生的结果集,然后将原成绩表中的成绩与结果集进行比较,如果存在,就输出这条学生的记录。
select * from stu_sc where score in (select score from stu_sc where score>60)
2.6.3 关键字 exists的用法
exists子查询就是用来判断某些条件是否满足,exists是接在where之后的,
exists返回的结果只有0,1.
select * from stu_sc where exists (select * from stu_sc where score>60)
2.6.4 关键字 any 的用法
any关键字表示满足其中的任意一个条件,只要满足内层查询语句结果的任意一个,就可以通过该条件来执行外层查询语句
select * from stu_sc where id < ANY (select id from stu_sc )
2.6.5 关键字 all 的用法
all和any 刚好是相反的,all 关键字需要满足所有结果。
select * from stu_sc where id > ALL (select id from stu_sc )
2.6.6 关键字 between ..and 的用法
比如:查询stu_sc表中,分数在40——60之间的数据。
select * from stu_sc where score between 40 and 60
2.7 子查询组合
2.7.1 组合:where + group by + having + 函数
3. 连接查询
为什么用到连接查询,在用户查看数据的时候,需要现实的数据来自多张表,这时候就需要连接查询。
3.1 内连接查询
select * from 表名 join 被连接表 on 连接条件
select Sname,Cno,Grade FROM Student JOIN SC ON Student.Sno = SC.Sno WHERE Sdept = '计算机系'
3.2 自连接查询
3.3 外连接查询
FROM 表一 left/right JOIN 表二 ON 连接条件
4. 集合查询
集合操作的分类
并操作 union
交操作 intersect
差操作 except
注意:参加集合 操作的各查询结果的列数必须相同,对应项的数据类型必须相同。
4.1 union 将多个查询结果合并起来,自动去掉重复元组
4.2 intersect 该运算符返回两个查询或多个查询的不同行
(select col from table1) intersect (select col from table2);
4.3 except
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!