Cassandra - CQL 集合


CQL 提供了使用集合資料型別的功能。使用這些集合型別,您可以在單個變數中儲存多個值。本章介紹如何在 Cassandra 中使用集合。

列表

列表用於以下情況

  • 需要維護元素的順序,以及
  • 需要多次儲存一個值。

您可以使用列表中元素的索引獲取列表資料型別的值。

使用列表建立表

下面是一個建立示例表的例子,該表有兩個列:name 和 email。為了儲存多個電子郵件,我們使用了列表。

cqlsh:tutorialspoint> CREATE TABLE data(name text PRIMARY KEY, email list<text>);

將資料插入列表

在將資料插入列表中的元素時,請在方括號 [ ] 中用逗號分隔所有值,如下所示。

cqlsh:tutorialspoint> INSERT INTO data(name, email) VALUES ('ramu',
['abc@gmail.com','cba@yahoo.com'])

更新列表

下面是一個更新名為 data 表中列表資料型別的示例。這裡我們向列表中添加了另一個電子郵件。

cqlsh:tutorialspoint> UPDATE data
... SET email = email +['xyz@tutorialspoint.com']
... where name = 'ramu';

驗證

如果您使用 SELECT 語句驗證表,您將獲得以下結果:

cqlsh:tutorialspoint> SELECT * FROM data;

 name | email
------+--------------------------------------------------------------
 ramu | ['abc@gmail.com', 'cba@yahoo.com', 'xyz@tutorialspoint.com']

(1 rows)

集合

集合是一種用於儲存一組元素的資料型別。集合的元素將按排序順序返回。

使用集合建立表

以下示例建立了一個示例表,該表有兩個列:name 和 phone。為了儲存多個電話號碼,我們使用了集合。

cqlsh:tutorialspoint> CREATE TABLE data2 (name text PRIMARY KEY, phone set<varint>);

將資料插入集合

在將資料插入集合中的元素時,請在花括號 { } 中用逗號分隔所有值,如下所示。

cqlsh:tutorialspoint> INSERT INTO data2(name, phone)VALUES ('rahman',    {9848022338,9848022339});

更新集合

以下程式碼演示瞭如何更新名為 data2 的表中的集合。這裡我們向集合中添加了另一個電話號碼。

cqlsh:tutorialspoint> UPDATE data2
   ... SET phone = phone + {9848022330}
   ... where name = 'rahman';

驗證

如果您使用 SELECT 語句驗證表,您將獲得以下結果:

cqlsh:tutorialspoint> SELECT * FROM data2;

   name | phone
--------+--------------------------------------
 rahman | {9848022330, 9848022338, 9848022339}

(1 rows)

對映

對映是一種用於儲存元素的鍵值對的資料型別。

使用對映建立表

以下示例演示瞭如何建立一個示例表,該表有兩個列:name 和 address。為了儲存多個地址值,我們使用了對映。

cqlsh:tutorialspoint> CREATE TABLE data3 (name text PRIMARY KEY, address
map<timestamp, text>);

將資料插入對映

在將資料插入對映中的元素時,請在花括號 { } 中用逗號分隔所有 鍵:值 對,如下所示。

cqlsh:tutorialspoint> INSERT INTO data3 (name, address)
   VALUES ('robin', {'home' : 'hyderabad' , 'office' : 'Delhi' } );

更新集合

以下程式碼演示瞭如何更新名為 data3 的表中的對映資料型別。這裡我們更改了鍵 office 的值,即我們更改了名為 robin 的人的辦公地址。

cqlsh:tutorialspoint> UPDATE data3
   ... SET address = address+{'office':'mumbai'}
   ... WHERE name = 'robin';

驗證

如果您使用 SELECT 語句驗證表,您將獲得以下結果:

cqlsh:tutorialspoint> select * from data3;

  name | address
-------+-------------------------------------------
 robin | {'home': 'hyderabad', 'office': 'mumbai'}

(1 rows)
廣告