个人常用 SQL 函数 持续更新
时间函数
获取当前时间(MySQL)
sql
# 输出格式为:yyyy-MM-dd HH:mm:ss
NOW();
# 输出格式为:yyyy-MM-dd HH:mm:ss
NOW();
获取当前时间秒(MySQL)
sql
# 从 1970年1月1日 开始到现在的秒数
UNIX_TIMESTAMP();
# 从 1970年1月1日 开始到现在的秒数
UNIX_TIMESTAMP();
计算两个时间之间的间隔(MySQL)
sql
# unit 可选为FRAC_SECOND 毫秒、SECOND 秒、MINUTE 分钟、HOUR 小时、DAY 天、WEEK 星期、MONTH 月、QUARTER 季度、YEAR 年
TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)
# unit 可选为FRAC_SECOND 毫秒、SECOND 秒、MINUTE 分钟、HOUR 小时、DAY 天、WEEK 星期、MONTH 月、QUARTER 季度、YEAR 年
TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)
字符串函数
拼接字符串(MySQL)
sql
# 将多个字符串拼接在一起
CONCAT(str1, str2, ...)
# 将多个字符串拼接在一起
CONCAT(str1, str2, ...)
笔者说
这个函数看起来平平无奇,但实际用起来,可不只是真香。你可能会在 MyBatis 中解决 SQL 注入的时候用到它,还可能在一些 “奇怪” 的场景用到它。
清空数据库中的所有表数据
清空单表数据很简单。
sql
TRUNCATE TABLE 表名;
TRUNCATE TABLE 表名;
但是,如果现在有 100 + 张表?你当然不会一个一个的去 TRUNCATE
,但 MySQL 又没有提供该功能。那你可以用用下面的方法。
查询该数据库下的所有表,利用
CONCAT()
函数将TRUNCATE
语句拼接起来shellSELECT CONCAT('TRUNCATE TABLE ', TABLE_NAME, ';') FROM information_schema.TABLES WHERE TABLE_SCHEMA = '数据库名';
SELECT CONCAT('TRUNCATE TABLE ', TABLE_NAME, ';') FROM information_schema.TABLES WHERE TABLE_SCHEMA = '数据库名';
将执行结果复制,直接执行即可
删除数据库中的所有表
删除单表很简单。
sql
DROP TABLE 表名;
DROP TABLE 表名;
但是,如果现在有 100 + 张表?你当然不会一个一个的去 DROP
,但 MySQL 又没有提供该功能。那你可以用用下面的方法。
查询该数据库下的所有表,利用
CONCAT()
函数将DROP
语句拼接起来shellSELECT CONCAT('DROP TABLE IF EXISTS ', TABLE_NAME, ';') FROM information_schema.TABLES WHERE TABLE_SCHEMA = '数据库名';
SELECT CONCAT('DROP TABLE IF EXISTS ', TABLE_NAME, ';') FROM information_schema.TABLES WHERE TABLE_SCHEMA = '数据库名';
将执行结果复制,直接执行即可