Cassandra 查询语言 (CQL):插入、更新(示例)

插入资料

这款 Cassandra 插入语句将数据写入 Cassandra 行形式的列。 Cassandra 插入查询将仅存储用户指定的列。您必须仅指定主键列。

未指定值时不会占用任何空间。插入后不返回任何结果。

句法

Insert into KeyspaceName.TableName(ColumnName1, ColumnName2, ColumnName3 . . . .)
values (Column1Value, Column2Value, Column3Value . . . .)

例如:

这是执行的快照 Cassandra 插入表查询将在表中插入一条记录 Cassandra 表‘学生’。

插入资料

Insert into University.Student(RollNo,Name,dept,Semester) values(2,'Michael','CS', 2);

成功执行命令后插入 Cassandra,将在 Cassandra 表格学生学号为 2、姓名为 Michael、部门为 CS、学期为 2。

这是当前数据库状态的快照。

插入资料

更新插入数据

Cassandra 执行 upsert。Upsert 意味着 Cassandra 如果主键不存在,则插入一行,否则,如果主键已经存在,则更新该行。

更新资料

这款 Cassandra 更新查询用于更新 Cassandra 表。如果更新数据后没有返回结果,则表示数据更新成功,否则将返回错误。列值在'Set'子句中更改,而数据则通过'Where'子句进行过滤。

句法

Update KeyspaceName.TableName 
Set ColumnName1=new Column1Value,
      ColumnName2=new Column2Value,
      ColumnName3=new Column3Value,
       .
       .
       .
Where ColumnName=ColumnValue

例如:

这是显示更新数据之前数据库状态的屏幕截图。

更新资料

这是执行的快照 Cassandra 更新命令,更新学生表中的记录。

更新资料

Update University.Student
Set name='Hayden'
Where rollno=1;

成功执行更新查询后 Cassandra “更新学生”,学生姓名将从“Clark”更改为“Hayden”,学号为 1。

以下是显示更新数据后的数据库状态的屏幕截图。

更新资料

Cassandra 删除资料

命令“Delete”会从 Student 表中删除整行或部分列。删除数据时,不会立即从表中删除。而是用墓碑标记已删除的数据,并在压缩后删除。

句法

Delete from KeyspaceName.TableName
	Where ColumnName1=ColumnValue

以上 Cassandra 删除行语法将根据 where 子句中的数据过滤删除一行或多行。

Delete ColumnNames from KeyspaceName.TableName
	Where ColumnName1=ColumnValue

上述语法将从表中删除一些列。

例如:

这是显示删除数据之前当前数据库状态的快照。

Cassandra 删除资料

这是从表 Student 中删除一行的命令的快照。

Cassandra 删除资料

Delete from University.Student where rollno=1;

成功执行 CQL Delete 命令后,将从表 Student 中删除 rollno 值为 1 的一行。

这是显示删除数据后的数据库状态的快照。

Cassandra 删除资料

什么是 Cassandra 不支持

存在以下限制 Cassandra 查询语言(CQL)。

  1. CQL 不支持 max、min、avg 等聚合查询
  2. CQL 不支持 group by 和 having 查询。
  3. CQL 不支持连接。
  4. CQL 不支持 OR 查询。
  5. CQL 不支持通配符查询。
  6. CQL不支持联合、交集查询。
  7. 如果不创建索引,则无法过滤表列。
  8. 大于 (>) 和小于 (<) 查询仅在聚类列上受支持。 Cassandra 查询语言不适合分析目的,因为它有太多限制。

Cassandra 条款的地方

In Cassandra,数据检索是一个敏感问题。该列被过滤在 Cassandra 通过在非主键列上创建索引。

句法

Select ColumnNames from KeyspaceName.TableName Where ColumnName1=Column1Value AND
	ColumnName2=Column2Value AND
	.
	.
	.

例如:

  • 下面是显示没有经过数据过滤的从学生表检索数据的快照。

Cassandra 条款的地方

select * from University.Student;

从学生表中检索两条记录。

  • 以下快照显示了通过数据过滤从 Student 检索数据的过程。检索到一条记录。

数据按名称列进行过滤。检索所有名称等于 Guru99 的记录。

Cassandra 条款的地方

select * from University. Student where name='Guru99';