在本文中,我们将讨论如何更新 MAP 集合数据类型以及如何更新行、如何删除行以及如何通过使用 UPDATE 子句更新地图集合数据类型来添加行。
首先,我们将创建一个表,让我们考虑 Food_menu 是表名,Order_id、Order_Date、Oreder_cost 和 Menu_items 是字段。我们来看一下。
Create Table Food_menu (
Order_id Int Primary Key,
Order_Date Date,
Order_cost int,
Menu_items MAP
);
现在,使用下面给出的以下 CQL 查询将一些数据插入表中。
INSERT INTO Food_menu (Order_id, Order_Date, Order_cost, Menu_items)
VALUES (2501, '2019-02-13', 800, {'fruit' : 'banana', 'juice' : 'Apple juice'});
INSERT INTO Food_menu (Order_id, Order_Date, Order_cost, Menu_items)
VALUES (2502, '2019-04-23', 200, {'fruit' : 'mango', 'juice' : 'mango juice'});
INSERT INTO Food_menu (Order_id, Order_Date, Order_cost, Menu_items)
VALUES (2503, '2019-02-13', 600, {'fruit' : 'papaya', 'juice' : 'papaya juice'});
现在,让我们看看上述 CQL 查询的输出。
select *
from Food_menu;
输出:
现在,在这里我们将看到如何更新 MAP,我们可以通过使用 (+)运算符以及我们想要添加的任何元素来附加 MAP 集合数据类型,然后在键对值中的 Curley 括号中添加字符串。
我们来看一下。
UPDATE Food_menu
SET Menu_items = Menu_items + {'Extra 10' : 'biscuits'}
WHERE Order_id = 2501;
让我们看看输出,
select *
from Food_menu;
输出:
现在,在这里我们将看到如何使用 TTL 值更新 MAP 集合数据类型。
UPDATE Food_menu
USING TTL 259200
SET Menu_items['beverage'] = 'coffee'
WHERE Order_id = 2502;
让我们看看输出,
输出:
在 CQL 中,我们可以添加一个或多个以逗号分隔的元素来更新地图。我们来看一下。
例如,这也是 CQL 支持的一种直接方法,用于使用包含集合映射的 UPDATE 子句创建新行。
UPDATE Food_menu
SET Menu_items = Menu_items + {'Dry_fruit' : 'Almonds', 'cookies' : 'biscuits'}
WHERE Order_id = 2503;
让我们看看输出,
select *
from Food_menu;
输出:
在 Cassandra 查询语言 (CQL) 中,当我们在更新集合数据类型(如 set 和 map)中删除条目时,我们将用新集合替换元素或键值对,该集合为删除的条目创建墓碑,即使我们知道它们将是条目在新的地图集合或集合中。假设如果您的代码以这些方式更新所有映射和设置集合,那么它会生成许多可能影响系统性能的墓碑,更具体地说,我们可以说可能会减慢系统速度。