当前位置:   article > 正文

cassandra数据库入门-3_cassandra数据库命令

cassandra数据库命令

创建表


您可以使用命令 CREATE TABLE 创建表。 下面给出了创建表的语法。

句法

CREATE (TABLE | COLUMNFAMILY) <tablename>
('<column-definition>' , '<column-definition>')
(WITH <option> AND <option>)

定义列
您可以定义一个列,如下所示。

column name1 data type,
column name2 data type,

example:

age int,
name text

主键
主键是用于唯一标识一行的列。 因此,在创建表时必须定义主键。 主键由表的一个或多个列组成。 您可以定义表的主键,如下所示。

  1. CREATE TABLE tablename(
  2. column1 name datatype PRIMARYKEY,
  3. column2 name data type,
  4. column3 name data type.
  5. )
  1. CREATE TABLE tablename(
  2. column1 name datatype PRIMARYKEY,
  3. column2 name data type,
  4. column3 name data type,
  5. PRIMARY KEY (column1)
  6. )

例子
下面给出了使用 cqlsh 在 Cassandra 中创建表的示例。 我们在这里 -

使用键空间 tutorialspoint

创建名为 emp 的表

它将包含员工姓名、ID、城市、薪水和电话号码等详细信息。 员工 ID 是主键。

  1. cqlsh> USE tutorialspoint;
  2. cqlsh:tutorialspoint>; CREATE TABLE emp(
  3. emp_id int PRIMARY KEY,
  4. emp_name text,
  5. emp_city text,
  6. emp_sal varint,
  7. emp_phone varint
  8. );

确认
选择语句将为您提供架构。 使用 select 语句验证表,如下所示。

  1. cqlsh:tutorialspoint> select * from emp;
  2. emp_id | emp_city | emp_name | emp_phone | emp_sal
  3. --------+----------+----------+-----------+---------
  4. (0 rows)

在这里您可以观察使用给定列创建的表。 由于我们删除了键空间教程点,您将不会在键空间列表中找到它。

使用 Java API 创建表
您可以使用 Session 类的 execute() 方法创建一个表。 按照下面给出的步骤使用 Java API 创建表。

执行查询
您可以使用 Session 类的 execute() 方法执行 CQL 查询。 将查询以字符串格式或作为 Statement 类对象传递给 execute() 方法。 无论您以字符串格式传递给此方法,都将在 cqlsh 上执行。

在以下示例中,我们将创建一个名为 emp 的表。 您必须将查询存储在字符串变量中并将其传递给 execute() 方法,如下所示。

  1. //Query
  2. String query = "CREATE TABLE emp(emp_id int PRIMARY KEY, "
  3. + "emp_name text, "
  4. + "emp_city text, "
  5. + "emp_sal varint, "
  6. + "emp_phone varint );";
  7. session.execute(query);

全部代码:

  1. import com.datastax.driver.core.Cluster;
  2. import com.datastax.driver.core.Session;
  3. public class Create_Table {
  4. public static void main(String args[]){
  5. //Query
  6. String query = "CREATE TABLE emp(emp_id int PRIMARY KEY, "
  7. + "emp_name text, "
  8. + "emp_city text, "
  9. + "emp_sal varint, "
  10. + "emp_phone varint );";
  11. //Creating Cluster object
  12. Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
  13. //Creating Session object
  14. Session session = cluster.connect("tp");
  15. //Executing the query
  16. session.execute(query);
  17. System.out.println("Table created");
  18. }
  19. }

修改表

您可以使用命令 ALTER TABLE 更改表。 下面给出了创建表的语法。

ALTER (TABLE | COLUMNFAMILY) <tablename> <instruction>

使用 ALTER 命令,您可以执行以下操作 -

添加一列

删除一列

添加列
使用 ALTER 命令,您可以向表中添加一列。 添加列时,您必须注意列名不要与现有列名冲突,并且该表未使用紧凑存储选项定义。 下面给出的是向表中添加列的语法。

ALTER TABLE table name
ADD  new column datatype;

例子

下面给出了向现有表添加列的示例。 这里我们将一个名为 emp_email 的文本数据类型的列添加到名为 emp 的表中。

cqlsh:tutorialspoint> ALTER TABLE emp
   ... ADD emp_email text;

确认

使用 SELECT 语句验证是否添加了该列。 在这里您可以观察到新添加的列 emp_email。

  1. cqlsh:tutorialspoint> select * from emp;
  2. emp_id | emp_city | emp_email | emp_name | emp_phone | emp_sal
  3. --------+----------+-----------+----------+-----------+---------

删除列
使用 ALTER 命令,您可以从表中删除列。 在从表中删除列之前,请检查该表是否未使用紧凑存储选项定义。 下面给出的是使用 ALTER 命令从表中删除列的语法。

ALTER table name
DROP column name;

例子

下面给出了从表中删除列的示例。 这里我们要删除名为 emp_email 的列。

cqlsh:tutorialspoint> ALTER TABLE emp DROP emp_email;

确认

使用 select 语句验证该列是否被删除,如下所示。

  1. cqlsh:tutorialspoint> select * from emp;
  2. emp_id | emp_city | emp_name | emp_phone | emp_sal
  3. --------+----------+----------+-----------+---------
  4. (0 rows)

由于 emp_email 列已被删除,您无法再找到它。

使用 Java API 更改表
您可以使用 Session 类的 execute() 方法创建一个表。 按照下面给出的步骤使用 Java API 更改表。

执行查询
您可以使用 Session 类的 execute() 方法执行 CQL 查询。 将查询以字符串格式或作为 Statement 类对象传递给 execute() 方法。 无论您以字符串格式传递给此方法,都将在 cqlsh 上执行。

在以下示例中,我们将向名为 emp 的表中添加一列。 为此,您必须将查询存储在字符串变量中并将其传递给 execute() 方法,如下所示。

  1. //Query
  2. String query1 = "ALTER TABLE emp ADD emp_email text";
  3. session.execute(query);

全部代码:

  1. import com.datastax.driver.core.Cluster;
  2. import com.datastax.driver.core.Session;
  3. public class Add_column {
  4. public static void main(String args[]){
  5. //Query
  6. String query = "ALTER TABLE emp ADD emp_email text";
  7. //Creating Cluster object
  8. Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
  9. //Creating Session object
  10. Session session = cluster.connect("tp");
  11. //Executing the query
  12. session.execute(query);
  13. System.out.println("Column added");
  14. }
  15. }

 删除列
下面给出了从现有表中删除列的完整程序。

  1. import com.datastax.driver.core.Cluster;
  2. import com.datastax.driver.core.Session;
  3. public class Delete_Column {
  4. public static void main(String args[]){
  5. //Query
  6. String query = "ALTER TABLE emp DROP emp_email;";
  7. //Creating Cluster object
  8. Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
  9. //Creating Session object
  10. Session session = cluster.connect("tp");
  11. //executing the query
  12. session.execute(query);
  13. System.out.println("Column deleted");
  14. }
  15. }

删除表


您可以使用命令 Drop Table 删除表。 其语法如下 -

句法 

DROP TABLE <tablename>

例子
以下代码从 KeySpace 中删除现有表。

cqlsh:tutorialspoint> DROP TABLE emp;

确认
使用 Describe 命令验证表是否被删除。 由于 emp 表已被删除,您将不会在列族列表中找到它。

  1. cqlsh:tutorialspoint> DESCRIBE COLUMNFAMILIES;
  2. employee

使用 Java API 删除表
您可以使用 Session 类的 execute() 方法删除表。 按照下面给出的步骤使用 Java API 删除表。

您可以使用 Session 类的 execute() 方法执行 CQL 查询。 将查询以字符串格式或作为 Statement 类对象传递给 execute() 方法。 无论您以字符串格式传递给此方法,都将在 cqlsh 上执行。

在以下示例中,我们将删除名为 emp 的表。 您必须将查询存储在字符串变量中并将其传递给 execute() 方法,如下所示。

  1. // Query
  2. String query = "DROP TABLE emp1;”;
  3. session.execute(query);

全部代码:

  1. import com.datastax.driver.core.Cluster;
  2. import com.datastax.driver.core.Session;
  3. public class Drop_Table {
  4. public static void main(String args[]){
  5. //Query
  6. String query = "DROP TABLE emp1;";
  7. Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
  8. //Creating Session object
  9. Session session = cluster.connect("tp");
  10. //Executing the query
  11. session.execute(query);
  12. System.out.println("Table dropped");
  13. }
  14. }

清空表

您可以使用 TRUNCATE 命令截断表。 截断表时,表中的所有行都将被永久删除。 下面给出了此命令的语法。

句法

TRUNCATE <tablename>

例子
让我们假设有一个名为 student 的表,其中包含以下数据。

s_ids_names_branchs_aggregate
1ramIT70
2rahmanEEE75
3robbinMech72

当您执行 select 语句以获取表 student 时,它将为您提供以下输出。

  1. cqlsh:tp> select * from student;
  2. s_id | s_aggregate | s_branch | s_name
  3. ------+-------------+----------+--------
  4. 1 | 70 | IT | ram
  5. 2 | 75 | EEE | rahman
  6. 3 | 72 | MECH | robbin
  7. (3 rows)

现在使用 TRUNCATE 命令截断表。

cqlsh:tp> TRUNCATE student;

确认
通过执行 select 语句验证表是否被截断。 下面给出的是截断后 student 表上的 select 语句的输出。

  1. cqlsh:tp> select * from student;
  2. s_id | s_aggregate | s_branch | s_name
  3. ------+-------------+----------+--------
  4. (0 rows)

使用 Java API 截断表
您可以使用 Session 类的 execute() 方法截断表。 按照下面给出的步骤截断表。

您可以使用 Session 类的 execute() 方法执行 CQL 查询。 将查询以字符串格式或作为 Statement 类对象传递给 execute() 方法。 无论您以字符串格式传递给此方法,都将在 cqlsh 上执行。

在以下示例中,我们正在截断名为 emp 的表。 您必须将查询存储在字符串变量中并将其传递给 execute() 方法,如下所示。

  1. //Query
  2. String query = "TRUNCATE emp;;”;
  3. session.execute(query);

全部代码:

  1. import com.datastax.driver.core.Cluster;
  2. import com.datastax.driver.core.Session;
  3. public class Truncate_Table {
  4. public static void main(String args[]){
  5. //Query
  6. String query = "Truncate student;";
  7. //Creating Cluster object
  8. Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
  9. //Creating Session object
  10. Session session = cluster.connect("tp");
  11. //Executing the query
  12. session.execute(query);
  13. System.out.println("Table truncated");
  14. }
  15. }

创建索引

使用 Cqlsh 创建索引
您可以使用 CREATE INDEX 命令在 Cassandra 中创建索引。 其语法如下 -

CREATE INDEX <identifier> ON <tablename>

下面给出了创建列索引的示例。 在这里,我们正在为名为 emp 的表中的列“emp_name”创建索引。

cqlsh:tutorialspoint> CREATE INDEX name ON emp1 (emp_name);

使用 Java API 创建索引
您可以使用 Session 类的 execute() 方法为表的列创建索引。 按照下面给出的步骤为表中的列创建索引。

您可以使用 Session 类的 execute() 方法执行 CQL 查询。 将查询以字符串格式或作为 Statement 类对象传递给 execute() 方法。 无论您以字符串格式传递给此方法,都将在 cqlsh 上执行。

在下面的示例中,我们正在为名为 emp 的表中名为 emp_name 的列创建索引。 您必须将查询存储在字符串变量中并将其传递给 execute() 方法,如下所示。

  1. //Query
  2. String query = "CREATE INDEX name ON emp1 (emp_name);";
  3. session.execute(query);

全部代码:

  1. import com.datastax.driver.core.Cluster;
  2. import com.datastax.driver.core.Session;
  3. public class Create_Index {
  4. public static void main(String args[]){
  5. //Query
  6. String query = "CREATE INDEX name ON emp1 (emp_name);";
  7. Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
  8. //Creating Session object
  9. Session session = cluster.connect("tp");
  10. //Executing the query
  11. session.execute(query);
  12. System.out.println("Index created");
  13. }
  14. }

删除索引


您可以使用命令 DROP INDEX 删除索引。 其语法如下 -

DROP INDEX <identifier>

下面给出了一个删除表中列索引的示例。 这里我们删除表 emp 中列名的索引。

cqlsh:tp> drop index name;

您可以使用 Session 类的 execute() 方法执行 CQL 查询。 将查询以字符串格式或作为 Statement 类对象传递给 execute() 方法。 无论您以字符串格式传递给此方法,都将在 cqlsh 上执行。

在下面的示例中,我们将删除 emp 表的索引“name”。 您必须将查询存储在字符串变量中并将其传递给 execute() 方法,如下所示。

//Query
String query = "DROP INDEX user_name;";
session.execute(query);

全部代码:

  1. import com.datastax.driver.core.Cluster;
  2. import com.datastax.driver.core.Session;
  3. public class Drop_Index {
  4. public static void main(String args[]){
  5. //Query
  6. String query = "DROP INDEX user_name;";
  7. //Creating cluster object
  8. Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();.
  9. //Creating Session object
  10. Session session = cluster.connect("tp");
  11. //Executing the query
  12. session.execute(query);
  13. System.out.println("Index dropped");
  14. }
  15. }

批处理


使用 BATCH,您可以同时执行多个修改语句(插入、更新、删除)。 其语法如下 -

BEGIN BATCH
<insert-stmt>/ <update-stmt>/ <delete-stmt>
APPLY BATCH

例子
假设在 Cassandra 中有一个名为 emp 的表具有以下数据 -

emp_idemp_nameemp_cityemp_phoneemp_sal
1ramHyderabad984802233850000
2robinDelhi984802233950000
3rahmanChennai984802233045000

在此示例中,我们将执行以下操作 -

插入包含以下详细信息的新行 (4, rajeev, pune, 9848022331, 30000)。
将行 ID 为 3 的员工的工资更新为 50000。
删除行 ID 为 2 的员工所在的城市。
要一次性执行上述操作,请使用以下 BATCH 命令 -

  1. cqlsh:tutorialspoint> BEGIN BATCH
  2. ... INSERT INTO emp (emp_id, emp_city, emp_name, emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);
  3. ... UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;
  4. ... DELETE emp_city FROM emp WHERE emp_id = 2;
  5. ... APPLY BATCH;

 确认
进行更改后,使用 SELECT 语句验证表。 它应该产生以下输出 -

  1. cqlsh:tutorialspoint> select * from emp;
  2. emp_id | emp_city | emp_name | emp_phone | emp_sal
  3. --------+-----------+----------+------------+---------
  4. 1 | Hyderabad | ram | 9848022338 | 50000
  5. 2 | null | robin | 9848022339 | 50000
  6. 3 | Chennai | rahman | 9848022330 | 50000
  7. 4 | Pune | rajeev | 9848022331 | 30000
  8. (4 rows)


您可以使用 Session 类的 execute() 方法执行 CQL 查询。 将查询以字符串格式或作为 Statement 类对象传递给 execute() 方法。 无论您以字符串格式传递给此方法,都将在 cqlsh 上执行。

在此示例中,我们将执行以下操作 -

插入包含以下详细信息的新行 (4, rajeev, pune, 9848022331, 30000)。
将行 ID 为 3 的员工的工资更新为 50000。
删除行 ID 为 2 的员工所在的城市。
您必须将查询存储在字符串变量中并将其传递给 execute() 方法,如下所示。

  1. String query1 = ” BEGIN BATCH INSERT INTO emp (emp_id, emp_city, emp_name, emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);
  2. UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;
  3. DELETE emp_city FROM emp WHERE emp_id = 2;
  4. APPLY BATCH;”;
  1. import com.datastax.driver.core.Cluster;
  2. import com.datastax.driver.core.Session;
  3. public class Batch {
  4. public static void main(String args[]){
  5. //query
  6. String query =" BEGIN BATCH INSERT INTO emp (emp_id, emp_city,
  7. emp_name, emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);"
  8. + "UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;"
  9. + "DELETE emp_city FROM emp WHERE emp_id = 2;"
  10. + "APPLY BATCH;";
  11. //Creating Cluster object
  12. Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
  13. //Creating Session object
  14. Session session = cluster.connect("tp");
  15. //Executing the query
  16. session.execute(query);
  17. System.out.println("Changes done");
  18. }
  19. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/126473
推荐阅读
相关标签
  

闽ICP备14008679号