[MySQL]表——删除数据

文章目录

如有错误,请指正!!!

一、引言:为什么需要关注删除操作?

在数据库的CRUD(增删改查)操作中,删除操作是最具风险的一环。一个不小心就可能导致重要数据永久丢失。作为Java开发者,掌握如何使用JDBC安全地执行删除操作是必备技能。

删除操作的特殊性:

  • 不可逆性(在没有备份的情况下)
  • 可能影响数据完整性
  • 涉及业务逻辑复杂性

主要关键字:
删除数据
DELETE 表名 [WHERE 条件]

二、环境准备

2.1 技术栈要求

  • Java 8+
  • MySQL 5.7+
  • MySQL Connector/J 8.0+
  • IntelliJ IDEA

2.2 测试数据表

首先创建测试用的数据表:

sql 复制代码
-- 创建数据库
CREATE DATABASE IF NOT EXISTS user;
USE user;

-- 创建学生表
CREATE TABLE students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT NOT NULL
);

-- 插入测试数据
INSERT INTO students (name, age) VALUES 
('张三', 20),
('李四', 22),
('王五', 19),
('赵六', 21),
('钱七', 23);

三、基础删除操作代码解析

让我们从最基本的删除操作开始,逐步分析代码的每个部分:

java 复制代码
package org.example;

import java.sql.*;

/**
 * JDBC数据删除操作示例
 */
public class JdbcDeleteDemo {

    private static final String URL = "jdbc:mysql://127.0.0.1:3306/user?useSSL=false&serverTimezone=UTC";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "123456";

    public static void main(String[] args) {
        deleteStudentById(3); // 删除id为3的学生记录
    }

    /**
     * 根据ID删除学生记录
     * @param id 学生ID
     */
    public static void deleteStudentById(int id) {
        Connection conn = null;
        Statement stmt = null;

        try {
            // 1. 建立数据库连接
            conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);

            // 2. 创建Statement对象
            stmt = conn.createStatement();

            // 3. 执行DELETE语句
            String sql = "DELETE FROM students WHERE id = " + id;
            int affectedRows = stmt.executeUpdate(sql);

            // 4. 处理删除结果
            if (affectedRows > 0) {
                System.out.println("成功删除 " + affectedRows + " 条记录");
            } else {
                System.out.println("未找到ID为 " + id + " 的记录,删除失败");
            }

        } catch (SQLException e) {
            System.err.println("删除操作失败:" + e.getMessage());
            e.printStackTrace();
        } finally {
            // 5. 关闭资源
            try {
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

四、代码逐行详解

4.1 数据库连接配置

java 复制代码
private static final String URL = "jdbc:mysql://127.0.0.1:3306/user?useSSL=false&serverTimezone=UTC";
private static final String USERNAME = "root";
private static final String PASSWORD = "123456";

参数说明:

  • URL:数据库连接字符串
  • jdbc:mysql://:JDBC连接协议
  • 127.0.0.1:3306:MySQL服务器地址和端口
  • user:数据库名
  • useSSL=false:禁用SSL(开发环境)
  • serverTimezone=UTC:设置时区,避免时间错误

4.2 建立数据库连接

java 复制代码
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);

DriverManager.getConnection()方法用于建立与数据库的连接,返回Connection对象。

4.3 创建Statement对象

java 复制代码
stmt = conn.createStatement();

Statement对象用于执行静态SQL语句。

4.4 执行DELETE语句

java 复制代码
String sql = "DELETE FROM students WHERE id = " + id;
int affectedRows = stmt.executeUpdate(sql);

关键点:

  • executeUpdate():用于执行INSERT、UPDATE、DELETE等操作
  • 返回值:受影响的行数
  • 如果返回0,表示没有找到匹配的记录

4.5 处理删除结果

java 复制代码
if (affectedRows > 0) {
    System.out.println("成功删除 " + affectedRows + " 条记录");
} else {
    System.out.println("未找到ID为 " + id + " 的记录,删除失败");
}

通过判断affectedRows的值,我们可以知道操作是否成功执行。

4.6 资源释放

java 复制代码
finally {
    try {
        if (stmt != null) stmt.close();
        if (conn != null) conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

为什么要在finally块中关闭资源?

  • 确保无论是否发生异常,资源都能被正确释放
  • 避免数据库连接泄露
相关推荐
unable code2 天前
磁盘取证-Flying_High
网络安全·ctf·misc·1024程序员节·磁盘取证
unable code3 天前
磁盘取证-ColorfulDisk
网络安全·ctf·misc·1024程序员节·内存取证
unable code4 天前
磁盘取证-[第十章][10.1.2 磁盘取证方法]磁盘取证1
网络安全·ctf·misc·1024程序员节·内存取证
开开心心就好5 天前
免费抽奖工具支持批量导入+自定义主题
linux·运维·服务器·macos·pdf·phpstorm·1024程序员节
开开心心就好9 天前
卸载工具清理残留,检测垃圾颜色标识状态
linux·运维·服务器·python·安全·tornado·1024程序员节
子燕若水10 天前
Facebook reels 运营指南
1024程序员节
尘觉13 天前
创作 1024 天|把热爱写成长期主义
数据库·1024程序员节
写点什么呢14 天前
Word使用记录
word·1024程序员节
开开心心就好14 天前
内存清理工具点击清理,自动间隔自启
linux·运维·服务器·安全·硬件架构·材料工程·1024程序员节
开开心心就好15 天前
内存清理工具开源免费,自动优化清理项
linux·运维·服务器·python·django·pdf·1024程序员节