cassandra數據庫的常用命令

連接cassandra

cqlsh ip地址
cqlsh -u 'cassandra' -p 'cassandra'

查看錶空間

describe keyspaces; 
describe keyspace {keyspace};

使用:

use keyspace;

查看已有表

describe tables;
use table;

查看錶結構

describe table table_name;

Cassandra 提供了三種集合類型,分別是Set,List,Map。

  • Set
CREATE TABLE users (
  user_id text PRIMARY KEY,
  first_name text,
  last_name text,
  emails set<text>
);

//插入數據
INSERT INTO users (user_id, first_name, last_name, emails) VALUES('frodo', 'Frodo', 'Baggins', {'[email protected]', '[email protected]'});

//更新數據
UPDATE users SET emails = emails + {'[email protected]'} WHERE user_id = 'frodo';

//查詢數據
SELECT user_id, emails FROM users WHERE user_id = 'frodo';

//刪除數據
DELETE emails FROM users WHERE user_id = 'frodo';
UPDATE users SET emails = emails - {'[email protected]'} WHERE user_id = 'frodo';
UPDATE users SET emails = {} WHERE user_id = 'frodo'; 
  • List
//添加字段
ALTER TABLE users ADD top_places list<text>;

//增加數據
UPDATE users SET top_places = [ 'rivendell', 'rohan' ] WHERE user_id = 'frodo';
UPDATE users SET top_places = [ 'the shire' ] + top_places WHERE user_id = 'frodo';
UPDATE users SET top_places = top_places + [ 'mordor' ] WHERE user_id = 'frodo';

//更新數據
UPDATE users SET top_places[2] = 'riddermark' WHERE user_id = 'frodo';

//刪除
DELETE top_places[3] FROM users WHERE user_id = 'frodo';
UPDATE users SET top_places = top_places - ['riddermark'] WHERE user_id = 'frodo';
  • Map
ALTER TABLE users ADD todo map<timestamp, text>;

//增加數據(insert省略)
UPDATE users SET todo =
  { '2012-9-24' : 'enter mordor', '2014-10-2 12:00' : 'throw ring into mount doom' } WHERE user_id = 'frodo';
INSERT INTO users (user_id, todo) VALUES ('frodo', { '2013-9-22 12:01' : 'birthday wishes to Bilbo', '2013-10-1 18:00': 'Check into Inn of Pracing Pony'}) ;

//更新數據
UPDATE users SET todo['2014-10-2 12:00'] = 'throw my precious into mount doom' WHERE user_id = 'frodo';
UPDATE users SET todo = todo + { '2013-9-22 12:01' : 'birthday wishes to Bilbo', '2013-10-1 18:00': 'Check into Inn of Pracing Pony'} WHERE user_id='frodo';

//刪除
DELETE todo['2013-9-22 12:01'] FROM users WHERE user_id = 'frodo';
UPDATE users SET todo=todo - {'2013-9-22 12:01','2013-10-01 18:00:00-0700'} WHERE user_id='frodo';
  • 使用TTL
UPDATE users USING TTL <computed_ttl> SET todo['2012-10-1'] = 'find water' WHERE user_id = 'frodo';
INSERT INTO users (user_name, password) VALUES ('cbrown', 'ch@ngem4a') USING TTL 86400;

在設定的computed_ttl數值秒後,數據會自動刪除。

  • 集合添加索引
CREATE INDEX ON users(emails); CREATE INDEX mymapvalues ON users(todo);
DROP INDEX mymapvalues; CREATE INDEX mymapkeys ON playlists (KEYS(todo));
  • 過濾集合中的數據
SELECT user_id FROM users WHERE todo CONTAINS 'birthday wishes to Bilbo';
SELECT user_id FROM users WHERE todo CONTAINS KEY '2013-09-23 12:01:00-0700';

參考文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章