Cassandra 2.1 数据查询语法。

1,官方文档,基本类型

数据查询语言文档:

http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/update_r.html

cql 支持的数据类型:

相对于 MySQL,有几个类型比较有意思,uuid类型,map,list,set类型,这个优化关联查询,直接将List存入一条记录。

CQL Type Constants Description
ascii strings US-ASCII character string
bigint integers 64-bit signed long
blob blobs Arbitrary bytes (no validation), expressed as hexadecimal
boolean booleans true or false
counter integers Distributed counter value (64-bit long)
decimal integers, floats Variable-precision decimal

Java type

double integers 64-bit IEEE-754 floating point

Java type

float integers, floats 32-bit IEEE-754 floating point

Java type

inet strings IP address string in IPv4 or IPv6 format, used by the python-cql driver and CQL native protocols
int integers 32-bit signed integer
list n/a A collection of one or more ordered elements
map n/a A JSON-style array of literals: { literal : literal, literal : literal ... }
set n/a A collection of one or more elements
text strings UTF-8 encoded string
timestamp integers, strings Date plus time, encoded as 8 bytes since epoch
timeuuid uuids Type 1 UUID only
tuple n/a Cassandra 2.1 and later. A group of 2-3 fields.
uuid uuids A UUID in standard UUID format
varchar strings UTF-8 encoded string
varint integers Arbitrary-precision integer

Java type

java支持的数据类型:

CQL type Java type
decimal java.math.BigDecimal
float java.lang.Float
double java.lang.Double
varint java.math.BigInteger

In this topic:

2,查看,创建keyspace,数据表

查看命令和MySQL类似。

desc cluster;

desc keyspaces;

desc keyspace portfoliodemo;

desc tables;

desc table stocks;

创建keyspace: 默认制定SimpleStrategy的副本类型。

Create a keyspace.
cqlsh> CREATE KEYSPACE demodb WITH REPLICATION = { ‘class‘ : ‘SimpleStrategy‘, ‘replication_factor‘ : 1 } AND durable_writes = true;
Use the keyspace.
cqlsh> USE demodb;

创建数据表:

CREATE TABLE users (
  userid uuid PRIMARY KEY,
  first_name text,
  last_name text,
  emails set<text>,
  top_scores list<int>,
  todo map<timestamp, text>,
  create_time timestamp
);

Cassandra 有一个特性就是底层做好分布式了,所以再查询排序的时候限制就比较多。

要按照用户才创建时间倒叙查询,必须再创建表的时候就写好。

CREATE TABLE users (
  userid uuid PRIMARY KEY,
  first_name text,
  last_name text,
  emails set<text>,
  top_scores list<int>,
  todo map<timestamp, text>,
  create_time timestamp
  PRIMARY KEY (userid, create_time)
)
WITH CLUSTERING ORDER BY (create_time DESC);

默认定义的时正序,倒叙需要再定义下,并且把这个字段放入到primary key 里面。

参考:http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/refClstrOrdr.html

更新表结构和mysql类似:

ALTER TABLE users ALTER bio TYPE text;

3,插入数据,更新

和mysq 类似:其中emails是set类型。

INSERT INTO users (userid, first_name, last_name, emails)
  VALUES(cfd66ccc-d857-4e90-b1e5-df98a3d40cd6 , ‘Frodo‘, ‘Baggins‘, {‘[email protected]‘, ‘[email protected]‘});

更新数据,比较特殊的时list,map,set类型:

其他的类似,参考 http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/update_r.html

增加emails数据:使用+
 UPDATE users SET emails = emails + {‘[email protected]‘} WHERE userid = cfd66ccc-d857-4e90-b1e5-df98a3d40cd6;
删除emails数据:使用-
 UPDATE users SET emails = emails - {‘[email protected]‘} WHERE userid = cfd66ccc-d857-4e90-b1e5-df98a3d40cd6;
清空emails数据:使用{}
 UPDATE users SET emails = {} WHERE userid = cfd66ccc-d857-4e90-b1e5-df98a3d40cd6;

4,查询数据

查询数量
SELECT COUNT(*) FROM users;
查询前10条
SELECT * FROM users LIMIT 10 ALLOW FILTERING;
按照token查询
SELECT * FROM users WHERE TOKEN(userid) >= TOKEN(cfd66ccc-d857-4e90-b1e5-df98a3d40cd6);
查询token内容,token只能是primary key。
SELECT TOKEN(userid) FROM users WHERE TOKEN(userid) >= TOKEN(cfd66ccc-d857-4e90-b1e5-df98a3d40cd6);

还支持distinct,in等查询,但不支持关联查询,毕竟不是关系型数据库。

时间: 2024-10-03 08:30:33

Cassandra 2.1 数据查询语法。的相关文章

web day15 数据库概述,MySQL,SQL语句,数据查询语法DQL

数据库管理系统(DBMS)的概述 1. 什么是DBMS:数据的仓库 > 方便查询 > 可存储的数据量大 > 保证数据的完整.一致 > 安全可靠 2. DBMS的发展:今天主流数据库为关系型数据库管理系统(RDBMS 使用表格存储数据) 3. 常见DBMS:Orcale.MySQL.SQL Server.DB2.Sybase 4. DBMS = 管理程序 + 多个数据库(DB) 5. DB = 多个table(不只是table,但这里先不介绍其他组成部分) 6. table的结构(即

MySQL 查询数据:语法及案例剖析

MySQL 查询数据 MySQL 数据库使用SQL SELECT语句来查询数据. 你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过PHP脚本来查询数据. 语法 以下为在MySQL数据库中查询数据通用的 SELECT 语法: SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M] 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查

SharePoint服务器端对象模型 之 使用CAML进展数据查询

SharePoint服务器端对象模型 之 使用CAML进行数据查询 一.概述 在SharePoint的开发应用中,查询是非常常用的一种手段,根据某些筛选.排序条件,获得某个列表或者某一些列表中相应的列表条目的集合. 除去列表上的查询之外,在SharePoint中还大量存在着各种各样的查询,比如针对回收站的SPRecycleBinQuery.针对审计的SPAuditQuery.针对变更的SPChangeQuery等等,不过这些查询在实际项目中使用到的频率并不是很高.本章节还是着重介绍列表查询功能.

6、SQL Server 数据查询

一.使用SELECT检索数据 数据查询是SQL语言的中心内容,SELECT 语句的作用是让数据库服务器根据客户要求检索出所需要的信息资料,并按照规定的格式进行整理,返回给客户端. SELECT 语句的基本结构 [WITH<common_tale_expression>] SELECT select_list [INTO new_table_name] [FROM table_source][where search_condition] [GROUP BY group_by_expressio

数据库 简单的数据查询

简单的数据查询 1.查询的基本结构: select[distinct] */列名 from table 表名 [where condition] [order by] 2.投影的操作:指定查询结果中能够显示的列 语法:select 列名列表 from 表名; (1):选择多列查询,列名之间用“,”隔开 (2):单列时,只单个. (3):若选择所有列,则用*代替. 3.表名前缀:本列无多大意义,但在复杂的多表查询的情况下,很有用. 语法:select 列名表名 from 表名; 4.列别名(as)

我们曾经心碎的数据库之 数据查询基础

第九章  数据查询基础 1.记录集: 记录集是符合查询条件的记录组织在一起的类似于表结构的查询结果 2.使用select语句进行查询 语法: select 列名 from 表名 where 查询条件表达式 order by 排序的列名 [asc或desc] 1.查询所有的数据行和列 select * from students 2.查询部分行和列 select 列名  from 表名 where  查询条件表达式 3.在查询中使用列的别名 select scode as 学生编号,sname a

mysql 基础篇-数据查询(1)

一.查询数据的概念:查询数据.筛选数据.确定数据的以什么样的格式输出. 二.数据查询的基本语句 1.基本语句格式 :select 字段列表  FROM 表或者视图  where 查询条件 2.1 单表查询的内容:查询所有字段.查询指定字段.查询指定记录.查询空值.多条件的查询 对查询结果进行排序. 2.1.1  查询所有字段,通过* 通配符来实现. SELECT * FROM fruits:(*代表所有的表中的字段,fruits是表名) 数据返回的时候按照定义表时候的顺序显示的. 一般不推荐使用

HQL属性查询语法?

上面的HQL:"from Street" ,将取出Steet的所有对象记录,对应的SQL语句为"select * from street"在Hibernate中执行查询的时候,如果实体存在继承关系,将会进行继承关系判定,如:"from Street"将返回所有Street以及Street子类的记录假设:系统中存在Street的两个子类StreetA和StreetB,那么from Street返回的记录将包含这两个子类的所有数据,即使StreetA

Neo4j的查询语法笔记(二)

cypher是neo4j官网提供的声明式查询语言,非常强大,用它可以完成任意的图谱里面的查询过滤,我们知识图谱的一期项目 基本开发完毕,后面会陆续总结学习一下neo4j相关的知识.今天接着上篇文章来看下neo4j的cpyher查询的一些基本概念和语法. 一,Node语法 在cypher里面通过用一对小括号()表示一个节点,它在cypher里面查询形式如下: 1,() 代表匹配任意一个节点 2, (node1) 代表匹配任意一个节点,并给它起了一个别名 3, (:Lable) 代表查询一个类型的数