Cassandra 表示例:创建、修改、删除和截断表

Cassandra 查询语言 (CQL) 的语法类似于 SQL 语言。

如何在 Cassandra 中创建表

Cassandra 中的列族类似于 RDBMS 表。列族用于存储数据。

命令‘Create Table’用于在 Cassandra 中创建列族。

语法

Create table KeyspaceName.TableName
(
ColumnName DataType,
ColumnName DataType,
ColumnName DataType
.
.
.
Primary key(ColumnName)
) with PropertyName=PropertyValue;

1. 主键:主键有两种类型。主键

  • 单一主键:单一主键通过以下语法指定。

语法

Primary key (ColumnName)

在单一主键中,只有一个列。该列也称为分区键。数据基于该列进行分区。数据根据分区键分布在不同的节点上。

2. 复合主键:复合主键通过以下语法指定。

语法

Primary key(ColumnName1,ColumnName2 . . .)

在以上语法中,ColumnName1 是分区键,ColumnName2 是群集键。数据将根据 ColumnName1 进行分区,数据将根据 ColumnName2 进行群集。群集是用于对分区中的数据进行排序的过程。

3. 复合分区键:复合分区键通过以下语法指定。

语法

Primary Key((ColumnName1,ColumnName2),ColumnName3...))

在以上语法中,ColumnName1 和 ColumnName2 是复合分区键。数据将根据 ColumnName1 和 ColumnName2 这两列进行分区,数据将根据 ColumnName3 进行群集。如果单个分区上的数据过多。那么,将使用复合分区键。复合分区键用于为数据创建多个分区。

  • With Clause

“With clause”用于指定已定义表的任何属性及其值。例如,如果您想压缩 Cassandra 表数据。您可以通过在“With clause”中指定压缩算法属性值来设置压缩属性。

示例

以下是命令‘Create table’的执行,它将在‘University’键空间中创建名为‘Student’的表。

Cassandra Create Table

成功执行‘Create table’命令后,‘Student’表将在‘University’键空间中创建,包含 RollNo、Name 和 dept 列。RollNo 是主键。RollNo 也是分区键。所有数据都将放在单个分区中。

Cassandra Alter Table

命令‘Alter Table’用于删除列、添加新列、更改列名、更改列类型以及更改表属性。

语法

以下是命令‘Alter Table’的语法。

Alter table KeyspaceName.TableName  +
Alter ColumnName TYPE ColumnDataype |
Add ColumnName ColumnDataType |
Drop ColumnName |
Rename ColumnName To NewColumnName |
With propertyName=PropertyValue

示例

以下是命令‘Alter Table’的快照,它将在 Student 表中添加新列。

Cassandra Alter table

成功执行‘Alter Table’命令后,将向 Student 表添加一个名为‘Semester’,数据类型为‘int’的新列。

以下屏幕截图显示了更新后的 Student 表。

Cassandra Alter table

Cassandra Drop Table

命令‘Drop table’会从键空间中删除指定的表,包括所有数据。在删除表之前,Cassandra 会将数据的快照作为备份,而不是模式。

语法

Drop Table KeyspaceName.TableName

示例

以下是已执行命令‘Drop Table’的快照,它将从‘University’键空间中删除 Student 表。

Cassandra Drop Table

成功执行‘Drop Table’命令后,Student 表将从 University 键空间中删除。

以下快照显示了 Cassandra 在尝试访问不存在的 Student 表时返回的错误。

Cassandra Drop Table

Cassandra Truncate Table

命令‘Truncate table’会从指定表中删除所有数据。在截断数据之前,Cassandra 会将数据的快照作为备份。

语法

Truncate KeyspaceName.TableName

示例

Student 表中有三条记录。这些是表中的记录。

Cassandra Truncate Table

以下是已执行命令‘Truncate table’的快照,它将从 Student 表中删除所有数据。

Cassandra Truncate Table

成功执行‘Truncate Table’命令后,所有数据将从 Student 表中删除。

以下快照显示了数据库状态,其中 Student 表中没有任何记录。

Cassandra Truncate Table