Mysql的增删改查:

增:add

删:delete

改:set

查:get

命令

作用对象

是否改变表结构

危险程度

典型用途

CREATE

数据库/表/索引

✅ 是(新建)

初始化项目结构

ALTER

表结构

✅ 是(修改)

中(可能丢数据)

表结构升级、字段调整

UPDATE

表数据

❌ 否

(误删全表)

修改业务数据

INSERT

表数据

❌ 否

新增业务数据

Mysql查询:

SELECT 列名
FROM 表名
[JOIN ...]
[WHERE 条件]
[GROUP BY 分组]
[HAVING 过滤]
[ORDER BY 排序]
[LIMIT 分页];

逻辑顺序:

FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT

查询表里所有数据:

SELECT * FROM employees;

加上条件(工资大于1w):

SELECT name, salary
FROM employees
WHERE salary > 10000;

排序,分区:

SELECT *
FROM employees
ORDER BY salary DESC
LIMIT 10 OFFSET 20;

常用函数:

函数

含义

COUNT

行数

SUM

总和

AVG

平均值

MAX

最大值

MIN

最小值

      用dept分组:

SELECT dept_id, COUNT(*) AS emp_count
FROM employees
GROUP BY dept_id;

        

SQL 子查询(Subquery)详解

子查询是指嵌套在其他 SQL 语句(如 SELECT、INSERT、UPDATE、DELETE)中的查询语句。它可以出现在 FROMWHEREHAVING等子句中,相当于把一个查询的结果当作另一个查询的条件或数据源。


一、什么是子查询?

定义:

在一个 SQL 语句中,使用 (SELECT ...)的形式嵌入另一个查询,这个内部的 SELECT语句就称为子查询

SELECT 列名
FROM 表名
WHERE 列名 比较运算符 (SELECT 列名 FROM 表名 WHERE 条件);

类型

返回结果

常见使用场景

标量子查询

单行单列(一个值)

WHERESELECTHAVING

行子查询

单行多列

WHERE (col1, col2) = (...)

列子查询

单列多行

INANYALL

表子查询

多行多列

FROM子句(派生表)

2. 按出现位置分类

  • WHERE子句子查询

  • FROM子句子查询(派生表)

  • SELECT子句子查询

  • HAVING子句子查询

  • EXISTS / NOT EXISTS子查询

例子:

-- 学生表
students(id, name, age, class_id)

-- 班级表
classes(id, class_name, teacher)

二.MySQL 内连接 / 左连接 / 右连接

连接类型

一句话解释

INNER JOIN(内连接)

只返回 两表都匹配​ 的数据

LEFT JOIN(左连接)

返回 左表全部 + 右表匹配的

RIGHT JOIN(右连接)

返回 右表全部 + 左表匹配的

示例:

employees(员工表)
+----+--------+---------+
| id | name   | dept_id |
+----+--------+---------+
| 1  | 张三   | 10      |
| 2  | 李四   | 20      |
| 3  | 王五   | NULL    |
+----+--------+---------+

departments(部门表)
+----+------------+
| id | dept_name  |
+----+------------+
| 10 | 技术部     |
| 20 | 市场部     |
| 30 | 财务部     |
+----+------------+

内连接:

SELECT *
FROM employees e
INNER JOIN departments d
ON e.dept_id = d.id;


结果:

| 张三 | 技术部 |
| 李四 | 市场部 |

左连接:

SELECT *
FROM employees e
LEFT JOIN departments d
ON e.dept_id = d.id;


结果:

| 张三 | 技术部 |
| 李四 | 市场部 |
| 王五 | NULL  |

右连接:

SELECT *
FROM employees e
RIGHT JOIN departments d
ON e.dept_id = d.id;


结果:
| 张三   | 技术部 |
| 李四   | 市场部 |
| NULL  | 财务部 |

对比项

INNER JOIN

LEFT JOIN

RIGHT JOIN

返回左表未匹配

返回右表未匹配

返回交集

NULL 行

使用频率

⭐⭐⭐⭐⭐

⭐⭐⭐⭐

⭐⭐

左连接和右连接实际上就是镜像,一般都是用左

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐