20. 查询表student——查询所有不姓刘学生的姓名、学号和性别

在这里插入图片描述

SELECT
	sname,
	sno,
	ssex
FROM
	student
WHERE
	sname NOT LIKE '刘%';
### 使用 MySQL 创建 `school` 数据库及 `student` 表 为了创建名为 `school` 的数据库及其内部的 `student` 表,可以按照如下 SQL 语句执行: ```sql CREATE DATABASE IF NOT EXISTS school CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE school; CREATE TABLE IF NOT EXISTS student ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '学号', name VARCHAR(50) NOT NULL COMMENT '姓名', gender ENUM('male', 'female') DEFAULT 'male' COMMENT '性别', age TINYINT UNSIGNED CHECK (age >= 0 AND age <= 120) COMMENT '年龄' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表'; ``` 上述代码定义了一个具有四个字段的学生表:学号 (`id`)、姓名 (`name`)、性别 (`gender`) 年龄 (`age`)。这里还指定了字符编码为 UTF-8 并设置了默认引擎 InnoDB[^1]。 ### Java 实现 CRUD 操作 对于基于 JDBC 技术栈来完成基本增删改查功能的应用程序而言,在编写之前需先引入必要的依赖项(如 Maven 或 Gradle)。下面给出一段简单的例子展示如何通过 Java 来连接到 MySQL 数据库并对 `student` 表进行操作。 #### 添加 Maven 依赖 如果项目采用的是 Maven 构建工具,则应在 pom.xml 文件中加入以下内容以便获取所需驱动包: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency> ``` #### 编写 Java 类实现 CRUD 功能 接下来是一个完整的 StudentDAO.java 文件示例,它实现了对学生记录的基本管理方法: ```java import java.sql.*; import java.util.ArrayList; import java.util.List; public class StudentDAO { private static final String URL = "jdbc:mysql://localhost:3306/school?useSSL=false&serverTimezone=UTC"; private static final String USER = "root"; // 替换成自己的用户名 private static final String PASSWORD = ""; // 替换成自己的密码 public Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USER, PASSWORD); } /** * 插入新纪录 */ public void create(String name, String gender, int age) { try (Connection conn = getConnection(); PreparedStatement pstmt = conn.prepareStatement( "INSERT INTO student(name, gender, age) VALUES (?, ?, ?)" )) { pstmt.setString(1, name); pstmt.setString(2, gender); pstmt.setInt(3, age); pstmt.executeUpdate(); } catch (SQLException e) { System.err.println(e.getMessage()); } } /** * 查询所有记录 */ public List<Student> readAll() { List<Student> students = new ArrayList<>(); try (Connection conn = getConnection(); Statement stmt = conn.createStatement()) { ResultSet rs = stmt.executeQuery("SELECT * FROM student"); while(rs.next()){ Student s = new Student( rs.getInt("id"), rs.getString("name"), rs.getString("gender"), rs.getInt("age") ); students.add(s); } } catch (SQLException e){ System.err.println(e.getMessage()); } return students; } /** * 更新指定ID的记录 */ public boolean update(int id, String name, String gender, int age) { try(Connection conn = getConnection(); PreparedStatement pstmt = conn.prepareStatement( "UPDATE student SET name=?, gender=?, age=? WHERE id=?" )) { pstmt.setString(1, name); pstmt.setString(2, gender); pstmt.setInt(3, age); pstmt.setInt(4, id); return pstmt.executeUpdate() > 0; } catch(SQLException e){ System.err.println(e.getMessage()); return false; } } /** * 删除指定ID的记录 */ public boolean delete(int id) { try(Connection conn = getConnection(); PreparedStatement pstmt = conn.prepareStatement( "DELETE FROM student WHERE id=?")) { pstmt.setInt(1, id); return pstmt.executeUpdate() > 0; } catch(SQLException e){ System.err.println(e.getMessage()); return false; } } } ``` 此段代码展示了怎样利用 JDBC API 进行数据访问层的设计模式——即 DAO 设计模式中的具体应用实例之一。其中包含了四种主要的操作函数用于处理对应于持久化对象生命周期内的各个阶段事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值