WHERE
子句的语法知识点及案例代码WHERE
子句用于在SQL查询中对数据进行筛选,它可以根据指定的条件过滤数据行。在JDBC中,WHERE
子句通常用于SELECT
、UPDATE
和DELETE
语句中。
WHERE
子句条件=
:等于<>
或 !=
:不等于>
:大于<
:小于>=
:大于等于<=
:小于等于AND
:逻辑与OR
:逻辑或NOT
:逻辑非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中非常重要的部分,用于根据条件筛选数据。Statement
对象执行带有WHERE
子句的SQL语句。ResultSet
对象可以获取查询结果,并逐行处理。以下是一些更具体的JDBC WHERE
子句的案例,涵盖不同的场景和条件,帮助你更好地理解和应用。
假设我们有一个students
表,包含以下数据:
id | name | age | score |
---|---|---|---|
1 | Alice | 17 | 85 |
2 | Bob | 19 | 78 |
3 | Charlie | 20 | 90 |
4 | David | 16 | 88 |
SELECT * FROM students WHERE age > 18;
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
假设students
表数据如下:
id | name | age | score |
---|---|---|---|
1 | Alice | 17 | 85 |
2 | Bob | 19 | 78 |
3 | Charlie | 20 | 90 |
4 | Andrew | 16 | 88 |
SELECT * FROM students WHERE name LIKE 'A%';
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
假设students
表数据如下:
id | name | age | score |
---|---|---|---|
1 | Alice | 17 | 85 |
2 | Bob | 19 | 78 |
3 | Charlie | 20 | 90 |
4 | David | 16 | 65 |
SELECT * FROM students WHERE score BETWEEN 70 AND 90;
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
假设students
表数据如下:
id | name | age | score |
---|---|---|---|
1 | Alice | 17 | 85 |
2 | Bob | 19 | 78 |
3 | Charlie | 20 | 90 |
4 | David | 16 | 65 |
SELECT * FROM students WHERE name IN ('Alice', 'Bob');
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