关于java:数据库篇mysql内置函数

41次阅读

共计 5082 个字符,预计需要花费 13 分钟才能阅读完成。

前言

sql 是程序开发员绕不开的一项技能,而 mysql 是以后最风行的数据库,熟知其内置的一些函数,能够使咱们平时的开发工作更加顺畅和不便

  • 工夫日期函数
  • 字符串函数
  • 数学计算相干函数
  • 条件判断函数
  • 加密和压缩函数
  • 聚合函数
  • 格局或类型转化函数
  • 加锁函数和解锁函数

关注公众号,一起交换,微信搜一搜: 潜行前行

github 地址,感激 star

1 工夫日期函数

| 函数 | 性能形容 |
| — | — |
| CURDATE(),CURRENT_DATE() | 返回以后日期,准确到年月日 |
|CURTIME(),CURRENT_TIM | 返回以后工夫,时分秒 |
|NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),SYSDATE(),LOCALTIMESTAMP() | 返回以后日期和工夫:年月日时分秒 |
|UNIX_TIMESTAMP() | 以 UNIX 工夫戳的模式返回以后工夫 |
|UNIX_TIMESTAMP(timeStr) | 将工夫 timeStr 字符串以 UNIX 工夫戳的模式返回 |
|FROM_UNIXTIME(timestamp) | 将 UNIX 工夫戳 timestamp 转换为一般格局的工夫 |
|UTC_DATE() | 返回 UTC 日期 |
|UTC_TIME() | 返回 UTC 工夫 |
|MONTH(dateTime) | 返回日期 d 中的月份值,1~12 SELECT MONTH(‘2021-06-05 11:11:11’)->06|
|MONTHNAME(dateTime) | 返回日期 dateTime 当中的月份名称,如 Janyary|
|DAYNAME(dateTime) | 返回日期 dateTime 是星期几,如 Monday,Tuesday|
|DAYOFWEEK(dateTime) | 日期 dateTime 明天是星期几,1: 星期日,2:星期一 …7: 星期六 |
|WEEKDAY(dateTime) | 日期 dateTime 明天是星期几,0 示意星期一,1 示意星期二 |
|WEEK(dateTime),WEEKOFYEAR(dateTime) | 计算日期 dateTime 是本年的第几个星期,范畴是 0 ->53 |
|DAYOFYEAR(dateTime) | 计算日期 dateTime 是本年的第几天 |
|DAYOFMONTH(dateTime) | 计算日期 dateTime 是本月的第几天 |
|QUARTER(dateTime) | 返回日期 dateTime 是第几节令,返回 1 ->4 |
|HOUR(t) | 返回 t 中的小时值 SELECT HOUR(‘5:13:14’) ->5 |
|MINUTE(t) | 返回 t 中的分钟值 SELECT MINUTE(‘5:13:14’) ->13 |
|SECOND(t) | 返回 t 中的秒钟值 SELECT SECOND(‘5:13:14’) ->14 |
|EXTRACT(type FROM dateTime) | 从日期 dateTime 中获取指定的值,type 指定返回的值 SELECT EXTRACT(MINUTE FROM ‘2021-06-05 11:13:14’) ->13 |
TIME_TO_SEC(time) | 将工夫 time 转换为秒:SELECT TIME_TO_SEC(’01:12:00′) ->4320
SEC_TO_TIME(second) | 将以秒为单位的工夫 second 转换为时分秒的格局 SELECT SEC_TO_TIME(4320)->01:12:00
TO_DAYS(dateTime) | 计算日期 dateTime 间隔 0000 年 1 月 1 日的天数
DATEDIFF(date1,date2) | 计算日期 date1->date2 之间相隔的天数 SELECT DATEDIFF(‘2001-01-01′,’2001-02-02’)->-32
ADDDATE(d,n) | 计算其实日期 d 加上 n 天的日期
ADDDATE(d,INTERVAL expr type) | 计算起始日期 d 加上一个时间段后的日期; SELECT ADDDATE(‘2021-06-11 11:13:14’, INTERVAL 5 MINUTE)->2021-06-11 11:18:14 (TYPE 的取值与下面那个列出来的函数相似)
SUBDATE(d,n) | 日期 d 减去 n 天后的日期
SUBDATE(d,INTERVAL expr type) | 日期 d 减去一个时间段后的日期
ADDTIME(t,n) | 工夫 t 加上 n 秒的工夫
SUBTIME(t,n) | 工夫 t 减去 n 秒的工夫
DATE_FORMAT(d,f) | 按表达式 f 的要求显示日期 d
TIME_FORMAT(t,f) | 按表达式 f 的要求显示工夫 t

  • EXTRACT 办法的 type 可取值为:MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR、SECOND_MICROSECOND、MINUTE_MICROSECOND、MINUTE_SECOND、HOUR_MICROSECOND、HOUR_SECOND、HOUR_MINUTE、DAY_MICROSECOND、DAY_SECOND、DAY_MINUTE、DAY_HOUR、YEAR_MONTH

2 字符串函数

函数 性能形容
CHAR_LENGTH(s) 返回字符串 s 的字符数
LENGTH(s) 返回字符串 s 的长度
CONCAT(s1,s2,…) 将字符串 s1,s2 等多个字符串合并为一个字符串
CONCAT_WS(x,s1,s2,…) 同 CONCAT(s1,s2,…) 函数,然而应用 x 作为连接符
INSERT(s1,x,len,s2) 用字符串 s2 替换 s1 的 x 地位开始,长度为 len 的字符串
UPPER(s),UCAASE(S) 将字符串 s 的所有字母变成大写字母
LOWER(s),LCASE(s) 将字符串 s 的所有字母变成小写字母
LEFT(s,n) 返回字符串 s 的前 n 个字符
RIGHT(s,n) 返回字符串 s 的后 n 个字符
LPAD(s1,len,s2) 应用字符串 s2 来填充 s1 的开始处,使字符串长度达到 len
RPAD(s1,len,s2) 应用字符串 s2 来填充 s1 的结尾处,使字符串的长度达到 len
LTRIM(s) 去掉字符串 s 开始处的空格
RTRIM(s) 去掉字符串 s 结尾处的空格
TRIM(s) 去掉字符串 s 开始和结尾处的空格
TRIM(s1 FROM s) 去掉字符串 s 中开始处和结尾处的字符串 s1 SELECT TRIM(‘@’ FROM ‘@@abc@@’) -> abc
REPEAT(s,n) 将字符串 s 反复 n 次
SPACE(n) 返回 n 个空格
REPLACE(s,s1,s2) 用字符串 s2 代替字符串 s 中的字符串 s1
STRCMP(s1,s2) 比拟字符串 s1 和 s2
SUBSTRING(s,n,len) 获取从字符串 s 中的第 n 个地位开始长度为 len 的字符串
MID(s,n,len) 同 SUBSTRING(s,n,len)
LOCATE(s1,s),POSITION(s1 IN s) 从字符串 s 中获取 s1 的开始地位
INSTR(s,s1) 从字符串 s 中获取 s1 的开始地位
REVERSE(s) 将字符串 s 的程序反过来
FIELD(s,s1,s2…) 返回第一个与字符串 s 匹配的字符串地位;SELECT FIELD(‘c’,’a’,’b’,’c’) -> 3
SUBSTRING_INDEX 返回从字符串 str 的第 count 个呈现的分隔符 delim 之后的子串

3 数学计算相干函数】

函数 性能形容
ABS(x) 返回 x 的绝对值
CEIL(x),CEILING(x) 向上取整
FLOOR(x) 向下取整
RAND() 返回 0~1 范畴的随机数
RAND(x)
SIGN(x) 判断数值是正负或者零
PI() 返回圆周率 (3.141593)
TRUNCATE(x,y) 返回数值 x 保留到小数点后 y 位的值(截断)
ROUND(x) 返回离 x 最近的整数,四舍五入
ROUND(x,y) 保留 x 小数点后 y 位的值,但截断时要进行四舍五入
POW(x,y).POWER(x,y) 返回 x 的 y 次方
SQRT(x) 返回 x 的平方根
EXP(x) 返回 e 的 x 次方 SELECT EXP(3) — 20.085536923188
MOD(x,y) 返回 x 除以 y 当前的余数
LOG(x) 返回自然对数 (以 e 为底的对数)
LOG10(x) 返回以 10 为底的对数
RADIANS(x) 将角度转换为弧度
DEGREES(x) 将弧度转换为角度
SIN(x) 求正弦值 (参数是弧度)
ASIN(x) 求反正弦值 (参数是弧度)
COS(x) 求余弦值 (参数是弧度)
ACOS(x) 求反余弦值 (参数是弧度)
TAN(x) 求正切值 (参数是弧度)
ATAN(x)ATAN2(x) 求反正切值 (参数是弧度)
COT(x) 求余切值 (参数是弧度)

4 条件判断函数

函数 性能形容
IF(expr1,expr2,expr3) 如果 expr1 不为 0 或者 NULL, 则返回 expr2 的值,否则返回 expr3 的值
IFNULL(expr1,expr2) 如果 expr1 不为 NULL, 返回 expr1, 否则返回 expr2
NULLIF(expr1,expr2) 如果 expr1=expr2 则返回 NULL, 否则返回 expr2
CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result …] [ELSE result] END 当 compare_value=value 时返回 result
CASE WHEN [condition] THEN result [WHEN [condition] THEN result …] [ELSE result] END 当 condition 为 TRUE 时返回 result

5 加密和压缩函数

函数 性能形容
MD5 MD5(str) 函数能够对字符串 str 进行散列,能够用于一些一般的不须要解密的数据加密
SHA1(str), SHA(str) 计算 160 位校验和,返回 40 位 16 进制数形成的字符串,当 str 为 NULL 时返回 NULL
SHA2(str, hash_length) 计算 SHA- 2 系列的哈希办法 (SHA-224, SHA-256, SHA-384, and SHA-512)
ENCRYPT(str[,salt]) 用 unix crypt() 来加密 str,salt 至多要有两位字符
ENCODE(str,pswd)ENCODE 函数能够应用加密明码 pswd 来加密字符串 str
DECODE(crypt_str,pswd) 对应 ENCODE 函数
MAX([DISTINCT] expr) 最小值
MIN([DISTINCT] expr) 最大值
SUM([DISTINCT] expr) 累计总和

6 聚合函数

函数 性能形容
AVG([DISTINCT] expr) 返回 expr 的平均值,distinct 选项用于疏忽反复值
COUNT([DISTINCT] expr) 返回 select 中 expr 的非 0 值个数,返回值为 bigint 类型
GROUP_CONCAT 连贯组内的非空值,若无非空值,则返回 NULL

7 格局或类型转化函数

函数 性能形容
CONV(N,from_base,to_base) 扭转数字 N 的进制,返回值为该进制下的数字形成的字符串
INET_ATON(expr)ip 字符串转数字
INET_NTOA(expr) 数字转 ip 字符串
CAST(expr AS type) 转换数据类型
CONVERT(expr,type)type 能够为 BINARY[(N)],CHAR[(N)],DATE,DATETIME,DECIMAL[(M[,D])],DECIMAL[(M[,D])],TIME,UNSIGNED [INTEGER] 等等
CONVERT(expr USING cs) 将字符串 s 的字符集变成 cs,cs 如 utf8 等等

8 加锁函数和解锁函数

函数 性能形容
GET_LOCK(name,time) 函数定义一个名称为 nam、持续时间长度为 time 秒的锁。如果锁定胜利,则返回 1;如果尝试超时,则返回 0;如果遇到谬误,返回 NULL。
RELEASE_LOCK(name) 函数解除名称为 name 的锁。如果解锁胜利,则返回 1;如果尝试超时,返回 0 了如果解锁失败,返回 NULL;
IS_FREE_LOCK(name) 函数判断是否已应用名为 name 的锁定。如果应用,返回 0,否则,返回 1

欢送指注释中谬误

参考文章

  • MySQL 罕用内置函数与所有内置函数
  • mysql 内置函数大全 \
  • MySQL DATE_FORMAT() 函数
正文完
 0