CQL和SQL的CRUD操作比较
数据进行CRUD操作时,CQL语句和SQL语句的异同之处。
1.建表
在此之前先分别创建两张表,插入数据,用来测试然后进行比较
- 在SQL数据库里面创建表

- 在CQL数据库里面创建表

2.CRUD语句比较
- 两者的语法类似,CQL 类似 SQL 查询语法的子集和变种,但cql受数据类型、分布式架构的限制
- 具体CRUD操作
- C(create)
Sql

Cql

1.可以看到在Sql里面插入数据,不加字段名可行但在Cql里面不可行(显示有语法错误,不符合Cql语法)
2.其标准语法格式为
insert into tableName (col1,col2,col3,...) values (v1,v2,v3,...)
- R(retrieve)
Sql



Cql


Cassandra 支持的查询语句很严格,首先 partition key 必须精确查询,不然会出现错误(需要加 Allow Filtering)
需要加 Allow Filtering 的情况
- 缺少 partition key 的等值过滤条件

- 对普通列值过滤

- 范围查询后跟精确查询

要求用allow filtering, 为啥呢 ?官方的解释是:
ALLOW FILTERING will probably become less strict as we collect more statistics on our data. For example, if we knew that 90% of entries have no king we would know that finding 10 such entries should be relatively inexpensive.
加了ALLOW FILTERING 后,cassandra会根据已经创建好的统计表,查询那些NODE 上最有可能有king这个cluster, 然后到最有可能的node上去找满足条件的entries。 如果没有加ALLOW FILTERING , 那就是盲找,这个查询代价非常高。
- U(update)
Sql


Cql
更新数据的语法为
update [keyspace_name.] table_name
[using ttl time_value | using timestamp timestamp_value]
set assignment [,assignment,...]
[if exists | id condition [and condition]];


update语句不能更新主键
其原因在于,因为主键列在底层数据结构中作为行键存储,如果改变行键,则需要遍历所有相关的键值对,并进行更新,这相当于进行了数据查询、数据删除和新行插入,开销可能很大。
- D(delete)
Sql

删除一列数据

Cql


由于Cassandra的每一个逻辑行由多个键值对构成,因此在删除时,既可以选择删除一个逻辑行,也可以只删除该行中的某几个键值对(Sql不能),Sql支持删除整个列。
官网关于删除语句的语法

3.总结
CQL与 SQL 的主要差异:不支持在 select 中使用 as 关键字为列增加别名。只能根据 objectId(where objectId=xxx)和其他条件来更新或者删除某个文档。不支持 join,关联查询提供 include、relatedTo 等
语法来替代(关系查询)。仅支持部分 SQL 函数(内置函数)。不支持 group by、having、max、min、sum、distinct 等分组聚合查询语法。不支持事务。不支持锁。模糊查询的方式不同,sql有like、_、%来进行模糊查询,而cql有一个集合过滤contrains。
Cassandra是基于partition key 的hash分布数据,所以不支持范围查询,允许在partition key 的字段上面利用token 函数来进行查询范围。
CQL和SQL的CRUD操作比较的更多相关文章
- LINQ to SQL的CRUD操作
创建数据对象模型 sqlmetal /code:"C:\MyProjects\VS2008\Data\LinqConsoleApp2\LinqConsoleApp2\northwnd.cs& ...
- 数据库CRUD操作以及MyBatis的配置使用
• 业务字段设计 • 数据库创建 • CRUD操作 • MyBatis集成 • 注解和XML定义 • ViewObject和DateTool • 首页开发 • 业务字段设计 实体: name: ...
- 一、JDBC的概述 二、通过JDBC实现对数据的CRUD操作 三、封装JDBC访问数据的工具类 四、通过JDBC实现登陆和注册 五、防止SQL注入
一.JDBC的概述###<1>概念 JDBC:java database connection ,java数据库连接技术 是java内部提供的一套操作数据库的接口(面向接口编程),实现对数 ...
- 【翻译】MongoDB指南/CRUD操作(二)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...
- MongoDB的CRUD操作
1. 前言 在上一篇文章中,我们介绍了MongoDB.现在,我们来看下如何在MongoDB中进行常规的CRUD操作.毕竟,作为一个存储系统,它的基本功能就是对数据进行增删改查操作. MongoDB中的 ...
- 【Java EE 学习 44】【Hibernate学习第一天】【Hibernate对单表的CRUD操作】
一.Hibernate简介 1.hibernate是对jdbc的二次开发 2.jdbc没有缓存机制,但是hibernate有. 3.hibernate的有点和缺点 (1)优点:有缓存,而且是二级缓存: ...
- 使用MyBatis对表执行CRUD操作
一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...
- MyBatis入门学习教程-使用MyBatis对表执行CRUD操作
上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...
随机推荐
- NOIP模拟21:「Median·Game·Park」
T1:Median 线性筛+桶+随机化(??什么鬼?). 首先,题解一句话秀到了我: 考虑输入如此诡异,其实可以看作随机数据 随机数据?? 这就意味着分布均匀.. 又考虑到w< ...
- Java - 注释、标识符、关键字
背景 要开始磕 Java 了,虽然以前学过用过,但是差不多忘光光了... 现在直接搬狂神的视频素材,不再自己总结,要学的东西太多了... 注释 单行注释 // 多行注释 /* */ 文档注释 /** ...
- 别再自建仓库了,云效Maven仓库不限容量免费用
别再自建仓库了,云效Maven仓库不限容量免费用云效制品仓库 Packages提供maven私有仓库.npm私有仓库.通用制品仓库等企业级私有制品仓库,用于maven.npm等软件包和依赖管理.不限容 ...
- 什么是maven与maven的使用过程(例如在idea创建maven工程(重点讲讲idea创建使用maven管理的web工程,并且部署到tomcat上))
什么是maven与maven的使用过程(例如在idea创建maven工程) (重点讲讲idea创建使用maven管理的web工程项目,并且部署到tomcat服务器上) 一.什么是maven? 1, M ...
- ☕【Java技术指南】「并发编程专题」针对于Guava RateLimiter限流器的入门到精通(含实战开发技巧)
并发编程的三剑客 在开发高并发系统时有三剑客:缓存.降级和限流. 缓存 缓存的目的是提升系统访问速度和增大系统处理容量. 降级 降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题 ...
- idea鼠标双击.log日志文件无法打开
发现只要再mybatis-config.xml的起别名中加<package name="xxx"/>,就会导致Reader entry: ���� 1 n乱码,而R ...
- 字符串出现的topK问题
/** * return topK string * @param strings string字符串一维数组 strings * @param k int整型 the k * @return str ...
- C# Redis学习系列二:Redis基本设置
上一篇:C# Redis学习系列一:Redis的认识.下载.安装.使用 一.redis 设置密码 使用下载好的 redis-cli.exe 指令: 1.设置密码: config set require ...
- Shell条件判断(6)- 多重条件判断
多重条件判断 多个条件判断一起使用 测试选项 作用 判断1 -a 判断2 逻辑与,判断1和判断2都成立,最终的结果才为真 判断1 -o 判断2 逻辑或,判断1和判断2有一个成立,最终的结果就为真 ! ...
- dubbo微服务架构
架构 节点角色说明 调用关系说明 服务容器负责启动,加载,运行服务提供者. 服务提供者在启动时,向注册中心注册自己提供的服务. 服务消费者在启动时,向注册中心订阅自己所需的服务. 注册中心返回服务提供 ...