NoSql之旅--Cassandra的Cql简介(二)

安装完Cassandra后我们就开始体验一下这个数据库的查询吧,传统的关系数据库使用的sql进行查询,而Cassandra使用的cql.

cql语法还是很多的,这里不一一详细阐述了,也没这个必要,具体的文档数不胜数,这里只是把最最常用的查询功能列举出来.

首先打开命令行(或是powershell)进入Cassandra安装目录下的bin文件夹,执行cqlsh.bat(powershell下执行cqlsh也ok).这里我进入的是powershell.

//进入cql客户端,powershell中直接用cqlsh登陆即可,cmd和命令行下需要使用cqlsh.bat进入PS D:\apache-cassandra-2.1.7\bin> .\cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.1.7 | CQL spec 3.2.0 | Native protocol v3]
Use HELP for help.
WARNING: pyreadline dependency missing.  Install to enable tab completion.
cqlsh>

先介绍一下keyspace,中文直译为键值空间,实际是一种命名空间的概念,这个和关系数据库中的数据库的地位类似.然后我们查询一下有哪些keyspace:

//显示keyspacecqlsh> describe keyspaces;

mykeyspace  simplex  system_traces  system

结果显示查询到4个keyspace,红字表示部分.然后我们手动自己创建一个keyspace:

//创建keyspacecqlsh> CREATE KEYSPACE IF NOT EXISTS myCas WITH REPLICATION = {‘class‘: ‘SimpleStrategy‘,‘replication_factor‘:1};
cqlsh> describe keyspaces;

mycas  mykeyspace  simplex  system_traces  system

可以看到已经成功创建名字为mycas的keyspace.我们使用刚创建的keyspace:

//选择keyspacecqlsh> use mycas;
cqlsh:mycas>

我们在当前keyspace下创建一个表user,并显示当前keyspace下的所有表:

//创建表cqlsh:mycas> CREATE TABLE user (
                       id int,
                       user_name varchar,
                       PRIMARY KEY (id) );

cqlsh:mycas> describe tables;

user

结果所示,当前keyspace下只有我们刚刚创建的user表.向表中插入一条数据:

//向表中添加数据cqlsh> use mycas;
cqlsh:mycas> INSERT INTO users (id,user_name) VALUES (1,‘zhangsan‘);
cqlsh:mycas> select * from users;

 id | user_name
----+-----------
  1 |  zhangsan

然后我们进行一下简单的条件查询:

//从表中查询数据cqlsh:mycas> select * from users where id=1;

 id | user_name
----+-----------
  1 |  zhangsan

(1 rows)
cqlsh:mycas> select * from users where user_name=‘zhangsan‘;
InvalidRequest: code=2200 [Invalid query] message="No secondary indexes on the restricted columns support the provided o
perators: "

可以看出查询主键可以,但是查询没有索引的user_name却无法查询.

我们创建一个索引后再次尝试:

//创建索引cqlsh:mycas> create index on users(user_name);
cqlsh:mycas> select * from users where user_name=‘zhangsan‘;

 id | user_name
----+-----------
  1 |  zhangsan

试一下更新:

//更新表中数据cqlsh:mycas> update users set user_name=‘lisi‘;
SyntaxException: <ErrorMessage code=2000 [Syntax error in CQL query] message="line 1:33 mismatched input ‘;‘ expecting K
_WHERE">
cqlsh:mycas> update users set user_name=‘lisi‘ where id=1;
cqlsh:mycas> select * from users;

 id | user_name
----+-----------
  1 |      lisi

可以看出只能按照条件进行更新.

试一下删除:

//删除表中数据SyntaxException: <ErrorMessage code=2000 [Syntax error in CQL query] message="line 1:17 mismatched input ‘;‘ expecting K
_WHERE">
cqlsh:mycas> delete from users where id=1;
cqlsh:mycas> select * from users;

 id | user_name
----+-----------

(0 rows)

可以看出删除也只能按照条件进行删除.

更多具体的命令可以参看Cassandra的官方cql文档,非常全面.

时间: 2024-10-29 13:50:14

NoSql之旅--Cassandra的Cql简介(二)的相关文章

NoSql之旅--Cassandra安装篇(一)

有点迷茫了,头脑中只想起来一句话,"那就去学习吧". 我负责的项目中有一部分用到了Cassandra,当时也看过点,但是并没有太深入的了解,既然"学习劲头"正足,那便好好研究一下吧.. 至于Nosql和关系数据库的优劣点这里先不谈,直接进入正题,先来完成Cassandra的安装. 官网:http://cassandra.apache.org/  下载最新稳定版2.1.7,解压我这里放到D盘. 配置环境变量: 以win8为例,鼠标右键点击桌面上的计算机图片,选择属性,

NoSQL Manager for Cassandra 3.2.0.1 带Key

NoSQL Manager for Cassandra 3.2.0.1 是一个Windows平台下Cassandra 数据库的高级管理工具.请低调使用. NoSQLManagerforCassandra3.2.0.1Patch.part1.rar NoSQLManagerforCassandra3.2.0.1Patch.part2.rar 博客园给的上传文件空间总大小100M,已经用完.官方安装包请到群里面下载.

Application简介(二)--重写应用程序的生命周期事件

Application类为应用程序的创建和终止.低可用内存和配置改变了事件处理程序,通过重写以下这些方法,可以为上述几种情况实现自己的应用程序行为: 1.onCreate:在创建应用程序时调用这个方法.可以重写这个方法来实例化应用程序单态,也可以创建和实例化任何应用程序状态变量或共享资源. 2.onLowMemory:这个方法一般只会在后台进程已经终止,但是前台应用程序仍然缺少内存时调用.可以重写这个处理程序来清空缓存或者释放不必要的资源. 3.onTrimMemory:作为onLowMemor

Amazon DynamoDB 简介(二)

在DynamoDB中,database是table的集合,table是item的集合,item是attribute的集合.attribute是name-value对.value可以是单值属性也可以是多值属性(集合).一个item的大小不能超过64KB.理解了这个你就入门了. 另外,DynamoDB为了支持更为丰富的查询,提出了二级索引的思想,可以在表中创建一个或多个二级索引,并对这些索引发出 Query 请求.有两种类型的二级索引: 本地二级索引(Local Secondary Indexes)

Cassandra在CQL语言层面支持多种数据类型

Cassandra在CQL语言层面支持多种数据类型. CQL类型 对应Java类型 描述 ascii String ascii字符串 bigint long 64位整数 blob ByteBuffer/byte[] 二进制数组 boolean boolean 布尔 counter long 计数器,支持原子性的增减,不支持直接赋值 decimal BigDecimal 高精度小数 double double 64位浮点数 float float 32位浮点数 inet InetAddress i

Cassandra查询语言CQL的基本使用

在window环境下运行CQL语言要先安装python环境,在linux下不需要,cassandra内置了python. 1.查看python版本:python --version2.运行pythod:python ./cqlsh 一. CQL定义语句:keyspace:3.查看创建keyspace的相关帮助:help create keyspace;4.创建keyspace:create keyspace ks1 with replication = {'class':'SimpleStrat

SSIS 学习之旅 序章 和 简介

SSIS 学习之旅目录: 第一章: SSIS 学习之旅 第一个SSIS 示例(一) 第二章: SSIS 学习之旅 第一个SSIS 示例(二) 第三章: SSIS 学习之旅 数据同步 第四章: SSIS 学习之旅 FTP文件传输-FTP任务 第五章: SSIS 学习之旅 FTP文件传输-脚本任务 第六章: SSIS 学习之旅 FTP访问类 SSIS是Microsoft SQL Server Integration Services的简称,是生成高性能数据集成解决方案,是Microsoft BI 解

Hibernate框架简介(二)基本使用增、删、改、查

一.Hibernate框架简介 Hibernate是一个优秀的Java持久化层解决方案,是当今主流的对象-关系映射(ORM,ObjectRelationalMapping)工具 1.1.理解持久化 瞬时状态:在程序运行的时候,有些程序数据是保存在内存中,当程序退出后,这些数据就不复存在了,所以称这些数据的状态为瞬时状态 持久状态:在使用一此软件的时候,有些数据,在程序退出后,还以文件等形式保存在硬盘或者数据库中,称这些数据的状态是持久状态 持久化:持久化就是将程序中的数据在瞬时状态和持久状态之间

TCP/IP协议简介(二) 之 链路层介绍

链路层介绍 一.简介 上一节已经介绍过,网络层协议的数据单元是 IP 数据报 ,而数据链路层的工作就是把网络层交下来的 IP 数据报 封装为 帧(frame)发送到链路上,以及把接收到的帧中的数据取出并上交给网络层. 为达到这一目的,数据链路必须具备一系列相应的功能,主要有: 将数据封装为帧(frame),帧是数据链路层的传送单位: 控制帧的传输,包括处理传输差错,调节发送速率与接收方相匹配: 在两个网络实体之间提供数据链路通路的建立.维持和释放的管理. 数据帧的结构是这样的: 二.控制帧的传输