赞
踩
在上一篇,我们演示了如何基于centos7快速搭建起cassandra的运行环境,以及服务的启动和cql客户端命令行,本篇将基于此环境对cassandra的基础使用做一些总结
1、查看键空间
DESCRIBE keyspaces;
该命令用于展示casandra下的所有的keyspaces(类比mysql的show databases;),casandra的keyspaces和mysql的数据库概念相似,属于从逻辑上区分的物理隔离空间,基于各个keyspaces,管理各自的tables
上图展示出了当前包含的所有和系统相关的keyspaces,如果想进入到某个keyspace下,可以使用, use [keyspace名称]
2、创建keyspace
CREATE KEYSPACE [名称] WITH replication = {‘class’ : ‘SimpleStrategy’,‘replication_factor’ : 3};
class:keyspace的策略类型,默认SimpleStrategy
replication_factor:副本数,默认为1,可以自己指定(类似kafka)
创建完毕之后,可以使用 : DESCRIBE keyspace 进行查看
3、修改keyspace
ALTER KEYSPACE [名称] WITH replication = {‘class’ : ‘SimpleStrategy’,‘replication_factor’ : 3};
比如我们可以将replication_factor从3修改为2
4、删除键空间
DROP KEYSPACE [名称]
5、创建表
类比mysql,当我们创建了一个数据库之后,就可以在这个数据库下创建表了,下面是cassandra的常用数据类型,可供参考
比如在上面的school下,创建一张表,建表sql如下:
CREATE TABLE user(
id int PRIMARY KEY,
name text,
age int,
gender tinyint,
address text,
interest set<text>,
phone list<text>,
education map<text,text>
);
创建完毕后,可以通过: DESCRIBE tables; 查看当前keyspace下的表
也可以通过: DESCRIBE table user; 查看具体的表详情
5、添加表字段和删除表字段
alter table [表名称] add [字段名称] datatype
比如为上表user添加一个email字段
alter table user add email text;
删除表字段
alter table name drop cloumn name
删除email字段
alter table user drop email;
6、删除表和清空表
DROP TABLE <表名称>
清空表数据
truncate <表名称>
1、表插入数据
insert into <表名称>(<col1 name>,<col2 name> ...) values(val1,val2...)
比如为user表添加一条数据
insert into user(id,name,age,gender,address,interest,phone,education) values(1001,'李飞',17,1,'霞飞路13号',{'跑步','羽毛球'},['13321277546','13321277547'],{'小学':'丁庙中小','初中':'黄元中学'});
2、带过期时间的插入数据
cassandra支持插入数据时候设定一个过期时间,只需要在插入语句后面加上TTL关键字进行标识即可,如下所例:
insert into user(id,name,age,gender,address,interest,phone,education) values(1003,'李晓华',16,0,'航空路232号',{'跑步','看书'},['0710-7677856','13121277138'],{'小学':'丁庙中小','初中':'肖云中学'}) USING TTL 30;
可以看到30秒之后,这条数据被自动删除了
3、修改表数据
cassandra和mysql不同的是,被更新的这一列数据如果不存在时,会添加进去
简单更新,对普通列进行更新
比如,更新user表中id 为1001的这条数据
update user set age=16 where id = 1001;
复杂更新,对普集合类型字段进行更新
更新set字段
update user set interest = interest + {'看小说'} where id = 1001;
同样,可以从set集合中删除一个数据
update user set interest = interest - {'跑步'} where id = 1001;
如果删除集合所有元素呢?只需要 set interest = {} 即可
更新list类型字段
update user set phone= ['13825522321'] where id = 1001;
list集合前面加一个数据
update user set phone= ['027-8867678'] + phone where id = 1001;
既然是集合,很容易联想到可以使用下标的方式去修改,这种操作是可以的,但是不推荐,因为数据量大的时候,可能会比较慢
update user set phone[1]= '0717-8867555' where id = 1001;
删除list集合中的某个值
update user set phone =phone - ['0717-8867555'] where id = 1001;
更新map类型字段
直接更新整个字段,进行数据覆盖
update user set education = {'小学':'江陵路1小','初中':'黄元中学'} where id = 1001;
按照key进行更新
update user set education['初中'] = '杭高一中' where id = 1001;
为map追加元素
删除map中的元素
delete education['小学'] from user where id = 1001;
按照key进行更新
update user set education = education - {'高中'} where id = 1001;
4、删除数据行
这个和mysql基本类似
5、批量操作
利用批量操作可以把多次请求合并为一次,减少客户端与服务端的多次IO,对于batch操作来说,针对同一个分区中的key操作,具有隔离性
BEGIN BATCH
<insert> / <update> / <delete>
APPLY BATCH
比如要实现下面的需求
BEGIN BATCH
delete from user where id=1002;
insert into user(id,name,age,gender,address,interest,phone,education) values(1001,'李飞',17,1,'霞飞路13号',{'跑步','羽毛球'},['13321277546','13321277547'],{'小学':'丁庙中小','初中':'黄元中学'});
APPLY BATCH;
小结:本篇主要介绍了cassandra增删改查相关操作常用命令,希望对看到的同学有用,本篇到此结束,最后感谢观看!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。