Có thể tiếp cận lệnh sử dụng ngôn ngữ truy vấn Cassandra bằng nhiều cách. Các chương trình như Python, Twisted Python… đều đã có các trình điều khiển tương ứng.
Với mục đích quản lí, cách chạy lệnh CQL trực tiếp nhất là thông qua dòng lệnh người dùng dựa trên chương trình Python có tên là cqlsh
Chương trình dòng lệnh CQL (cqlsh)
Giống như ở Apache Cassandra bản 1.0.5 và DataStax Community bản 1.0.1, cqlsh được cài trong $CASSANDRA_HOME/bin/cqlsh hoặc trong /usr/bin/cqlsh
Khi chạy cqlsh, cần cung cấp IP để kết nối đến 1 node Cassandra (mặc định là localhost) và kết nối cổng RPC (mặc định là 9160). VD:
$ cqlsh 103.263.89.126 9160 cqlsh>
Để thoát cqlsh ,gõ exit ở dấu nhắc lệnh.
cqlsh> exit
Chạy các lệnh CQL với cqlsh
Lệnh trong cqlsh là sự kết hợp giữa cú pháp dạng SQL chỉ ra khái niệm và thao tác trong Cassandra.
Sau đây là một số lệnh CQL đơn giản sử dụng cqlsh. Đây là 1 tập hợp lệnh tương tự nhưng không đồng nhất với tập hợp lệnh được miêu tả trong phần đầu của tài liệu này (phần sử dụng cassandra-cli).
Tạo Keyspace
Có thể sử dụng lệnh cqlsh để tạo keyspace:
cqlsh> CREATE KEYSPACE twissandra WITH
strategy_class = 'NetworkTopologyStrategy' AND strategy_options:DC1 = 3;
Tạo Column Family
Trong ví dụ này cqlsh được sử dụng để tạo Column family users trong keyspace mới tạo. Hãy chú ý đến lệnh USE kết nối tới Keyspace Twissandra.
cqlsh> USE twissandra;
cqlsh> CREATE COLUMNFAMILY users ( ... KEY varchar PRIMARY KEY, ... password varchar,
... gender varchar,
... state varchar,
... birth_year bigint);
Chèn và truy hồi cột
Mặc dù việc chèn cột và giá trị cột tự động bằng các chương trình sẽ thực tế hơn, tuy nhiên chúng ta vẫn có thể sử dụng cqlsh cho thao tác này. VD dưới minh hoạ việc sử dụng lệnh để chèn và truy hồi cột trong Column family USER.
cqlsh> INSERT INTO users (KEY, password) VALUES ('jsmith', 'ch@ngem3a') USING TTL 86400;
cqlsh> SELECT * FROM users WHERE KEY='jsmith';
u'jsmith' | u'password',u'ch@ngem3a' | u'ttl', 86400
Thêm cột bằng ALTER COLUMNFAMILY
Lệnh ALTER COLUMNFAMILY giúp thêm cột mới vào 1 Column family. VD, thêm cột coupon_code với loại xác nhận varchar vào Column family users:
cqlsh> ALTER TABLE users ADD coupon_code varchar;
Cột siêu dữ liệu được tạo và được thêm vào sơ đồ Column family nhưng không cập nhật thêm bất kì hàng nào .
Thay đổi siêu cột
Có thể thay đổi loại cột bất kì lúc nào ngay khi đã định nghĩa hoặc thêm cột đó vào 1 Column family. VD, nếu cột coupon_code lưu mã phiếu giảm giá dưới dạng số nguyên thì có thể đổi loại hợp lệ của cột như sau:
cqlsh> ALTER TABLE users ALTER coupon_code TYPE int;
Xác định thời hạn cột bằng TTL
Cả lệnh INSERT và UPDATE đều hỗ trợ cài đặt thời hạn cột (TTL). Nếu muốn kéo dài thời hạn cột chẳng hạn từ 1 ngày lên 5 ngày, có thể sử dụng lệnh UPDATE như sau:
cqlsh> UPDATE users USING TTL 432000 SET 'password' = 'ch@ngem3a' WHERE KEY = 'jsmith';
Loại bỏ siêu cột
Nếu muốn loại bỏ hoàn toàn 1 siêu cột, bao gồm cả tên cột và dạng dữ liệu hợp lệ, có thể sử dụng lệnh ALTER TABLE <columnFamily> DROP <column>. Lệnh sau loại bỏ tên và giá trị hợp lệ trong cột mà không làm ảnh hưởng hay xoá bỏ dữ liệu hiện có:
Sau khi chạy lệnh này, máy khách vẫn có thể chèn thêm cột với tên coupon_code vào Column family users nhưng sẽ không hợp lệ cho đến khi một dạng hợp lệ mới được định nghĩa.
Đặt chỉ số cho cột
cqlsh có thể được sử dụng để tạo chỉ số thứ cấp hoặc chỉ số giá trị. VD tạo chỉ số ở cột state và birth_year trong Column family người dùng:
cqlsh> CREATE INDEX state_key ON users (state);
cqlsh> CREATE INDEX birth_year_key ON users (birth_year);
Do chỉ số thứ cấp được tạo cho cả 2 cột nên giá trị của chúng có thể được truy vấn trực tiếp như sau:
cqlsh> SELECT * FROM users ... WHERE gender='f' AND ... state='TX' AND
... birth_year='1968';
u'user1' | u'birth_year',1968 | u'gender',u'f' | u'password',u'ch@ngem3' | u'state',u'TX'
Xoá cột và dòng
Cqlsh cung cấp lệnh xoá DELETE để xoá cột hoặc hàng. Vd xoá cột người dùng tượng trưng jsmith’s và toàn bộ hàng jsmith’s.
cqlsh> DELETE session_token FROM users where KEY = 'jsmith'; cqlsh> DELETE FROM users where KEY = 'jsmith';
Loại bỏ Column family và keyspace
Có thể loại bỏ Column family và keyspace bằng lệnh cqlsh giống như loại bỏ bảng và dữ liệu ở các mẫu liên quan. VD lệnh loại bỏ Column family users rồi loại bỏ keyspace
twissandra:
cqlsh> DROP COLUMNFAMILY users; cqlsh> DROP KEYSPACE twissandra;