完善:《个人常用Linux命令》

This commit is contained in:
2022-11-02 22:12:38 +08:00
parent 31060e6b24
commit 21c48ed1e1
2 changed files with 298 additions and 23 deletions

View File

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