MySQL常用函数、语法案例

本人MySQL5.7版本

表结构

假设有一个名为 order_summary 的表,其字段如下:

order_id (INT): 订单的唯一标识符
customer_id (VARCHAR): 顾客的唯一标识符
order_date (DATETIME): 订单创建时间
total_amount (DECIMAL): 订单总金额
payment_status (ENUM): 付款状态(如 'Paid', 'Pending', 'Failed')
category (VARCHAR): 产品类别
shipping_type (VARCHAR): 运输方式

SQL 示例和解释

1. 聚合函数

GROUP_CONCAT()

SELECT GROUP_CONCAT(order_id) FROM order_summary GROUP BY customer_id LIMIT 1000;

解释: 将每个顾客的订单 ID 连接成一个字符串,并限制结果为 1000 条。

COUNT(DISTINCT)

SELECT total_amount, COUNT(DISTINCT customer_id) AS unique_customers FROM order_summary GROUP BY total_amount;

解释: 统计每个订单总金额对应的不同顾客数量。

SUM()

SELECT customer_id, SUM(IF(total_amount > 0, total_amount, 0)) AS total_spent FROM order_summary GROUP BY customer_id;

解释: 计算每个顾客的订单总金额,仅对正值进行求和。

2. 字符串函数

FIND_IN_SET()

SELECT * FROM order_summary WHERE FIND_IN_SET(customer_id, 'C001,C002,C003,C004') > 0;

解释: 查找 customer_id 在指定列表中的记录。

SUBSTRING_INDEX()

SELECT customer_id, SUBSTRING_INDEX(total_amount, '.', 1) AS integer_part FROM order_summary;

解释: 提取 total_amount 中小数点前的部分。

SUBSTRING()

SELECT SUBSTRING('Hello World', 1, 5) AS short_text;

解释: 从字符串中提取前五个字符。

3. 日期和时间函数

DATE_FORMAT()

SELECT DATE_FORMAT(order_date, '%Y年-%m月-%d日') AS formatted_date FROM order_summary;

解释: 将 order_date 格式化为“年-月-日”的形式。

DATEDIFF()

SELECT DATEDIFF(NOW(), order_date) AS days_since_order FROM order_summary WHERE order_id = 1820647545201496064;

解释: 计算订单创建时间与当前时间之间的天数差。

4. 条件函数

IF()

SELECT customer_id, IF(total_amount > 100, 'High', 'Low') AS amount_level FROM order_summary;

解释: 根据 total_amount 的值将其分类为“High”或“Low”。

CASE

SELECT customer_id,
       CASE 
           WHEN total_amount > 100 THEN 'High'
           WHEN total_amount BETWEEN 50 AND 100 THEN 'Medium'
           ELSE 'Low'
       END AS amount_level
FROM order_summary;

解释: 根据 total_amount 的不同范围进行分类。

5. 集合函数

UNION ALL

SELECT customer_id, total_amount, shipping_type FROM order_summary WHERE shipping_type = 'Express' 
UNION ALL
SELECT customer_id, total_amount, shipping_type FROM order_summary WHERE shipping_type = 'Standard';

解释: 获取使用快速和标准运输方式的顾客记录,并合并结果。

6. JSON 函数

JSON_ARRAY()

SELECT JSON_ARRAY(1, 2, 3) AS json_array;

解释: 生成一个包含数字 1、2、3 的 JSON 数组。

JSON_OBJECT()

SELECT JSON_OBJECT('customer_id', customer_id, 'total_amount', total_amount) AS json_result FROM order_summary;

解释: 生成一个 JSON 对象,其中包含 customer_id 和 total_amount 的键值对。

以上是关于 order_summary 表及其字段的 SQL 示例和解释。通过这些示例,我们可以更好地理解 MySQL 的强大功能,并在实际项目中灵活运用。

如有更多问题或想法,欢迎在评论区讨论!

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

服务端相声演员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值