MySQL常用函数及语法
# 1. SQL语法
# 1.1 基础语法
# 1.1.1 注释
在SQL语句中添加注释,用于解释代码的作用
-- 这是一条注释
/* 这也是一条注释 */
1
2
2
# 1.1.2 建表
创建数据库中的表
CREATE TABLE 表名 (
列1 数据类型 约束,
列2 数据类型 约束,
列3 数据类型 约束,
...
-- 主键
PRIMARY KEY (列1, 列2, ...),
-- 唯一约束
UNIQUE (列1, 列2, ...),
-- 非空约束
NOT NULL 列1,
-- 外键约束
FOREIGN KEY (列1) REFERENCES 表名2(列2),
-- 检查约束
CHECK (条件)
);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1.1.3 删除表
删除数据库中的表
DROP TABLE 表名;
1
# 1.1.4 清空表数据
清空数据库中的表数据,不删除表结构
TRUNCATE TABLE 表名;
1
DELETE FROM 表名 WHERE 条件;
1
TRUNCATE 和 DELETE 都可以用来清空数据库中的表数据,但是它们有一些区别:
- TRUNCATE 是一个 DDL 语句,会直接删除表中的所有数据,不记录在日志中,也不触发触发器。
- DELETE 是一个 DML 语句,会删除表中的数据,记录在日志中,也会触发触发器。
- TRUNCATE 操作是原子的,要么全部成功,要么全部失败。
- DELETE 操作可以回滚,但是 TRUNCATE 操作不能回滚。
# 1.2 新增
新增数据到数据库中
INSERT INTO 表名 (列1, 列2, 列3, ...)
VALUES (值1, 值2, 值3, ...);
1
2
2
批量新增数据到数据库中
INSERT INTO 表名 (列1, 列2, 列3, ...)
VALUES (值1, 值2, 值3, ...),
(值1, 值2, 值3, ...),
(值1, 值2, 值3, ...);
1
2
3
4
2
3
4
# 1.3 查询
# 1.3.1 基础查询
查询数据库中的数据
SELECT 列1, 列2, 列3, ...
FROM 表名
WHERE 条件;
1
2
3
2
3
# 1.3.2 分页查询
分页查询数据库中的数据
SELECT 列1, 列2, 列3, ...
FROM 表名
WHERE 条件
LIMIT 偏移量, 每页数量;
1
2
3
4
2
3
4
# 1.3.3 分组查询
分组查询数据库中的数据
SELECT 列1, 列2, 列3, ...
FROM 表名
WHERE 条件
GROUP BY 列1, 列2, ...
HAVING 分组条件;
1
2
3
4
5
2
3
4
5
# 1.3.4 排序查询
排序查询数据库中的数据
SELECT 列1, 列2, 列3, ...
FROM 表名
WHERE 条件
ORDER BY 列1 排序方式, 列2 排序方式, ...;
1
2
3
4
2
3
4
排序方式有两种:
- ASC:升序排序(默认)
- DESC:降序排序
# 1.4 更新
# 1.4.1 单表更新
更新数据库中的数据
UPDATE 表名
SET 列1 = 值1, 列2 = 值2, ...
WHERE 条件;
1
2
3
2
3
# 1.4.2 多表关联更新
更新数据库中的数据,关联其他表中的数据
UPDATE 表名1
SET 列1 = 值1, 列2 = 值2, ...
FROM 表名2
WHERE 关联条件;
1
2
3
4
2
3
4
# 1.4.3 merge更新
合并更新数据库中的数据,关联其他表中的数据
MERGE INTO 表名1
USING 表名2
ON 关联条件
WHEN MATCHED THEN
UPDATE SET 列1 = 值1, 列2 = 值2, ...
WHEN NOT MATCHED THEN
INSERT (列1, 列2, 列3, ...)
VALUES (值1, 值2, 值3, ...);
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 1.4.4 子查询更新
更新数据库中的数据,使用子查询关联其他表中的数据
UPDATE 表名1
SET 列1 = 值1, 列2 = 值2, ...
WHERE 条件
AND 列3 IN (子查询);
1
2
3
4
2
3
4
# 1.4.5 FOR UPDATE
锁定数据库中的数据,防止其他事务对其进行修改
SELECT 列1, 列2, 列3, ...
FROM 表名
WHERE 条件
FOR UPDATE;
1
2
3
4
2
3
4
# 1.5 删除
# 1.5.1 单表删除
删除数据库中的数据
DELETE FROM 表名
WHERE 条件;
1
2
2
# 1.5.2 多表关联删除
删除数据库中的数据,关联其他表中的数据
DELETE FROM 表名1
USING 表名2
WHERE 关联条件;
1
2
3
2
3
# 1.6 事务
# 1.6.1 基础事务
开启事务
START TRANSACTION;
1
提交事务
COMMIT;
1
回滚事务
ROLLBACK;
1
# 1.7 索引
# 1.7.1 基础索引
创建索引
CREATE INDEX 索引名 ON 表名 (列1, 列2, ...);
1
删除索引
DROP INDEX 索引名 ON 表名;
1
# 1.8 视图
# 1.8.1 基础视图
- 创建视图
CREATE VIEW 视图名 AS
SELECT 列1, 列2, 列3, ...
FROM 表名
WHERE 条件;
1
2
3
4
2
3
4
- 查询视图
SELECT 列1, 列2, 列3, ...
FROM 视图名
WHERE 条件;
1
2
3
2
3
- 删除视图
DROP VIEW 视图名;
1
# 2 常用函数
# 2.1 基础函数
- 字符串函数
- 数值函数
- 日期函数
- 聚合函数
- 其他函数
# 2.2 字符串函数
- 字符串连接函数
CONCAT(字符串1, 字符串2, ...)
1
- 字符串截取函数
SUBSTRING(字符串, 开始位置, 长度)
1
- 字符串替换函数
REPLACE(字符串, 旧字符串, 新字符串)
1
- 字符串长度函数
LENGTH(字符串)
1
- 字符串大小写转换函数
UPPER(字符串)
LOWER(字符串)
1
2
2
# 2.3 数值函数
- 数值计算函数
数值1 运算符 数值2
1
- 数值转换函数
CAST(数值 AS 数据类型)
1
- 数值格式化函数
FORMAT(数值, 格式)
1
- 数值取整函数
ROUND(数值, 小数位数)
1
- 数值取余函数
MOD(数值1, 数值2)
1
- 数值取绝对值函数
ABS(数值)
1
- 数值取平方根函数
SQRT(数值)
1
- 数值取自然对数函数
LN(数值)
1
- 数值取指数函数
EXP(数值)
1
# 2.4 日期函数
- 字符串转日期
STR_TO_DATE(字符串, 格式)
1
- 日期格式化函数
DATE_FORMAT(日期, 格式)
1
- 日期计算函数
日期1 运算符 日期2
1
- 日期提取函数
YEAR(日期)
MONTH(日期)
DAY(日期)
1
2
3
2
3
- 日期比较函数
日期1 运算符 日期2
1
- 日期差函数
DATEDIFF(日期1, 日期2)
1
- 日期加减函数
DATE_ADD(日期, INTERVAL 数值 单位)
DATE_SUB(日期, INTERVAL 数值 单位)
1
2
2
# 2.5 聚合函数
- 计数函数
COUNT(列名)
1
- 求和函数
SUM(列名)
1
- 平均值函数
AVG(列名)
1
- 最大值函数
MAX(列名)
1
- 最小值函数
MIN(列名)
1
# 2.6 其他函数
- 字符串拼接函数
GROUP_CONCAT(列名)
1
- 随机数函数
RAND()
1
- 窗口函数
窗口函数 OVER (PARTITION BY 列名 ORDER BY 列名)
1
常用窗口函数
- 排名函数
RANK() OVER (PARTITION BY 列名 ORDER BY 列名)
1
- dense排名函数
DENSE_RANK() OVER (PARTITION BY 列名 ORDER BY 列名)
1
- 行号函数
ROW_NUMBER() OVER (PARTITION BY 列名 ORDER BY 列名)
1
最后更新时间: 2025/12/29, 16:29:25