zoukankan      html  css  js  c++  java
  • 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.7in> .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:

    //显示keyspace
    cqlsh> describe keyspaces; mykeyspace simplex system_traces system

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

    //创建keyspace
    cqlsh> 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:

    //选择keyspace
    cqlsh> 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文档,非常全面.

  • 相关阅读:
    springmvc视频学习
    两个数组a和b,都已经升序排列. 查找相同的元素?(要求不使用两层for循环)
    https Java SSL Exception protocol_version
    java多线程笔试题:设计4个线程,其中两个线程每次对j增加1,另外2个线程每次对j减少1.写出程序
    java多线程笔试题:子线程循环10次;接着主线程循环20次,接着又子线程循环10次,接着再回到主线程又循环20次,如此循环50次,请写出程序。
    R语言学习笔记
    重建二叉树-牛客网-剑指offer
    字符串替换空格-牛客网-剑指offer
    二维数组中的查找-牛客网-剑指offer
    牛客网-剑指offer-java版本解答目录(经自测)
  • 原文地址:https://www.cnblogs.com/chyu/p/4635397.html
Copyright © 2011-2022 走看看