【Mysql】函数有哪些
mysql函数有哪些?
MySQL 提供了许多内置函数,用于执行各种操作,包括字符串处理、日期时间操作、数学计算、数据转换等。以下是一些常用的 MySQL 函数分类及其示例:
- 字符串函数
CONCAT(str1, str2, ...):将多个字符串连接起来。
SUBSTRING(str, start, length):返回从 start 位置开始的子字符串,长度为 length。
LENGTH(str):返回字符串的字节数(长度)。
UPPER(str):将字符串转换为大写。
LOWER(str):将字符串转换为小写。
REPLACE(str, old, new):替换字符串中的某个子串。
TRIM([LEADING | TRAILING | BOTH] str):去除字符串两端的空白字符。
CHAR_LENGTH(str):返回字符串的字符长度(考虑字符集的不同,一个字符可能占多个字节)。
CONCAT_WS(separator, str1, str2, ...):用指定分隔符连接多个字符串。
- 日期和时间函数
NOW():返回当前的日期和时间。
CURDATE():返回当前的日期。
CURTIME():返回当前的时间。
DATE_ADD(date, INTERVAL expr unit):向日期添加指定的时间间隔。
DATE_SUB(date, INTERVAL expr unit):从日期中减去指定的时间间隔。
DATEDIFF(date1, date2):返回两个日期之间的天数差。
DATE_FORMAT(date, format):根据指定格式返回日期或时间。
YEAR(date)、MONTH(date)、DAY(date):提取日期中的年、月、日。
HOUR(time)、MINUTE(time)、SECOND(time):提取时间中的小时、分钟、秒。
- 数学函数
ABS(x):返回 x 的绝对值。
ROUND(x, d):对数字 x 四舍五入,保留 d 位小数。
CEIL(x) 或 CEILING(x):返回大于等于 x 的最小整数。
FLOOR(x):返回小于等于 x 的最大整数。
POW(x, y) 或 POWER(x, y):返回 x 的 y 次方。
SQRT(x):返回 x 的平方根。
RAND():返回一个0到1之间的随机浮点数。
- 聚合函数
COUNT(expression):返回某列的行数。
SUM(expression):返回某列的总和。
AVG(expression):返回某列的平均值。
MIN(expression):返回某列的最小值。
MAX(expression):返回某列的最大值。
- 条件和控制流函数
IF(condition, true_value, false_value):如果条件为真,返回 true_value,否则返回 false_value。
IFNULL(expression, alt_value):如果表达式为 NULL,返回 alt_value,否则返回表达式的值。
COALESCE(expr1, expr2, ...):返回第一个非 NULL 的表达式值。
CASE WHEN condition THEN result ELSE result END:根据条件返回不同的值。
- 转换函数
CAST(expression AS type):将表达式转换为指定的数据类型。
CONVERT(expression, type):与 CAST 类似,用于数据类型转换。
BIN(N):将数字 N 转换为二进制表示。
HEX(N):将数字 N 转换为十六进制表示。
- JSON 函数(MySQL 5.7+)
JSON_OBJECT(key, value, ...):创建一个 JSON 对象。
JSON_ARRAY(value, ...):创建一个 JSON 数组。
JSON_EXTRACT(json_doc, path):提取 JSON 文档中的某个值。
JSON_SET(json_doc, path, value):设置 JSON 文档中的某个值。
JSON_ARRAYAGG(expr):返回包含 JSON 数组的聚合结果。
- 加密与哈希函数
MD5(str):返回字符串 str 的 MD5 哈希值。
SHA1(str):返回字符串 str 的 SHA1 哈希值。
AES_ENCRYPT(str, key):使用 AES 算法对字符串加密。
AES_DECRYPT(str, key):使用 AES 算法解密字符串。
这些函数涵盖了 MySQL 的一些常见操作和应用,帮助你在数据库中进行数据处理和查询。不同版本的 MySQL 可能会有不同的函数集,具体使用时可以查阅对应版本的官方文档。
mysql有一个数据表有name, sex, score,查出男女分别最高分?
SELECT sex, MAX(score) AS max_score
FROM your_table_name
GROUP BY sex;
如果你想获取每个性别最高分的具体姓名,可以使用以下查询:
SELECT name, sex, score
FROM your_table_name
WHERE (sex, score) IN (
SELECT sex, MAX(score)
FROM your_table_name
GROUP BY sex
);