
- Cassandra 教程
- Cassandra - 首頁
- Cassandra - 簡介
- Cassandra - 架構
- Cassandra - 資料模型
- Cassandra - 安裝
- Cassandra - 參考 API
- Cassandra - Cqlsh
- Cassandra - Shell 命令
- Cassandra Keyspace 操作
- Cassandra - 建立 Keyspace
- Cassandra - 修改 Keyspace
- Cassandra - 刪除 Keyspace
- Cassandra 表操作
- Cassandra - 建立表
- Cassandra - 修改表
- Cassandra - 刪除表
- Cassandra - 清空表
- Cassandra - 建立索引
- Cassandra - 刪除索引
- Cassandra - 批處理
- Cassandra CRUD 操作
- Cassandra - 建立資料
- Cassandra - 更新資料
- Cassandra - 讀取資料
- Cassandra - 刪除資料
- Cassandra CQL 型別
- Cassandra - CQL 資料型別
- Cassandra - CQL 集合
- CQL 使用者自定義資料型別
- Cassandra 有用資源
- Cassandra - 快速指南
- Cassandra - 有用資源
- Cassandra - 討論
Cassandra - 讀取資料
使用 SELECT 語句讀取資料
SELECT 語句用於從 Cassandra 中的表讀取資料。使用此語句,您可以讀取整個表、單個列或特定單元格。以下是 SELECT 語句的語法。
SELECT FROM <tablename>
示例
假設在名為 emp 的 keyspace 中有一個表,包含以下詳細資訊:
emp_id | emp_name | emp_city | emp_phone | emp_sal |
---|---|---|---|---|
1 | ram | Hyderabad | 9848022338 | 50000 |
2 | robin | null | 9848022339 | 50000 |
3 | rahman | Chennai | 9848022330 | 50000 |
4 | rajeev | Pune | 9848022331 | 30000 |
以下示例顯示如何使用 SELECT 語句讀取整個表。這裡我們讀取名為 emp 的表。
cqlsh:tutorialspoint> select * from emp; emp_id | emp_city | emp_name | emp_phone | emp_sal --------+-----------+----------+------------+--------- 1 | Hyderabad | ram | 9848022338 | 50000 2 | null | robin | 9848022339 | 50000 3 | Chennai | rahman | 9848022330 | 50000 4 | Pune | rajeev | 9848022331 | 30000 (4 rows)
讀取所需列
以下示例顯示如何讀取表中的特定列。
cqlsh:tutorialspoint> SELECT emp_name, emp_sal from emp; emp_name | emp_sal ----------+--------- ram | 50000 robin | 50000 rajeev | 30000 rahman | 50000 (4 rows)
WHERE 子句
使用 WHERE 子句,您可以對所需列施加約束。其語法如下:
SELECT FROM <table name> WHERE <condition>;
注意 - WHERE 子句只能用於主鍵的一部分或在其上具有二級索引的列。
在以下示例中,我們讀取工資為 50000 的員工的詳細資訊。首先,為 emp_sal 列設定二級索引。
cqlsh:tutorialspoint> CREATE INDEX ON emp(emp_sal); cqlsh:tutorialspoint> SELECT * FROM emp WHERE emp_sal=50000; emp_id | emp_city | emp_name | emp_phone | emp_sal --------+-----------+----------+------------+--------- 1 | Hyderabad | ram | 9848022338 | 50000 2 | null | robin | 9848022339 | 50000 3 | Chennai | rahman | 9848022330 | 50000
使用 Java API 讀取資料
您可以使用 Session 類的 execute() 方法從表中讀取資料。請按照以下步驟使用 Java API 透過批處理語句執行多個語句。
步驟 1:建立 Cluster 物件
如下所示,建立 com.datastax.driver.core 包的 Cluster.builder 類的例項。
//Creating Cluster.Builder object Cluster.Builder builder1 = Cluster.builder();
使用 Cluster.Builder 物件的 addContactPoint() 方法新增聯絡點(節點的 IP 地址)。此方法返回 Cluster.Builder。
//Adding contact point to the Cluster.Builder object Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );
使用新的 builder 物件,建立一個 cluster 物件。為此,您在 Cluster.Builder 類中有一個名為 build() 的方法。使用以下程式碼建立 cluster 物件。
//Building a cluster Cluster cluster = builder.build();
您可以使用一行程式碼構建 cluster 物件,如下所示。
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
步驟 2:建立 Session 物件
如下所示,使用 Cluster 類的 connect() 方法建立 Session 物件的例項。
Session session = cluster.connect( );
此方法建立一個新會話並將其初始化。如果您已經有 keyspace,則可以透過將 KeySpace 名稱以字串格式傳遞給此方法來將其設定為現有 keyspace,如下所示。
Session session = cluster.connect(“Your keyspace name”);
這裡我們使用名為 tp 的 KeySpace。因此,建立會話物件如下所示。
Session session = cluster.connect(“tp”);
步驟 3:執行查詢
您可以使用 Session 類的 execute() 方法執行 CQL 查詢。將查詢以字串格式或作為 Statement 類物件傳遞給 execute() 方法。您以字串格式傳遞給此方法的任何內容都將在 cqlsh 上執行。
在此示例中,我們從 emp 表中檢索資料。將查詢儲存在字串中,並將其傳遞給 session 類的 execute() 方法,如下所示。
String query = ”SELECT 8 FROM emp”; session.execute(query);
使用 Session 類的 execute() 方法執行查詢。
步驟 4:獲取 ResultSet 物件
select 查詢將以 ResultSet 物件的形式返回結果,因此將結果儲存在 RESULTSET 類的物件中,如下所示。
ResultSet result = session.execute( );
以下是從表讀取資料的完整程式。
import com.datastax.driver.core.Cluster; import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Session; public class Read_Data { public static void main(String args[])throws Exception{ //queries String query = "SELECT * FROM emp"; //Creating Cluster object Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build(); //Creating Session object Session session = cluster.connect("tutorialspoint"); //Getting the ResultSet ResultSet result = session.execute(query); System.out.println(result.all()); } }
將上述程式儲存為類名後跟 .java,瀏覽到儲存它的位置。編譯並執行程式,如下所示。
$javac Read_Data.java $java Read_Data
在正常情況下,它應產生以下輸出:
[Row[1, Hyderabad, ram, 9848022338, 50000], Row[2, Delhi, robin, 9848022339, 50000], Row[4, Pune, rajeev, 9848022331, 30000], Row[3, Chennai, rahman, 9848022330, 50000]]