天天看點

CASSANDRA學習筆記 (八) 批處理和CRUD1. List2. Set3. Map

對于正常資料操作語句,我們用例子大緻過一下:

1. BATCH 批處理,就是一次性執行多條語句。

BEGIN BATCH
<insert-stmt>/ <update-stmt>/ <delete-stmt>
APPLY BATCH
           

2. 建立資料

INSERT INTO <tablename>
(<column1 name>, <column2 name>....)
VALUES (<value1>, <value2>....)
USING <option>
           

例子:

INSERT INTO emp (emp_id, emp_name, emp_city,
   emp_phone, emp_sal) VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);
           

3. 更改資料

UPDATE是用于更新表中的資料的指令。在更新表中的資料時使用以下關鍵字:

  • Where - 此子句用于選擇要更新的行。
  • Set - 使用此關鍵字設定值。
  • Must - 包括組成主鍵的所有列。(??)

在更新行時,如果給定行不可用,則UPDATE建立一個新行。下面給出了UPDATE指令的文法:

UPDATE <tablename>
SET <column name> = <new value>
<column name> = <value>....
WHERE <condition>
           

4. 查詢資料

SELECT * FROM emp WHERE emp_sal=50000;      

注意,where語句中可以使用的列需要是有index 或有相應primary key 或 clustering key 的列。

    primary key 隻能用=号和in查詢

    clustering key 支援= > < >= <= 和in

    索引列 隻支援=号和in

5. 删除資料

DELETE FROM <identifier> WHERE <condition>;      

注意:它可以删除一行中的一列,也可以删除一整行。

比如:

cqlsh:tutorialspoint> DELETE emp_sal FROM emp WHERE emp_id=3;
           

就是删除emp_id=3這行的emp_sal這列的值,删完之後這條記錄裡的這個字段變為null。

當然也可以正常地删除一整行:

cqlsh:tutorialspoint> DELETE FROM emp WHERE emp_id=3;
           

補充:

當需要涉及到集合操作時:

1. List

将資料插入清單

在将資料插入清單中的元素時,在如下所示的方括号[]中輸入以逗号分隔的所有值。

cqlsh:tutorialspoint> INSERT INTO data(name, email) VALUES ('ramu',
['[email protected]','[email protected]'])
           

更新清單

下面給出了一個在名為data的表中更新清單資料類型的示例。在這裡,我們正在向清單中添加另一封電子郵件。

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

2. Set

Set是用于存儲一組元素的資料類型。集合的元素将按排序順序傳回。

使用Set建立表

以下示例建立一個包含兩個列(名稱和電話)的樣本表。對于存儲多個電話号碼,我們使用集合。

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)
      

3. Map

地圖是用于存儲元素的鍵值對的資料類型。

使用Map建立表

以下示例顯示如何建立具有兩個列(名稱和位址)的樣本表。為了存儲多個位址值,我們使用map。

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的表中更新地圖資料類型。在這裡,我們改變了關鍵辦公室的價值,也就是說,我們改變一個名為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)