עדכון ומחיקה (UPDATE, DELETE)
UPDATE - עדכון נתונים
תחביר בסיסי
UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;
⚠️ זהירות: תמיד השתמשו ב-WHERE! בלעדיו תעדכנו את כל הטבלה!
דוגמאות UPDATE
-- עדכון שדה בודד
UPDATE users
SET status = 'active'
WHERE id = 5;
-- עדכון מספר שדות
UPDATE products
SET price = 99.99, stock = 50
WHERE id = 10;
-- עדכון עם חישוב
UPDATE products
SET price = price * 1.10 -- העלאה של 10%
WHERE category = 'electronics';
-- עדכון לפי תנאי מורכב
UPDATE orders
SET status = 'cancelled'
WHERE status = 'pending'
AND created_at < DATE_SUB(NOW(), INTERVAL 7 DAY);
UPDATE עם JOIN
-- עדכון לפי נתונים מטבלה אחרת
UPDATE orders o
JOIN users u ON o.user_id = u.id
SET o.discount = 10
WHERE u.membership = 'premium';
DELETE - מחיקת נתונים
תחביר בסיסי
DELETE FROM table_name
WHERE condition;
⚠️ זהירות: תמיד השתמשו ב-WHERE! בלעדיו תמחקו את כל הטבלה!
דוגמאות DELETE
-- מחיקת שורה בודדת
DELETE FROM users WHERE id = 5;
-- מחיקת לפי תנאי
DELETE FROM orders
WHERE status = 'cancelled';
-- מחיקת עם LIMIT
DELETE FROM logs
WHERE created_at < '2023-01-01'
LIMIT 1000;
TRUNCATE vs DELETE
| פקודה | מה עושה | מהירות | ניתן לבטל? |
|---|---|---|---|
DELETE FROM table |
מוחק שורות אחת אחת | איטי | כן |
TRUNCATE TABLE table |
מאפס את כל הטבלה | מהיר | לא |
-- מחיקת כל השורות (איטי, עם לוג)
DELETE FROM logs;
-- איפוס הטבלה (מהיר, ללא לוג)
TRUNCATE TABLE logs;
טיפים לבטיחות
-
תמיד SELECT לפני UPDATE/DELETE
-- קודם בדקו מה ייפגע SELECT * FROM users WHERE status = 'inactive'; -- ואז עדכנו/מחקו DELETE FROM users WHERE status = 'inactive'; -
השתמשו ב-LIMIT
DELETE FROM logs WHERE year < 2020 LIMIT 100; -
עבדו בטרנזקציה
START TRANSACTION; DELETE FROM users WHERE id = 5; -- בדקו שהכל בסדר, ואז: COMMIT; -- או ROLLBACK לביטול
← פונקציות צבירה | המשך לטרנזקציות →
בדקו את עצמכם
נסו לענות לבד לפני שאתם פותחים את התשובה.
-
מה יקרה ב-
DELETE FROM users;בלי WHERE?הצגת התשובה
תשובה ד. תמיד בודקים קודם עם SELECT ... WHERE, ואז מוחקים.
-
מה הדרך הבטוחה לפני UPDATE גדול?
הצגת התשובה
תשובה א. בטרנזקציה אפשר לעשות ROLLBACK אם משהו השתבש.