CQL提供了使用Collection數(shù)據(jù)類型的功能。使用這些集合類型,您可以在單個變量中存儲多個值。本章介紹如何在Cassandra中使用Collections。
List用于以下的情況下
您可以使用列表中元素的索引來獲取列表數(shù)據(jù)類型的值。
下面給出了一個創(chuàng)建一個包含兩個列(名稱和電子郵件)的樣本表的示例。要存儲多個電子郵件,我們使用列表。
cqlsh:tutorialspoint> CREATE TABLE data(name text PRIMARY KEY, email list<text>);
在將數(shù)據(jù)插入列表中的元素時,在如下所示的方括號[]中輸入以逗號分隔的所有值。
cqlsh:tutorialspoint> INSERT INTO data(name, email) VALUES ('ramu', ['abc@gmail.com','cba@yahoo.com'])
下面給出了一個在名為data的表中更新列表數(shù)據(jù)類型的示例。在這里,我們正在向列表中添加另一封電子郵件。
cqlsh:tutorialspoint> UPDATE data ... SET email = email +['xyz@tutorialspoint.com'] ... where name = 'ramu';
如果使用SELECT語句驗證表,您將得到以下結(jié)果:
cqlsh:tutorialspoint> SELECT * FROM data; name | email ------+-------------------------------------------------------------- ramu | ['abc@gmail.com', 'cba@yahoo.com', 'xyz@tutorialspoint.com'] (1 rows)
Set是用于存儲一組元素的數(shù)據(jù)類型。集合的元素將按排序順序返回。
以下示例創(chuàng)建一個包含兩個列(名稱和電話)的樣本表。對于存儲多個電話號碼,我們使用集合。
cqlsh:tutorialspoint> CREATE TABLE data2 (name text PRIMARY KEY, phone set<varint>);
在將數(shù)據(jù)插入集合中的元素時,請在花括號{}中輸入逗號分隔的所有值,如下所示。
cqlsh:tutorialspoint> INSERT INTO data2(name, phone)VALUES ('rahman', {9848022338,9848022339});
以下代碼顯示如何更新名為data2的表中的集合。在這里,我們正在添加另一個電話號碼。
cqlsh:tutorialspoint> UPDATE data2 ... SET phone = phone + {9848022330} ... where name = 'rahman';
如果使用SELECT語句驗證表,您將得到以下結(jié)果:
cqlsh:tutorialspoint> SELECT * FROM data2; name | phone --------+-------------------------------------- rahman | {9848022330, 9848022338, 9848022339} (1 rows)
地圖是用于存儲元素的鍵值對的數(shù)據(jù)類型。
以下示例顯示如何創(chuàng)建具有兩個列(名稱和地址)的樣本表。為了存儲多個地址值,我們使用map。
cqlsh:tutorialspoint> CREATE TABLE data3 (name text PRIMARY KEY, address map<timestamp, text>);
在將數(shù)據(jù)插入到地圖中的元素時,輸入所有的鍵:值對,用逗號在逗號之間以逗號分隔,如下所示。
cqlsh:tutorialspoint> INSERT INTO data3 (name, address) VALUES ('robin', {'home' : 'hyderabad' , 'office' : 'Delhi' } );
以下代碼顯示如何在名為data3的表中更新地圖數(shù)據(jù)類型。在這里,我們改變了關(guān)鍵辦公室的價值,也就是說,我們改變一個名為robin的人的辦公地址。
cqlsh:tutorialspoint> UPDATE data3 ... SET address = address+{'office':'mumbai'} ... WHERE name = 'robin';
如果使用SELECT語句驗證表,您將得到以下結(jié)果:
cqlsh:tutorialspoint> select * from data3; name | address -------+------------------------------------------- robin | {'home': 'hyderabad', 'office': 'mumbai'} (1 rows)
更多建議: