cassandra java cql_Cassandra CQL v3.3中文文档(上)

Cassandra Query Language (CQL)v3.3.0

1.Cql语法

1.1.前言

本文档描述了CQL v3。CQL v3与CQL v2不兼容且在很多地方不同。

CQL v3提供了非常类似于SQL的数据模型,数据放在了包含rows和columns的tables中。因此,当使用此文档时,这些内容(tables,rows,columns)与SQL定义相同。但是rows和columns其内部实现的原理不同。

1.2.约定

为了介绍CQL语法,文档使用以下约定:

语言规则使用类BNF符号: ::= TERMINAL 非终结符号。

作为额外的BNF快捷符号,使用传统的正则表达式的符号(?+and*)表示是可选的,and/or可以重复。[]符号表示任意一个。

code块提供了简单codeSELECT sample_usage FROM cql;

1.3. 标识符和关键字

CQL语言使用标识符(或名称)来标识tables,columns和其他对象。一个标识符是一个令牌,与正则表达式一致[a-zA-Z][a-zA-Z0-9_]*。

一些标识符,比如SELECT或WITH,是关键字。他们有固定的意义且被保留的。

标识符和关键字是大小写不敏感的。因此SELECT与select,sElEcT相同。使用的常常约定关键字大写,标识符小写。

1.4.常量

CQL定义了下面类型的常量:strings,integers,floats,booleans,uuids和blobs:

1.5.注释

CQL使用注释:--或//

多行注释:/*   */-- This is a comment

// This is a comment too

/* This is

a multi-line comment */

1.6.语句

SQL语句可以分为3类:DDL:改变和设置数据存储方式

DML:改变数据

Queries:查询数据

所有语句以分号(;)结束,除了单条语句外。支持的语句如下: ::= any quoted or unquoted identifier, excluding reserved keywords

 ::= ( '.')? 

 ::= a string constant

 ::= an integer constant

 ::= a float constant

 ::=  | 

 ::= a uuid constant

 ::= a boolean constant

 ::= a blob constant

 ::=  | | |  | 

 ::= '?' | ':' 

 ::= |  |  |  '(' ( (',' )*)? ')'

 ::= 

 ::= '{' (  ':'  ( ','  ':'  )* )? '}'

 ::= '{' (  ( ','  )* )? '}'

 ::= '[' (  ( ','  )* )? ']'

 ::= 

 ::=  (AND )*

 ::=  '=' (  |  |  )

上面语法在实际中并不是所有的都是合法的。最显著的是,和嵌套在中是不被允许的。

可以是匿名(一个问号?)也可以命名(在:之前的一个标识)。唯一区别就是命名更容易被引用。

用来创建或修改keyspaces和tables。每一个类型可以是simple或map。

用来标识一个table。表示一个表名。

1.7.Prepared Statement

CQL支持prepared statements。

支持LIMIT,TIMESTAMP和TTL从句

2.DDL

2.1.CREATE KEYSPACE

语法: ::= CREATE KEYSPACE (IF NOT EXISTS)?  WITH 

样例:CREATE KEYSPACE Excelsior

WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};

CREATE KEYSPACE Excalibur

WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1' : 1, 'DC2' : 3}

AND durable_writes = false

CREATE KEYSPACE语句用来创建一个新的顶级keyspace。Keyspace是一个命名空间,定义了复制策略和tables的其他选项集合。合法的keyspaces名称是由数字和字母组成的,长度小于32为的标识。注意,keyspace命名是大小写不敏感的。

CREATE KEYSPACE支持的:namekindmandatorydefaultdescription

replicationmapyes复制策略和使用keyspace选项

durable_writessimplenotrue是否使用commit log对于更新keyspace

replication 是必选的。Cassandra支持以下的‘class’‘SimpleStrategy’:一个简单策略,定义了简单的复制因子在整个集群集群中。只支持‘replication_factor’一个子选项,定义复制因子且是必选项。

l‘NetworkTopologyStrategy’:可以为每个数据中心定义单独的复制因子。子选项以key-value方式定义,key表示数据中心名称,value表示此数据中心的复制因子。‘OldNetworkTopologyStrategy’:遗留的复制策略。应该避免使用,而尽量使用‘NetworkTopologyStrategy’。

试图创建一个已经存在的keyspace将返回一个错误,除非使用IF NOT EXISTS选项。如果使用它,语句将是空操作如果keyspace已经存在。

2.2.USE

语法: ::= USE 

样例:USE myApp

USE语句使用已经存在的keyspace名称作为参数,设置此keyspace作为每次连接的当前工作keyspace。

2.3.ALTER KEYSPACE

语法: ::= ALTER KEYSPACE  WITH 

样例:ALTER KEYSPACE Excelsior

WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 4};

ALTERKEYSPACE语句修改keyspace的属性。支持的与CREATE KEYSPACE相同。

2.4.DROP KEYSPACE

语法: ::= DROP KEYSPACE ( IF EXISTS )? 

样例:DROP KEYSPACE myApp;

DROP KEYSPACE语句执行结果是,及时且不可逆的删除keyspace,包括keyspace中的所有column families

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值