Apache Derby - Where 子句

WHERE 子句用于 SELECT、DELETE 或 UPDATE 语句中,用于指定需要执行操作的行。 通常,该子句后跟一个返回布尔值的条件或表达式,仅对满足给定条件的行执行选择、删除或更新操作。

ij> SELECT * from table_name WHERE condition;
or,
ij> DELETE from table_name WHERE condition;
or,
ij> UPDATE table_name SET column_name = value WHERE condition;

WHERE 子句可以使用 =,!=, <, >, <=, 和 >=, 等比较运算符以及 BETWEEN 和 LIKE 运算符。

示例

假设数据库中有一个名为Employees的表,其中有7条记录,如下所示 −

ID |NAME    |SALARY |LOCATION
-----------------------------------------------------------------------------
1  |Amit    |30000  |Hyderabad
2  |Kalyan  |40000  |Vishakhapatnam
3  |Renuka  |50000  |Delhi
4  |Archana |15000  |Mumbai
5  |Trupthi |45000  |Kochin
6  |Suchatra|33000  |Pune
7  |Rahul   |39000  |Lucknow 

下面的SQL DELETE语句获取工资超过35000的员工的记录 −

ij> SELECT * FROM Employees WHERE Salary>35000;

这将产生以下输出 −

ID |NAME   |SALARY |LOCATION 
---------------------------------------------------
2  |Kalyan |40000  |Vishakhapatnam
3  |Renuka |50000  |Delhi
5  |Trupthi|45000  |Kochin
7  |Rahul  |39000  |Lucknow
4 rows selected

同样,您也可以使用此子句删除和更新记录。

以下示例更新工资低于 30000 的人员的位置。

ij> UPDATE Employees SET Location = 'Vijayawada' WHERE Salary<35000;
3 rows inserted/updated/deleted

如果您验证表格内容,您可以看到更新后的表格,如下所示 −

ij> SELECT * FROM Employees;
ID |NAME    |SALARY |LOCATION
------------------------------------------------------------------------------
1  |Amit    |30000  |Vijayawada
2  |Kalyan  |40000  |Vishakhapatnam
3  |Renuka  |50000  |Delhi
4  |Archana |15000  |Vijayawada
5  |Trupthi |45000  |Kochin
6  |Suchatra|33000  |Vijayawada
7  |Rahul   |39000  |Lucknow
7 rows selected

Where 子句 JDBC 示例

本节将教您如何使用 WHERE 子句并使用 JDBC 应用程序对 Apache Derby 数据库中的表执行 CURD 操作。

如果您想使用网络客户端请求 Derby 网络服务器,请确保服务器已启动并正在运行。 网络客户端驱动程序的类名称是 org.apache.derby.jdbc.ClientDriver,URL 是 jdbc:derby://localhost:1527/DATABASE_NAME;create=true;user=USER_NAME; password=PASSWORD"

按照下面给出的步骤使用 WHERE 子句并对 Apache Derby 中的表执行 CURD 操作

第1步:注册驱动程序

要与数据库通信,首先需要注册驱动程序。 Class 类的 forName() 方法接受表示类名的 String 值,将其加载到内存中,内存会自动注册它。 使用此方法注册驱动程序

第 2 步:获取连接

一般来说,我们与数据库通信的第一步是连接它。 Connection 类表示与数据库服务器的物理连接。 您可以通过调用 DriverManager 类的 getConnection() 方法来创建连接对象。 使用此方法创建连接。

第3步:创建语句对象

您需要创建一个StatementPreparedStatementCallableStatement对象来将SQL语句发送到数据库。 您可以分别使用createStatement()、prepareStatement() 和prepareCall() 方法来创建它们。 使用适当的方法创建这些对象中的任何一个。

第 4 步:执行查询

创建语句后,需要执行它。 Statement 类提供了多种方法来执行查询,例如 execute() 方法来执行返回多个结果集的语句。 executeUpdate() 方法执行 INSERT、UPDATE、DELETE 等查询。 executeQuery() 方法结果返回数据。 使用这两种方法之一并执行之前创建的语句。

示例

以下 JDBC 示例演示了如何使用 WHERE 子句并使用 JDBC 程序对 Apache Derby 中的表执行 CURD 操作。 在这里,我们使用嵌入式驱动程序连接到名为 exampleDB 的数据库(如果不存在则创建)。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class WhereClauseExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      //Executing the query
      String query = "SELECT * FROM Employees WHERE Salary>35000";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println("Id: "+rs.getString("Id"));
         System.out.println("Name: "+rs.getString("Name"));
         System.out.println("Salary: "+rs.getString("Salary"));
         System.out.println("Location: "+rs.getString("Location"));
         System.out.println(" ");
      }
   }
}

输出

执行上面的程序,你将得到以下输出 −

Id: 2
Name: Kalyan
Salary: 43000
Location: Chennai

Id: 3
Name: Renuka
Salary: 50000
Location: Delhi

Id: 5
Name: Trupthi
Salary: 45000
Location: Kochin

Id: 7
Name: Rahul
Salary: 39000
Location: Lucknow