MySQL 视图

1. 什么是 MySQL 视图(View)?

视图,简单说就是数据库里的“虚拟表”——它本身不存数据,而是基于一条或多条查询语句动态生成的结果集。

  • 类似一个命名的 SELECT 查询,你可以像查询普通表一样查询视图。

  • 视图可以帮你封装复杂的 SQL 查询、简化开发。

  • 视图可以做权限控制,让用户只能访问数据子集。


2. MySQL 视图基本语法

CREATE VIEW 视图名 AS
SELECT column1, column2, ...
FROM 表名
WHERE 条件;

举个例子:

CREATE VIEW emp_active AS
SELECT id, name, department
FROM employee
WHERE status = 'active';

这样你就可以:

SELECT * FROM emp_active;

而不用每次写复杂的 WHERE 条件。


3. Java 怎么用 MySQL 视图?

用法和操作普通表几乎一样,因为视图对外表现就是一个表。

常见方式:

  • JDBC 查询视图:

String sql = "SELECT * FROM emp_active";
try (Connection conn = dataSource.getConnection();
     PreparedStatement ps = conn.prepareStatement(sql);
     ResultSet rs = ps.executeQuery()) {

    while (rs.next()) {
        System.out.println("员工姓名:" + rs.getString("name"));
    }
}
  • MyBatis/Mapper


调用时就像查询普通表一样。


4. 视图的优缺点

优点 缺点
封装复杂查询,简化业务代码 视图本质上是动态查询,性能可能不及物化表
提高安全性,限制访问列和行 不能对某些视图执行更新操作(只读视图)
方便重用SQL,减少代码冗余 视图层次太多时,查询可能变慢

5. 视图的更新(增删改)限制

  • 简单视图(单表、无聚合、无DISTINCT等)可以直接更新。

  • 复杂视图(带聚合、连接、多表、分组等)通常是只读的,不能直接通过视图修改数据。

Java 操作时,如果你通过视图执行更新失败,可能就是这个原因。


6. 总结

MySQL 视图就是数据库里帮你“打包”的虚拟表,Java 操作它时几乎没区别。
合理设计视图,能让后端代码更清爽、权限更明确,还能提高查询的复用性。

你可能感兴趣的:(MySQL 视图)