Java学习教程,从入门到精通,JDBC中WHERE子句的语法知识点及案例代码(107)

JDBC中WHERE子句的语法知识点及案例代码

JDBC WHERE子句语法知识点

WHERE子句用于在SQL查询中对数据进行筛选,它可以根据指定的条件过滤数据行。在JDBC中,WHERE子句通常用于SELECTUPDATEDELETE语句中。

常见的WHERE子句条件
  1. 比较运算符
    • =:等于
    • <>!=:不等于
    • >:大于
    • <:小于
    • >=:大于等于
    • <=:小于等于
  2. 逻辑运算符
    • AND:逻辑与
    • OR:逻辑或
    • NOT:逻辑非
  3. 特殊运算符
    • IN:用于指定多个可能的值
    • BETWEEN:用于指定一个范围
    • LIKE:用于模糊查询,常与通配符%(任意字符序列)和_(单个字符)一起使用
    • IS NULL:用于判断是否为NULL
注意事项
  • WHERE子句中,字符串值需要用单引号'括起来。
  • 对于IN子句,可以列出多个值,用逗号分隔。
  • 在使用LIKE时,%_是通配符,分别表示任意长度的字符序列和单个字符。
  • 对于BETWEEN子句,范围是闭区间,即包括两端的值。

案例代码

以下是一个使用WHERE子句的JDBC代码示例。假设有一个数据库表students,包含以下字段:

  • id(学生ID)
  • name(学生姓名)
  • age(学生年龄)
  • score(学生成绩)
查询特定条件的学生信息
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcWhereExample {
    public static void main(String[] args) {
        // 数据库连接信息
        String url = "jdbc:mysql://localhost:3306/your_database_name"; // 数据库URL
        String user = "your_username"; // 数据库用户名
        String password = "your_password"; // 数据库密码
        // 查询语句
        String query = "SELECT * FROM students WHERE age > 18 AND score >= 80";
        try {
            // 加载数据库驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 建立连接
            Connection connection = DriverManager.getConnection(url, user, password);
            // 创建Statement对象
            Statement statement = connection.createStatement();
            // 执行查询
            ResultSet resultSet = statement.executeQuery(query);
            // 处理结果
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                double score = resultSet.getDouble("score");

                // 打印结果
                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age + ", Score: " + score);
            }
            // 关闭资源
            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
使用LIKE进行模糊查询
// 查询语句
String query = "SELECT * FROM students WHERE name LIKE 'A%'";
// 执行查询
ResultSet resultSet = statement.executeQuery(query);
// 处理结果
while (resultSet.next()) {
    int id = resultSet.getInt("id");
    String name = resultSet.getString("name");
    int age = resultSet.getInt("age");
    double score = resultSet.getDouble("score");

    // 打印结果
    System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age + ", Score: " + score);
}
使用IN子句
// 查询语句
String query = "SELECT * FROM students WHERE id IN (1, 3, 5)";
// 执行查询
ResultSet resultSet = statement.executeQuery(query);
// 处理结果
while (resultSet.next()) {
    int id = resultSet.getInt("id");
    String name = resultSet.getString("name");
    int age = resultSet.getInt("age");
    double score = resultSet.getDouble("score");
    // 打印结果
    System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age + ", Score: " + score);
}
使用BETWEEN子句
// 查询语句
String query = "SELECT * FROM students WHERE score BETWEEN 70 AND 90";
// 执行查询
ResultSet resultSet = statement.executeQuery(query);
// 处理结果
while (resultSet.next()) {
    int id = resultSet.getInt("id");
    String name = resultSet.getString("name");
    int age = resultSet.getInt("age");
    double score = resultSet.getDouble("score");
    // 打印结果
    System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age + ", Score: " + score);
}

总结

  • WHERE子句是SQL中非常重要的部分,用于根据条件筛选数据。
  • 在JDBC中,可以通过Statement对象执行带有WHERE子句的SQL语句。
  • 通过ResultSet对象可以获取查询结果,并逐行处理。
  • 代码中需要注意数据库连接信息的正确性,以及SQL语句的语法正确性。

以下是一些更具体的JDBC WHERE子句的案例,涵盖不同的场景和条件,帮助你更好地理解和应用。

案例 1:查询年龄大于18岁的学生

假设我们有一个students表,包含以下数据:

id name age score
1 Alice 17 85
2 Bob 19 78
3 Charlie 20 90
4 David 16 88
SQL语句
SELECT * FROM students WHERE age > 18;
JDBC代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JdbcWhereExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/your_database_name";
        String user = "your_username";
        String password = "your_password";

        String query = "SELECT * FROM students WHERE age > 18";

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(url, user, password);
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(query);

            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                double score = resultSet.getDouble("score");

                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age + ", Score: " + score);
            }

            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
输出结果
ID: 2, Name: Bob, Age: 19, Score: 78.0
ID: 3, Name: Charlie, Age: 20, Score: 90.0

案例 2:查询名字以“A”开头的学生

假设students表数据如下:

id name age score
1 Alice 17 85
2 Bob 19 78
3 Charlie 20 90
4 Andrew 16 88
SQL语句
SELECT * FROM students WHERE name LIKE 'A%';
JDBC代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JdbcWhereExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/your_database_name";
        String user = "your_username";
        String password = "your_password";

        String query = "SELECT * FROM students WHERE name LIKE 'A%'";

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(url, user, password);
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(query);

            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                double score = resultSet.getDouble("score");

                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age + ", Score: " + score);
            }

            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
输出结果
ID: 1, Name: Alice, Age: 17, Score: 85.0
ID: 4, Name: Andrew, Age: 16, Score: 88.0

案例 3:查询成绩在70到90之间的学生

假设students表数据如下:

id name age score
1 Alice 17 85
2 Bob 19 78
3 Charlie 20 90
4 David 16 65
SQL语句
SELECT * FROM students WHERE score BETWEEN 70 AND 90;
JDBC代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JdbcWhereExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/your_database_name";
        String user = "your_username";
        String password = "your_password";

        String query = "SELECT * FROM students WHERE score BETWEEN 70 AND 90";

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(url, user, password);
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(query);

            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                double score = resultSet.getDouble("score");

                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age + ", Score: " + score);
            }

            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
输出结果
ID: 1, Name: Alice, Age: 17, Score: 85.0
ID: 2, Name: Bob, Age: 19, Score: 78.0
ID: 3, Name: Charlie, Age: 20, Score: 90.0

案例 4:查询名字为Alice或Bob的学生

假设students表数据如下:

id name age score
1 Alice 17 85
2 Bob 19 78
3 Charlie 20 90
4 David 16 65
SQL语句
SELECT * FROM students WHERE name IN ('Alice', 'Bob');
JDBC代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JdbcWhereExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/your_database_name";
        String user = "your_username";
        String password = "your_password";
        String query = "SELECT * FROM students WHERE name IN ('Alice', 'Bob')";
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(url, user, password);
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(query);

            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                double score = resultSet.getDouble("score");

                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age + ", Score: " + score);
            }

            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
输出结果
ID: 1, Name: Alice, Age: 17, Score: 85.0
ID: 2, Name: Bob, Age: 19, Score: 78.0

你可能感兴趣的:(大数据,Java,编程语言如门,java,学习,开发语言,数据库,大数据,JDBC,intellij-idea)