Delete
delete from table — delete-all and predicate-filtered deletes.
Empties Table
Delete with no where removes every row.
SQL
create table T;
insert into T ({x: 1}, {x: 2}, {x: 3});
delete from T;
select * from T;
Result
[]
Matching Rows
Delete with a predicate removes only matching rows.
SQL
create table T;
insert into T ({x: 1}, {x: 2}, {x: 3});
delete from T where T.x > 1;
select * from T;
Result
[
{ "x": 1 }
]
An Explicit
An explicit as alias binds the predicate's references.
SQL
create table T;
insert into T ({x: 1}, {x: 2}, {x: 3});
delete from T as r where r.x = 2;
select * from T;
Result
[
{ "x": 1 },
{ "x": 3 }
]
Table Unchanged
A predicate that matches nothing leaves the table unchanged.
SQL
create table T;
insert into T ({x: 1}, {x: 2}, {x: 3});
delete from T where T.x > 100;
select * from T;
Result
[
{ "x": 1 },
{ "x": 2 },
{ "x": 3 }
]
Deleting From
Deleting from an empty table succeeds and yields nothing.
SQL
create table T;
delete from T;
select * from T;
Result
[]
Reuses Table
A table is reusable after a delete-all.
SQL
create table T;
insert into T ({x: 1}, {x: 2});
delete from T;
insert into T ({x: 9});
select * from T;
Result
[
{ "x": 9 }
]
Deleting From
Deleting from an undeclared table is a static error.
SQL
create table T;
delete from Ghost;
Expected error: static