Hizi ni amri za DML (Data Manipulation Language) zinazobadilisha data: INSERT huongeza safu, hubadilisha safu zilizopo, huondoa safu. Tofauti na (ambayo husoma tu), hizi hubadilisha hifadhidata — hivyo zinahitaji uangalifu, hasa kipengele cha .
Hizi ni amri za DML (Data Manipulation Language) zinazobadilisha data: INSERT huongeza safu, hubadilisha safu zilizopo, huondoa safu. Tofauti na (ambayo husoma tu), hizi hubadilisha hifadhidata — hivyo zinahitaji uangalifu, hasa kipengele cha .
UPDATEDELETESELECTWHERE-- insert one row
INSERT INTO users (name, email, age)
VALUES ('Ann', '[email protected]', 30);
-- insert multiple rows at once (efficient)
INSERT INTO users (name, email)
VALUES ('Bob', '[email protected]'), ('Carol', '[email protected]');
-- insert from a query
INSERT INTO archived_users SELECT * FROM users WHERE inactive = true;
Unabainisha safuwima na thamani. Kuingiza safu nyingi katika kauli moja ni yenye ufanisi zaidi kuliko inserts nyingi tofauti.
UPDATE users
SET age = 31, updated_at = NOW() -- set one or more columns
WHERE id = 5; -- ❗ WHICH rows to update
-- ❌ DANGER — no WHERE clause updates EVERY row in the table!
UPDATE users SET active = false; -- sets ALL users inactive 😱
Muhimu: UPDATE (au DELETE) bila kipengele cha WHERE huathiri kila safu katika jedwali. Kusahau WHERE ni hitilafu ya kuangamiza, ya kawaida — daima ikague mara mbili.
DELETE FROM users WHERE id = 5; -- delete a specific row
DELETE FROM users WHERE inactive = true; -- delete matching rows
-- ❌ DANGER — no WHERE deletes the ENTIRE table's contents!
DELETE FROM users;
✓ ALWAYS include a WHERE clause (unless you truly mean to affect all rows)
✓ Test the WHERE first with SELECT (SELECT * WHERE ... → see what you'd affect)
✓ Use TRANSACTIONS (BEGIN ... COMMIT/ROLLBACK) so you can undo mistakes
✓ DELETE vs TRUNCATE: TRUNCATE quickly empties a whole table (faster, but not row-by-row,
can't be rolled back in some DBs, resets auto-increment)
INSERT, UPDATE, na DELETE ndizo jinsi programu zinavyobadilisha data — za msingi kwa programu yoyote inayohifadhi na kubadilisha taarifa (kuunda rekodi, kuhariri, kuondoa), hivyo kuzielewa ni maarifa muhimu ya kila siku pamoja na SELECT.
Kujua jinsi ya kuingiza (moja, nyingi, au kutoka swali), kusasisha (kuweka safuwima), na kufuta safu ni muhimu kwa operesheni zote zinazobadilisha data.
Hoja muhimu zaidi ni hatari ya kipengele cha WHERE kilichokosekana: UPDATE au DELETE bila WHERE huathiri kila safu katika jedwali — hitilafu ya kuangamiza, ya kushangaza kuwa ya kawaida ambayo inaweza kufuta au kuharibu data yote.
Kuelewa hatari hii na mazoea ya usalama (daima jumuisha WHERE, jaribu sharti kwa SELECT kwanza, tumia transactions ili makosa yaweze kurudishwa nyuma) ni maarifa muhimu yanayozuia ajali kubwa za kupoteza data.
Kujua maelezo yanayohusiana (inserts za safu nyingi zenye ufanisi, DELETE dhidi ya TRUNCATE kwa kuondoa jedwali) hukamilisha maarifa ya kivitendo.
Kwa kuwa kubadilisha data ni la msingi kwa programu, na kwa kuwa kosa la WHERE iliyokosekana ni la kuangamiza na la kawaida (sababu ya mara kwa mara ya majanga halisi ya data ya uzalishaji), kufahamu vyema amri hizi za DML — na hasa nidhamu muhimu kuhusu kipengele cha WHERE na usalama wa transactional — ni maarifa ya msingi, ya lazima kujua kwa yeyote anayeandika SQL inayobadilisha data, ambapo viwango vya hatari (upotevu wa data usioweza kurudishwa) hufanya mazoea ya usalama kuwa muhimu kama syntax.