AI原生时代MASB模型感知安全代理架构设计与落地实践
2026/10/31 9:16:10
MySQL作为最流行的关系型数据库之一,提供了丰富的内置函数来简化数据操作。这些函数可以大致分为以下几类:
SELECT CONCAT('Hello', ' ', 'World'); -- 输出:Hello WorldSELECT SUBSTRING('MySQL Functions', 7, 8); -- 从第7个字符开始取8个字符,输出:FunctionsSELECT LENGTH('数据库'); -- 返回字节数(UTF8下为9) SELECT CHAR_LENGTH('数据库'); -- 返回字符数(3)SELECT TRIM(' MySQL '); -- 输出:'MySQL'SELECT UPPER('mysql'); -- 输出:MYSQLSELECT LOCATE('SQL', 'MySQL'); -- 返回3SELECT REPLACE('MySQL', 'SQL', 'Database'); -- 输出:MyDatabaseSELECT 'MySQL' REGEXP '^M'; -- 返回1(匹配)提示:字符串函数在处理大量文本数据时非常有用,但要注意字符集设置可能影响函数行为。
SELECT ROUND(3.14159, 2); -- 输出:3.14SELECT CEIL(3.2); -- 输出4 SELECT FLOOR(3.9); -- 输出3SELECT ABS(-10); -- 输出10SELECT POW(2, 3); -- 输出8SELECT SQRT(16); -- 输出4SELECT RAND(); -- 返回0到1之间的随机数SELECT NOW(); -- 返回当前日期时间 SELECT CURDATE(); -- 仅返回日期 SELECT CURTIME(); -- 仅返回时间SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); -- 格式化输出SELECT DATEDIFF('2023-12-31', '2023-01-01'); -- 返回364SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH); -- 加1个月SELECT DAY('2023-05-15'); -- 返回15SELECT DAYOFWEEK('2023-05-15'); -- 返回2(周一)SELECT COUNT(*) FROM users; -- 统计用户数SELECT SUM(amount) FROM orders; -- 订单总额SELECT AVG(price) FROM products; -- 平均价格SELECT MAX(salary) FROM employees;SELECT department, AVG(salary) FROM employees GROUP BY department HAVING AVG(salary) > 5000;注意:WHERE在分组前过滤,HAVING在分组后过滤。
SELECT IF(salary > 5000, '高薪', '普通') FROM employees;SELECT CASE WHEN score >= 90 THEN '优秀' WHEN score >= 60 THEN '及格' ELSE '不及格' END AS grade FROM students;SELECT IFNULL(bonus, 0) FROM salaries; -- bonus为NULL时返回0SELECT NULLIF(column1, column2); -- 相等时返回NULLSELECT DATABASE();SELECT USER();SELECT VERSION();SELECT CONNECTION_ID();SELECT LAST_INSERT_ID();-- 不推荐(索引失效) SELECT * FROM orders WHERE YEAR(order_date) = 2023; -- 推荐(可以使用索引) SELECT * FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31';SELECT CONVERT(name USING utf8mb4) FROM users;SET time_zone = '+08:00';SELECT IFNULL(column1, '默认值') FROM table;DELIMITER // CREATE FUNCTION calculate_age(birth_date DATE) RETURNS INT DETERMINISTIC BEGIN RETURN YEAR(CURDATE()) - YEAR(birth_date) - (RIGHT(CURDATE(), 5) < RIGHT(birth_date, 5)); END // DELIMITER ;SELECT product_id, product_name, COUNT(*) AS order_count, SUM(quantity) AS total_quantity, SUM(quantity * price) AS total_revenue, DATE_FORMAT(MAX(order_date), '%Y-%m') AS last_order_month FROM orders GROUP BY product_id, product_name;SELECT user_id, COUNT(DISTINCT DATE(access_time)) AS active_days, TIMESTAMPDIFF(MINUTE, MIN(access_time), MAX(access_time)) AS usage_duration, IF(COUNT(*) > 10, '高频用户', '普通用户') AS user_type FROM user_logs GROUP BY user_id;在实际项目中,合理使用MySQL函数可以显著简化SQL语句,提高开发效率。但要注意函数调用的性能影响,特别是在处理大数据量时。建议在开发环境中测试函数性能,并根据业务需求选择最合适的函数组合。