跳到主要内容

CQL数据定义语言(DDL)

CQL(Cassandra Query Language)是用于与Apache Cassandra数据库交互的查询语言。CQL的**数据定义语言(DDL)**部分用于定义和管理数据库中的表结构。通过DDL,您可以创建、修改和删除表、索引等数据库对象。

什么是CQL DDL?

CQL DDL是CQL的一个子集,专门用于定义和操作数据库的结构。它允许您创建表、定义列、设置主键、创建索引等。DDL操作不会直接操作数据,而是定义数据的存储方式。

创建表

在CQL中,使用 CREATE TABLE 语句来创建表。表是Cassandra中存储数据的基本单位。每个表由列组成,列定义了表中存储的数据类型。

语法

sql
CREATE TABLE [IF NOT EXISTS] keyspace_name.table_name (
column_name data_type [PRIMARY KEY],
...
);
  • keyspace_name:表所属的键空间(keyspace)。如果省略,则使用当前键空间。
  • table_name:要创建的表的名称。
  • column_name:列的名称。
  • data_type:列的数据类型,例如 textinttimestamp 等。
  • PRIMARY KEY:定义表的主键。主键可以是单列或多列。

示例

假设我们要创建一个名为 users 的表,用于存储用户信息:

sql
CREATE TABLE users (
user_id UUID PRIMARY KEY,
username text,
email text,
created_at timestamp
);

在这个示例中,user_id 是主键,usernameemailcreated_at 是普通列。

修改表

在表创建后,您可能需要修改表结构。CQL提供了 ALTER TABLE 语句来实现这一点。

语法

sql
ALTER TABLE keyspace_name.table_name
ADD column_name data_type;
  • ADD:用于向表中添加新列。

示例

假设我们要向 users 表中添加一个 age 列:

sql
ALTER TABLE users
ADD age int;

删除表

如果不再需要某个表,可以使用 DROP TABLE 语句将其删除。

语法

sql
DROP TABLE [IF EXISTS] keyspace_name.table_name;
  • IF EXISTS:可选参数,用于避免在表不存在时抛出错误。

示例

删除 users 表:

sql
DROP TABLE users;

创建索引

在CQL中,索引用于加速查询。您可以在表的列上创建索引,以便更快地查找数据。

语法

sql
CREATE INDEX [IF NOT EXISTS] index_name
ON keyspace_name.table_name (column_name);
  • index_name:索引的名称。
  • column_name:要在其上创建索引的列。

示例

users 表的 email 列上创建索引:

sql
CREATE INDEX user_email_idx
ON users (email);

实际应用场景

假设您正在开发一个社交媒体应用,需要存储用户信息、帖子内容和评论。您可以使用CQL DDL来定义这些表结构。

示例

sql
CREATE TABLE users (
user_id UUID PRIMARY KEY,
username text,
email text,
created_at timestamp
);

CREATE TABLE posts (
post_id UUID PRIMARY KEY,
user_id UUID,
content text,
created_at timestamp
);

CREATE TABLE comments (
comment_id UUID PRIMARY KEY,
post_id UUID,
user_id UUID,
content text,
created_at timestamp
);

在这个示例中,我们创建了三个表:userspostscomments。每个表都有不同的列,用于存储不同类型的数据。

总结

CQL DDL是管理Cassandra数据库结构的重要工具。通过 CREATE TABLEALTER TABLEDROP TABLECREATE INDEX 等语句,您可以定义和修改数据库中的表结构。掌握这些基本操作是使用Cassandra数据库的关键。

附加资源

练习

  1. 创建一个名为 products 的表,包含 product_idnamepricestock 列。
  2. products 表中添加一个 description 列。
  3. products 表的 name 列上创建索引。
  4. 删除 products 表。

通过完成这些练习,您将更好地理解CQL DDL的使用。