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
上述语法将从表中删除一些列。
例如:
这是显示删除数据之前当前数据库状态的快照。
这是从表 Student 中删除一行的命令的快照。
Delete from University.Student where rollno=1;
成功执行 CQL Delete 命令后,将从表 Student 中删除 rollno 值为 1 的一行。
这是显示删除数据后的数据库状态的快照。
什么是 Cassandra 不支持
存在以下限制 Cassandra 查询语言(CQL)。
- CQL 不支持 max、min、avg 等聚合查询
- CQL 不支持 group by 和 having 查询。
- CQL 不支持连接。
- CQL 不支持 OR 查询。
- CQL 不支持通配符查询。
- CQL不支持联合、交集查询。
- 如果不创建索引,则无法过滤表列。
- 大于 (>) 和小于 (<) 查询仅在聚类列上受支持。 Cassandra 查询语言不适合分析目的,因为它有太多限制。
Cassandra 条款的地方
In Cassandra,数据检索是一个敏感问题。该列被过滤在 Cassandra 通过在非主键列上创建索引。
句法
Select ColumnNames from KeyspaceName.TableName Where ColumnName1=Column1Value AND ColumnName2=Column2Value AND . . .
例如:
- 下面是显示没有经过数据过滤的从学生表检索数据的快照。
select * from University.Student;
从学生表中检索两条记录。
- 以下快照显示了通过数据过滤从 Student 检索数据的过程。检索到一条记录。
数据按名称列进行过滤。检索所有名称等于 Guru99 的记录。
select * from University. Student where name='Guru99';