执行简单的CQL操作

CQL是Cassandra Query Language的缩写,目前作为Cassandra默认并且主要的交互接口。CQL和SQL比较类似,主要的区别是Cassandra不支持join或子查询,除了支持通过Hive进行批处理分析。要说这个Cassandra以前的接口主要是Thrift API,这个没有用过,不做评价。

一、创建keyspace

作为对照,你可以把keyspace理解成一个SQL数据库实例,当然它们毕竟是不同的:Cassandra的keyspace是用来定义数据是如何在节点间复制的。通常情况下,应该为一个应用程序建立一个keyspace。

CREATE KEYSPACE IF NOT EXISTS pimin_net
WITH REPLICATION = {‘class‘: ‘SimpleStrategy‘,‘replication_factor‘:1};

上面语句的意思是判断是否存在keyspace,如果不存在则建立keyspace;使用的复制参数是简单策略,复制因子是1。暂时先不管里面深层次的东西,我们先按照简单原则实现。

二、创建表

虽然说Cassandra是面向列的分布式数据库,但是它也有表的概念。创建之前先use pimin_net。

USE pimin_net;

CREATE TABLE users (
id int,
user_name varchar,
PRIMARY KEY (id) );

这样就建立了一张用户表,为了简单起见,就只有两个字段,看起来和oracle、mysql这些是不是很像?

三、对表的CRUD

已经有了一张用户表,我们就向里面插入一些数据,对它进行查询、更新和删除操作。

INSERT INTO users (id,user_name) VALUES (1,‘china‘);
INSERT INTO users (id,user_name) VALUES (2,‘taiwan‘);
SELECT * FROM users;

结果:

cqlsh:pimin_net> SELECT * FROM users;

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

(0 rows)
cqlsh:pimin_net> INSERT INTO users (id,user_name) VALUES (1,‘china‘);
cqlsh:pimin_net> INSERT INTO users (id,user_name) VALUES (2,‘taiwan‘);
cqlsh:pimin_net> SELECT * FROM users;

 id | user_name
----+-----------
  1 |     china
  2 |    taiwan

(2 rows)
cqlsh:pimin_net>
UPDATE users SET user_name = ‘china2014‘ WHERE id = 1;
SELECT * FROM users;
DELETE FROM users WHERE id = 1;
SELECT * FROM users;

结果:

cqlsh:pimin_net> UPDATE users SET user_name = ‘china2014‘ WHERE id = 1;
cqlsh:pimin_net> SELECT * FROM users;

 id | user_name
----+-----------
  1 | china2014
  2 |    taiwan

(2 rows)
cqlsh:pimin_net> DELETE FROM users WHERE id = 1;
cqlsh:pimin_net> SELECT * FROM users;

 id | user_name
----+-----------
  2 |    taiwan

(1 rows)
cqlsh:pimin_net>

重要:不同于传统的RDBMS,Cassandra不能使用DELETE FROM users;这样的表达式,必须有WHERE条件!

时间: 2024-10-25 05:23:12

执行简单的CQL操作的相关文章

SQL 2005 中查询或执行另外的数据库操作的方法

原文:SQL 2005 中查询或执行另外的数据库操作的方法 摘要: 如果,你想在一台数据库服务器上,查询另一个台数据服务器的数据该如何做呢?如果,你想在同一台数据服务器上,在不同的数据库之间查询数据,又该怎么办呢? 1.Synonym 2.openquery 3.Linked Servers Server Object-->Linked Servers--> serverType 选择 SQL Server, 在 Security 中 选择"Be made using this se

mysql分表场景分析与简单分表操作

为什么要分表 首先要知道什么情况下,才需要分表个人觉得单表记录条数达到百万到千万级别时就要使用分表了,分表的目的就在于此,减小数据库的负担,缩短查询时间. 表分割有两种方式: 1水平分割:根据一列或多列数据的值把数据行放到两个独立的表中. 水平分割通常在下面的情况下使用: 表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询速度. 表中的数据本来就有独立性,例如表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,而另外一些数据不常用. 需要把数据存

学会使用简单的MySQL操作

第十八章 学会使用简单的MySQL操作 在前面两个章节中已经介绍过MySQL的安装了.可是光会安装还不够.还须要会一些主要的相关操作.当然了,关于MySQL的内容也是非常多的.仅仅只是对于linux系统管理员来讲,一些主要的操作已经能够应付日常的管理工作了.至于更高深的那是DBA(专门管理数据库的技术人员)的事情了. [更改mysql数据库root的password] 首次进入数据库是不用password的 /usr/local/mysql/bin/mysql -u root Welcome t

8天掌握EF的Code First开发系列之2 简单的CRUD操作

本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 创建控制台项目 根据.Net中的类来创建数据库 简单的CRUD操作 数据库模式更改介绍 本章小结 本人的实验环境是VS 2012,windows 7,MSSQL Server 2008 R2. 创建控制台项目 1. 新建控制台应用项目 2. 通过NuGet安装Entity Framework 6 根据.Net中的类来创建数据库 上面的步骤之后,我们就可以开始写代码了.在写代码之前,你要始终记得,每个类就是相应

promise简单实现分步操作

刚入前端不到一年,还记得去一家公司面试,当时还没有接触到ES6,更不要说在工作中运用了,对于promise也只是停留在瞄了一眼某文档.当时记得面试官是这样问的,js实现先干完事情1.然后事情2.最后事情3.当时想了一下就用es5事件地狱回调手写了一下这个问题, 123456789 function () { do something1 function step2() { dong something2 function step3 (){ do something3 } }} 当时嘴欠提了一下

T4 生成实体和简单的CRUD操作

<#@ template debug="false" hostspecific="false" language="C#" #> <#@ assembly name="System.Core.dll" #> <#@ assembly name="System.Data.dll" #> <#@ assembly name="System.Data.DataS

listview和简单的记事本操作

listview: 1 //每一列的列名用Columns集合添加 2 ListViewItem lv = new ListViewItem(); 3 lv.Text = s.Code.ToString();//每一行的第一列的项通过text添加 4 lv.SubItems.Add(s.Name);//每一行的其他列的项通过SubItems集合添加 5 lv.SubItems.Add(s.Sex); 6 lv.SubItems.Add(s.Birthday.ToString("yyyy年MM月dd

PHP实现的一个简单的数据库操作类

PHP实现的一个简单的数据库操作类 实现的功能: - 在实例化的时候能设置连接字符集 - 在实例化的时候能连接数据库 - 在实例化的时候能选择默认数据库 - 销毁对象时关闭数据库 代码如下: <?php // 数据库操作类MySQLDB class MySQLDB { // 声明属性 private $server; private $username; private $password; public $default_db; public $link; // 声明构造函数 public f

最简单直接碎片操作,动态增删改(2)

接续文章1的主activity,新增两个按钮一个是删除,一个是恢复然后添加事件,代码如下: @SuppressLint("Recycle") @Override public void onClick(View v) { // TODO Auto-generated method stub FragmentTransaction trx = getSupportFragmentManager() .beginTransaction(); switch (v.getId()) { cas