CQL数据定义语言(DDL)
CQL(Cassandra Query Language)是用于与Apache Cassandra数据库交互的查询语言。CQL的**数据定义语言(DDL)**部分用于定义和管理数据库中的表结构。通过DDL,您可以创建、修改和删除表、索引等数据库对象。
什么是CQL DDL?
CQL DDL是CQL的一个子集,专门用于定义和操作数据库的结构。它允许您创建表、定义列、设置主键、创建索引等。DDL操作不会直接操作数据,而是定义数据的存储方式。
创建表
在CQL中,使用 CREATE TABLE
语句来创建表。表是Cassandra中存储数据的基本单位。每个表由列组成,列定义了表中存储的数据类型。
语法
CREATE TABLE [IF NOT EXISTS] keyspace_name.table_name (
column_name data_type [PRIMARY KEY],
...
);
keyspace_name
:表所属的键空间(keyspace)。如果省略,则使用当前键空间。table_name
:要创建的表的名称。column_name
:列的名称。data_type
:列的数据类型,例如text
、int
、timestamp
等。PRIMARY KEY
:定义表的主键。主键可以是单列或多列。
示例
假设我们要创建一个名为 users
的表,用于存储用户信息:
CREATE TABLE users (
user_id UUID PRIMARY KEY,
username text,
email text,
created_at timestamp
);
在这个示例中,user_id
是主键,username
、email
和 created_at
是普通列。
修改表
在表创建后,您可能需要修改表结构。CQL提供了 ALTER TABLE
语句来实现这一点。
语法
ALTER TABLE keyspace_name.table_name
ADD column_name data_type;
ADD
:用于向表中添加新列。
示例
假设我们要向 users
表中添加一个 age
列:
ALTER TABLE users
ADD age int;
删除表
如果不再需要某个表,可以使用 DROP TABLE
语句将其删除。
语法
DROP TABLE [IF EXISTS] keyspace_name.table_name;
IF EXISTS
:可选参数,用于避免在表不存在时抛出错误。
示例
删除 users
表:
DROP TABLE users;
创建索引
在CQL中,索引用于加速查询。您可以在表的列上创建索引,以便更快地查找数据。
语法
CREATE INDEX [IF NOT EXISTS] index_name
ON keyspace_name.table_name (column_name);
index_name
:索引的名称。column_name
:要在其上创建索引的列。
示例
在 users
表的 email
列上创建索引:
CREATE INDEX user_email_idx
ON users (email);
实际应用场景
假设您正在开发一个社交媒体应用,需要存储用户信息、帖子内容和评论。您可以使用CQL DDL来定义这些表结构。
示例
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
);
在这个示例中,我们创建了三个表:users
、posts
和 comments
。每个表都有不同的列,用于存储不同类型的数据。
总结
CQL DDL是管理Cassandra数据库结构的重要工具。通过 CREATE TABLE
、ALTER TABLE
、DROP TABLE
和 CREATE INDEX
等语句,您可以定义和修改数据库中的表结构。掌握这些基本操作是使用Cassandra数据库的关键。
附加资源
练习
- 创建一个名为
products
的表,包含product_id
、name
、price
和stock
列。 - 向
products
表中添加一个description
列。 - 在
products
表的name
列上创建索引。 - 删除
products
表。
通过完成这些练习,您将更好地理解CQL DDL的使用。