SQL DELETE表格
SQL DELETE 是数据操作语言(DML)的一种命令,因此它不会删除或修改表结构,仅删除表中包含的数据。因此,在删除数据后,表中定义的约束、索引或触发器仍然存在。
SQL DELETE TABLE 语句
SQL DELETE TABLE 语句用于从数据库中的表中删除现有记录。如果您只想删除表中特定数量的行,可以使用DELETE语句的WHERE子句。如果省略WHERE子句,则将删除表中的所有行。SQL DELETE语句一次只能操作一个表。
语法
使用SQL DELETE命令的基本语法如下所示:
DELETE FROM table_name;
SQL DELETE TABLE with WHERE Clause
我们可以使用SQL DELETE语句根据WHERE子句中的单个条件从表中删除特定的行。
语法
以下是根据单个条件删除特定行的语法 –
DELETE FROM table_name
WHERE condition;
示例
假设我们已经创建了一个名为CUSTOMERS的表,其中包含客户的个人详细信息,包括姓名、年龄、地址和工资等。
CREATE TABLE CUSTOMERS (
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25),
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
现在使用INSERT语句将值插入到这个表中,方法如下:
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'kaushik', 23, 'Kota', 2000.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Komal', 22, 'MP', 4500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (7, 'Muffy', 24, 'Indore', 10000.00 );
如果您使用以下命令检索上述创建的表的内容: SELECT * FROM CUSTOMERS 您将获得以下输出 –
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Pune | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
现在,让我们尝试删除所有名为’Hardik’的客户,如下面的查询所示 –
DELETE FROM CUSTOMERS WHERE NAME='Hardik';
结果
我们得到以下结果。我们可以观察到已删除了1行。
(1 row affected)
验证
现在,如果您使用 SELECT * FROM CUSTOMERS 命令检索CUSTOMERS表的内容,您将获得以下输出−
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
6 | Komal | 22 | Pune | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
根据多个条件删除特定行
我们也可以使用SQL DELETE TABLE语句来根据多个条件从表中删除特定行,使用WHERE子句。当我们想要从表中删除满足特定条件的一部分行时,这是非常有用的。
在使用多个条件时,我们可以使用比较运算符如AND,OR和NOT来细化我们的条件。这样,只有满足条件的行才会被删除。
语法
以下是根据多个条件删除特定行的基本语法,可以使用AND或OR操作符连接条件−
DELETE FROM table_name
WHERE condition1 AND condition2 OR ... conditionN;
在这里,table_name是我们想要删除行的表的名称,condition1到conditionN是必须满足的条件。可以使用AND或OR运算符将条件连接起来。
示例
在以下查询中,我们试图删除所有名字为“Komal”或地址为“Mumbai”的客户 –
DELETE FROM CUSTOMERS WHERE NAME='Komal' OR ADDRESS='Mumbai';
输出
我们得到了以下结果。我们可以观察到已删除了2行。
(2 row affected)
验证
现在,如果使用 SELECT * FROM CUSTOMERS 命令检索CUSTOMERS表的内容,你将得到以下输出:
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | kaushik | 23 | Kota | 2000.00 |
6 | Komal | 22 | Pune | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
删除表中的所有记录
我们可以使用没有WHERE子句的SQL DELETE TABLE语句来删除SQL中表中的所有记录。该语句将从指定的表中删除所有行,从而有效地将表重置为其原始状态(仅包含结构和约束)。
但是,需要注意的是此操作无法撤销,并且表中的所有数据将被永久删除。
示例
在这里,我们正在尝试从“CUSTOMERS”表中删除所有记录 –
DELETE FROM CUSTOMERS;
输出
执行上述查询后产生的结果如下
(5 rows affected)
验证
现在,如果你使用 SELECT * FROM CUSTOMERS 命令检索CUSTOMERS表的内容,你将得到以下输出-
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|