MySQL通过DQL实现对数据库数据的基本查询
代码魔法师
2024-04-02 17:21
这篇文章将为大家详细讲解有关MySQL通过DQL实现对数据库数据的基本查询,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
MySQL 通过 DQL 实现对数据库数据的基本查询
一、SELECT 语句
SELECT 语句用于从表中检索数据。基本语法如下:
SELECT 列名, ... -- 要检索的列名
FROM 表名 -- 要检索的表名
WHERE 条件 -- 可选,用于过滤结果
二、WHERE 子句
WHERE 子句允许过滤查询结果,仅返回满足特定条件的行。可以使用以下运算符:
- 等于:=
- 不等于:<> 或 !=
- 大于:>
- 小于:<
- 大于等于:>=
- 小于等于:<=
- AND:连接两个条件,所有条件必须为真
- OR:连接两个条件,任何一个条件为真即可
三、ORDER BY 子句
ORDER BY 子句用于对查询结果按指定列进行排序。可以使用以下关键字:
- ASC:升序排序
- DESC:降序排序
四、LIMIT 子句
LIMIT 子句用于限制查询结果返回的行数。基本语法如下:
LIMIT [起始位置,] 行数 -- 起始位置和行数可以是数字或变量
五、DISTINCT 关键字
DISTINCT 关键字用于返回唯一值,去掉重复行。
SELECT DISTINCT 列名, ... -- 去重要检索的列名
六、HAVING 子句
HAVING 子句用于在聚合函数(如 SUM()、COUNT()、AVG())的结果上添加过滤条件。语法如下:
SELECT 聚合函数(列名) -- 要计算的聚合函数
FROM 表名 -- 要检索的表名
GROUP BY 列名 -- 要分组的列名
HAVING 条件 -- 聚合函数过滤条件
七、子查询
子查询是嵌套在另一个查询中的查询,可以用来从多个表中检索数据或执行更复杂的过滤。语法如下:
SELECT 列名, ... -- 要检索的列名
FROM 表名 -- 要检索的表名
WHERE 列名 IN (SELECT 列名 FROM 子查询) -- 使用子查询过滤结果
八、连接
内连接 (JOIN)
SELECT 列名, ... -- 要检索的列名
FROM 表名1
INNER JOIN 表名2 ON 表名1.列名 = 表名2.列名 -- 连接条件
左外连接 (LEFT JOIN)
SELECT 列名, ... -- 要检索的列名
FROM 表名1
LEFT JOIN 表名2 ON 表名1.列名 = 表名2.列名 -- 连接条件
右外连接 (RIGHT JOIN)
SELECT 列名, ... -- 要检索的列名
FROM 表名1
RIGHT JOIN 表名2 ON 表名1.列名 = 表名2.列名 -- 连接条件
全外连接 (FULL OUTER JOIN)
SELECT 列名, ... -- 要检索的列名
FROM 表名1
FULL OUTER JOIN 表名2 ON 表名1.列名 = 表名2.列名 -- 连接条件
示例代码
-- 检索特定用户的订单信息
SELECT *
FROM 订单
WHERE 用户ID = 12345;
-- 检索每个产品的平均价格
SELECT 产品ID, AVG(价格)
FROM 产品
GROUP BY 产品ID;
-- 检索具有特定价格范围产品的订单
SELECT 订单号, 产品ID, 价格
FROM 订单
WHERE 价格 BETWEEN 100 AND 200;
-- 检索最近 10 个订单
SELECT *
FROM 订单
ORDER BY 订单日期 DESC
LIMIT 10;
-- 使用子查询检索订购了特定产品的用户
SELECT 用户ID
FROM 订单
WHERE 产品ID IN (SELECT 产品ID FROM 产品 WHERE 名称 = "iPhone 13");
-- 使用内连接检索订单与产品信息
SELECT o.订单号, o.用户ID, p.产品ID, p.名称
FROM 订单 AS o
INNER JOIN 产品 AS p ON o.产品ID = p.产品ID;
以上就是MySQL通过DQL实现对数据库数据的基本查询的详细内容,更多请关注编程学习网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341