DELETE
更新時間:
DELETE語法用于按行刪除寬表中的數(shù)據(jù)或刪除時序表中指定條件下的時間線。
引擎與版本
語法
delete_statement ::= DELETE FROM table_identifier
WHERE where_clause
where_clause ::= relation ( ( AND | OR ) relation )*
relation ::= ( column_identifier ) operator term
operator ::= '=' | '!=' | IN | CONTAINS | CONTAINS KEY
使用說明
重要
在使用DELETE語句刪除數(shù)據(jù)前,您需要注意以下內(nèi)容。
對于寬表引擎:
DELETE操作是一項高風(fēng)險操作,為了確保數(shù)據(jù)安全,Lindorm對DELETE的語義做了限制。只能使用完整的主鍵來刪除一行數(shù)據(jù),不支持一次性刪除多行數(shù)據(jù)。
刪除操作并非是先讀取再刪除,而是直接寫入刪除標(biāo)記。所以無論被刪除的行是否存在,刪除都會成功。
使用UPSERT寫入數(shù)據(jù)時如果通過HINT將未來時間戳作為數(shù)據(jù)的版本 ,那么執(zhí)行DELETE時,即使DELETE語句執(zhí)行成功,未來時間戳的數(shù)據(jù)也并不會被真正刪除。詳細(xì)介紹,請參見多版本數(shù)據(jù)管理。
對于時序引擎:
DELETE的WHERE條件中只能指定TAG列的過濾條件。
DELETE無法刪除單條具體數(shù)據(jù),只能刪除滿足TAG過濾條件的時間序列中的所有數(shù)據(jù)。
刪除條件(where_clause)
寬表引擎和時序引擎均支持指定刪除條件(where_clause)。
在寬表引擎中,where_clause必須是主鍵列,且過濾條件必須能夠唯一限定一行數(shù)據(jù)。
在時序引擎中,where_clause必須是TAG列,刪除操作會把滿足TAG過濾條件的時間線中所有數(shù)據(jù)全部刪除。
關(guān)系表達式(relation)
使用DELETE語法在時序表中刪除時間線時,指定的column_identifier必須是VARCHAR列(標(biāo)簽列)。
示例
DELETE FROM sensor WHERE p1 = 10 AND p2 = 20;
文檔內(nèi)容是否對您有幫助?