在SQL中,删除表中的行主要使用DELETE
语句。以下是详细的使用方法和注意事项:
DELETE FROM 表名
WHERE 条件;
-- 删除员工表中工资低于3000的员工记录
DELETE FROM employees
WHERE salary < 3000;
-- 删除customers表中的所有记录
DELETE FROM customers;
WHERE子句非常重要:如果不加WHERE条件,将删除表中的所有数据!
事务控制:
BEGIN TRANSACTION;
DELETE FROM orders WHERE order_date < '2020-01-01';
-- 检查无误后提交
COMMIT;
-- 或者发现问题后回滚
-- ROLLBACK;
性能考虑:
TRUNCATE替代方案:
TRUNCATE TABLE table_name;
外键约束:
-- 删除没有订单的客户
DELETE c
FROM customers c
LEFT JOIN orders o ON c.customer_id = o.customer_id
WHERE o.order_id IS NULL;
-- 删除30天未登录的用户
DELETE FROM users
WHERE user_id IN (
SELECT user_id
FROM user_activity
WHERE last_login < DATE_SUB(NOW(), INTERVAL 30 DAY)
);
希望这些信息对您有所帮助!如有特定数据库系统或更复杂场景的问题,可以进一步探讨。