首页 > 数据库 > > delete 删除表数据
从表中删除行。
执行该语句的用户需要有表的DELETE权限或者DELETE ANY TABLE的系统权限。
DELETE事务提交是默认关闭的。会话退出时,需要显式COMMIT,否则记录将丢失。
DELETE FROM [ schema_name. ]table_name
[ WHERE condition ]
[ ORDER BY { column_name [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ] } [ , ... ] ]
[ LIMIT [ start, ] count
| LIMIT count OFFSET start
| OFFSET start[ LIMIT count ] ]
删除表中与另外一个表匹配的行记录。
DELETE table_ref_list FROM join_table
或
DELETE FROM table_ref_list USING join_table
table_ref_list子句:
[ schema_name.]table_name
join_table 子句:
table_reference [LEFT [OUTER] | RIGHT [OUTER] | INNER ] JOIN table_reference ON conditional_expr
table_reference 子句:
{ [ schema_name. ]table_name [ [AS] alias ]
| [ schema_name. ]view_name [ [AS] alias]
| ( select query ) [ [AS] alias ]
| join_table}
[ schema_name. ]table_name
要删除数据的表的名称。
condition
指定删除数据要满足的条件。
ORDER BY
指定结果集用于排序的字段。
ASC | DESC
指定ORDER BY排序的方向,是升序或降序排序。
NULLS FIRST | NULLS LAST
指定ORDER BY列中NULL值的排序位置, FIRST表示将包含NULL值的行排在最前面, LAST表示将包含NULL值的行排在最后面, 若不指定该选项, ASC默认为NULLS LAST, DESC默认为NULLS FIRST。
start,count
count指定要返回的最大行数,而start指定在返回行之前要跳过的行数。在两者都被指定时,在开始计算要返回的count行之前会跳过start行。
table_ref_list
待删除数据的表,不支持临时表出现在该列表中。
table_reference
查询表、视图、子查询。
join_table
用于关联查询的一组表集合。
LEFT [OUTER] JOIN用于取左表的全集,右表不匹配的,以null值代替。
RIGHT [OUTER] JOIN用于取右表的全集,左表不匹配的,以null值代替。
[INNER] JOIN用于取两表的交集。
conditional_expr
指定两表关联要满足的条件。
table_reference
待删除的数据表子句。
table_name
要删除数据的表的名称。
view_name
视图名称。
select query
子查询作为待删除数据表。
批量删除表training中staff_id和表education中staff_id相同的记录。
--删除表education、training。
DROP TABLE IF EXISTS education;
DROP TABLE IF EXISTS training;
--创建表education、training。
CREATE TABLE education(staff_id INT, first_name VARCHAR(20));
CREATE TABLE training(staff_id INT, first_name VARCHAR(20));
--insert记录。
INSERT INTO education VALUES(1, 'ALICE');
INSERT INTO education VALUES(2, 'BROWN');
INSERT INTO training VALUES(1, 'ALICE');
INSERT INTO training VALUES(1, 'ALICE');
INSERT INTO training VALUES(1, 'ALICE');
INSERT INTO training VALUES(3, 'BOB');
--批量删除表training中staff_id和表education中staff_id相同的记录。
DELETE training FROM education JOIN training ON education.staff_id = training.staff_id;
或者
DELETE FROM training USING education JOIN training ON training.staff_id = education.staff_id;
删除表training中staff_id为10的用户的“INFORMATION SAFETY”培训记录。
--删除表training。
DROP TABLE IF EXISTS training;
--创建表training。
CREATE TABLE training(staff_id INT NOT NULL,course_name CHAR(50),course_start_date DATETIME, course_end_date DATETIME,exam_date DATETIME,score INT);
--向表training中insert记录1。
INSERT INTO training(staff_id,course_name,course_start_date,course_end_date,exam_date,score) VALUES(10,'SQL majorization','2017-06-15 12:00:00','2017-06-20 12:00:00','2017-06-25 12:00:00',90);
--向表training中insert记录2。
INSERT INTO training(staff_id,course_name,course_start_date,course_end_date,exam_date,score) VALUES(10,'INFORMATION SAFETY','2017-06-20 12:00:00','2017-06-25 12:00:00','2017-06-26 12:00:00',95);
--向表training中insert记录3。
INSERT INTO training(staff_id,course_name,course_start_date,course_end_date,exam_date,score) VALUES(10,'MASTER ALL KINDS OF THINKING METHONDS','2017-07-15 12:00:00','2017-07-20 12:00:00','2017-07-25 12:00:00',97);
--删除表training中同时匹配course_name='INFORMATION SAFETY'和staff_id=10的记录。
DELETE FROM training WHERE course_name='INFORMATION SAFETY' AND staff_id=10;
--提交事务。
COMMIT;
删除表training的全部数据。
--删除表training的全部记录。
DELETE FROM training;
--提交事务。
COMMIT;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3130435/ ,如需转载,请注明出处,否则将追究法律责任。