博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CQL语句
阅读量:5054 次
发布时间:2019-06-12

本文共 5281 字,大约阅读时间需要 17 分钟。

CQL中默认忽略大小写,若需要大小写敏感,可使用双引号将对象包起来,引用的时候也要用双引号包住

tips: 使用CQL需要预装Python环境

Ⅰ、基本知识点

1.1 数据类型

这边和关系型数据库相近的就不列出来了,只列出Cassandra特色的,重要的

CQL类型 常用类型 说明
list(T) n/a 有序集合,T可以是任意分集合CQL数据类型,例如,int,text等
map(K,V) n/a 哈希表,K和V可以是任意非集合CQL数据类型,例如,int,text等
set(T) n/a 无序集合,T可以是任意分集合CQL数据类型,例如,int,text等

1.2 命名规则

字母或数字开头,满足正则表达式[a-zA-Z0-9_]*

1.3 注释

  • 单行注释://或者-
  • 多行注释:/** xxx **/

1.4 关键字和保留字

定义column和keyspace时候不能使用关键字和保留字,一定要用可以使用双引号包起来,但不建议这么用

具体的关键字和保留字见官网表格

Ⅱ、数据定义语句

2.1 KeySpace

语法:create keyspace (if not exists)? 
with
;注意:identifier长度需要小于等于32,默认大小写不敏感,可以使用双引号让它对大小写敏感create keyspace test with replication = {'class':'SimpleStrategy', 'replication_factor': 3} and durable_writes = true;查看当前所有KeySpacedesc keyspaces;查看KeySpace的创建语句desc
;修改KeySpacealter keyspace
with
;切换KeySpaceuse
;删除名为teset的KeySpacedrop keyspace (if exsits)?
;

create keyspace的两个属性

  • replication

复制策略(SimpleStrategy(单一数据中心,测试用),NetworkTopologyStrategy(默认,强烈推荐,方便数据扩展),OldNetworkTopologyStrategy(官方已弃用))

这个属性是强制的,至少包括class属性,其他属性依class改变,replication决定了多节点的情况下,新写入的数据如何在节点之间复制保存
replication_factor属性,他是SimpleStrategy这种策略的一个属性,叫做副本因子,决定了每个row有多少个副本,这个值不可以超过节点数

  • durable_writes

是否使用commit log持久化写入,默认为true

2.2 Column Family

语法:create (table|columnfamily) (if not exists)? 
'('
(','
)*')' (with

column family的属性

接在with后面,了解即可

属性 说明
commnet 对column family的描述信息
bloom_filter_fp_chance 指定bloom_filter算法的容错率,一般设置为0.01或者0.1
caching 设置缓存方案
compactioin 数据压缩策略
compression 数据压缩算法
default_time_to_live 存活时间,单位是秒,默认0(永久存活)
memtable_flush_period_in_ms 内存数据刷新时间间隔
read_repair_chance 0-1之间的数值,与数据一致性有关

注意

  • create table也可以写成create columnfamily,但建议使用前者
  • 可使用if not exists规避错误
  • 名字和keyspace一样不能超过32个字符
  • 可使用create table keyspace.tablename在指定keyspace中创建,不指定则代表在当前keyspace创建

2.3 create index

语法:create (custom)? index (if not exists)? (
)? on
'('
')' (using
(with options=
)?)?; create index idx_name on columnfamily_name(column_name);create index on columnfamily_name(column_name); 给一个默认idx_namecreate index on columnfamily_name(keys(column_name)); 针对map类型column的键值进行索引create custom index on columnfamily_name(column_name) using 'path.to.the.IndexClass';create custom index on columnfamily_name(column_name) using 'path.to.the.IndexClass' with options = {'storage':'/mnt/ssd/indexes'};删除indexdrop index(if exsists)?(
'.')?
;

2.4 create type

语法:create type (if not exists)? 
'('
(','
)*')'; 修改typealter type
;alter type type_name alter zip type varint;alter type type_name add xxx text;alter type type_name rename old_name to new_name and old2_name to new2_name;查看当前所有自定义typedesc types;查看指定type信息desc type type_name;删除typedrop type (if exsists)?
;注意:如果type还在使用,drop会报错

Ⅲ、数据操作语句

3.1 增删改

INSERTinsert into 
'('
(','
)*')'values '('
(','
)*')'(if not exists)?(using

3.2 查询

语法:select 
from
(where
)?(order by
)?(limit
)?(allow filtering)?select column_name from column_family_name where column_name in (xxx,xxx,xxx);select column_name as xxx from column_family_name;select column_name from column_family_name where column_name = 'xxx' and column_name > 'xxx';select count(*) from column_family_name;select count(*) as xxx from column_family_name;

select注意点

  • 可以使用count计算函数,目前唯一一个函数
  • 可以使用limit关键字限制返回行数
  • where中出现的column必须是primary key中的第一个列,或者是建立了索引的column,若两者都不满足,则须在结尾加上allow filtering关键字
  • 通常primary key中指定的第一个column叫parition key,它对数据在节点上的分布起关键作用
  • where中对于类型为set/list的column可以使用contains关键字,对于类型为map的column可以使用contains key关键字,对于partition key可以用in关键字
  • 集合类型不能用作primary key,但是可以create index

转载于:https://www.cnblogs.com/---wunian/p/10763047.html

你可能感兴趣的文章
django创建项目流程
查看>>
Vue 框架-01- 入门篇 图文教程
查看>>
多变量微积分笔记24——空间线积分
查看>>
poi操作oracle数据库导出excel文件
查看>>
(转)Intent的基本使用方法总结
查看>>
Windows Phone开发(24):启动器与选择器之发送短信
查看>>
JS截取字符串常用方法
查看>>
Google非官方的Text To Speech和Speech Recognition的API
查看>>
stdext - A C++ STL Extensions Libary
查看>>
进程间通信系列 之 socket套接字及其实例
查看>>
天气预报插件
查看>>
Unity 游戏框架搭建 (十三) 无需继承的单例的模板
查看>>
模块与包
查看>>
apache服务器中设置目录不可访问
查看>>
嵌入式Linux驱动学习之路(十)字符设备驱动-my_led
查看>>
【NOIP模拟】密码
查看>>
java容器---------手工实现Linkedlist 链表
查看>>
three.js 性能优化的几种方法
查看>>
《梦断代码》读书笔记(三)
查看>>
FreeMarker解析json数据
查看>>