Delete vs Truncate
Ang parehong SQL (Structure Query Language) command, Delete at Truncate ay ginagamit upang alisin ang data na nakaimbak sa mga talahanayan sa isang database. Ang Delete ay isang DML (Data Manipulation Language) na pahayag at inaalis nito ang ilan o lahat ng row ng isang table. Ang 'Where clause' ay ginagamit upang tukuyin ang mga row na kinakailangang tanggalin, at kung ang Where clause ay hindi ginagamit sa Delete statement, inaalis nito ang lahat ng data sa table. Ang Truncate ay isang DDL (Data Definition Language) na pahayag, at inaalis nito ang buong data mula sa talahanayan. Pareho sa mga utos na ito ay hindi sinisira ang istraktura ng talahanayan at ang mga sanggunian sa talahanayan, at ang data lamang ang aalisin kung kinakailangan.
Delete Statement
Ang Delete statement ay nagbibigay-daan sa user na mag-alis ng data mula sa isang umiiral na talahanayan sa isang database batay sa isang tinukoy na kundisyon, at ang 'Saan ang sugnay' ay ginagamit para sa pagtukoy sa kundisyong ito. Ang utos na tanggalin ay tinutukoy bilang isang naka-log na pagpapatupad, dahil tinatanggal lamang nito ang isang hilera sa isang pagkakataon, at nagpapanatili ng isang entry para sa bawat pagtanggal ng hilera sa log ng transaksyon. Kaya, nagiging sanhi ito upang gawing mas mabagal ang operasyon. Ang Delete ay isang DML statement, kaya hindi ito awtomatikong ginagawa habang isinasagawa ang command. Samakatuwid, ang pagpapatakbo ng Tanggalin ay maaaring ibalik upang ma-access muli ang data, kung kinakailangan. Pagkatapos ng execution ng Delete command, dapat itong gawin o i-roll back upang permanenteng i-save ang mga pagbabago. Ang pagtanggal ng pahayag ay hindi nag-aalis ng istraktura ng talahanayan ng talahanayan mula sa database. Hindi rin nito ibinabahagi ang memory space na ginagamit ng talahanayan.
Ang karaniwang syntax para sa Delete command ay nakasaad sa ibaba.
DELETE MULA SA
o
DELETE MULA SA KUNG SAAN
Truncate Statement
Ang Truncate statement ay nag-aalis ng lahat ng data mula sa isang umiiral na talahanayan sa isang database, ngunit pinapanatili nito ang parehong istraktura ng talahanayan, gayundin ang mga hadlang sa integridad, mga pribilehiyo sa pag-access at ang mga kaugnayan sa iba pang mga talahanayan. Kaya, hindi kinakailangan na tukuyin muli ang talahanayan, at maaaring gamitin ang lumang istraktura ng talahanayan, kung nais ng user na muling gamitin ang talahanayan. Inaalis ng Truncate ang buong data sa pamamagitan ng pagde-deallocating sa mga page ng data na ginamit upang panatilihin ang data, at ang mga deallocation ng page na ito lang ang pinananatili sa log ng transaksyon. Samakatuwid, ang truncate command ay gumagamit lamang ng mas kaunting sistema at mga mapagkukunan ng log ng transaksyon para sa operasyon, kaya mas mabilis ito kaysa sa iba pang nauugnay na command. Ang Truncate ay isang DDL na utos, kaya gumagamit ito ng mga auto commitment bago at pagkatapos isagawa ang pahayag. Samakatuwid, hindi maibabalik ng truncate ang data muli sa anumang paraan. Naglalabas ito ng memory space na ginagamit ng talahanayan pagkatapos ng pagpapatupad. Ngunit ang Truncate na pahayag ay hindi mailalapat sa mga talahanayan na isinangguni ng mga dayuhang key na hadlang.
Ang sumusunod ay ang karaniwang syntax para sa Truncate statement.
TRUNCATE TABLE
Ano ang pagkakaiba ng Delete at Truncate?
1. Ang mga command na tanggalin at putulin ay nag-aalis ng data mula sa mga umiiral na talahanayan sa isang database nang hindi nakakasama sa istraktura ng talahanayan o iba pang mga sanggunian sa talahanayan.
2. Gayunpaman, ang Delete command ay maaaring gamitin upang magtanggal ng mga partikular na row lamang sa isang talahanayan gamit ang isang nauugnay na kundisyon, o upang tanggalin ang lahat ng mga row nang walang anumang kundisyon, habang ang Truncate command ay magagamit lamang para sa pagtanggal ng buong data sa talahanayan.
3. Ang Delete ay isang DML command, at maaari nitong ibalik ang operasyon kung kinakailangan, ngunit ang Truncate ay isang DDL command, kaya ito ay isang auto commit statement at hindi maaaring ibalik sa anumang paraan. Kaya mahalagang gamitin nang mabuti ang command na ito sa pamamahala ng database.
4. Ang pagpapatakbo ng Truncate ay gumagamit ng mas kaunting mga mapagkukunan ng system at mga mapagkukunan ng log ng transaksyon kaysa sa pagpapatakbo ng Tanggalin, samakatuwid, ang Truncate ay itinuturing na mas mabilis kaysa sa Tanggalin.
5. Gayundin, ang Delete ay hindi nagdedeallocate ng space na ginagamit ng table, samantalang ang Truncate ay nagpapalaya sa space na ginamit pagkatapos ng execution, kaya ang Delete ay hindi episyente kung sakaling matanggal ang buong data mula sa isang database table.
6. Gayunpaman, hindi pinapayagang gamitin ang Truncate kapag ang talahanayan ay nire-reference ng foreign key constraint, at sa pagkakataong iyon, ang Delete command ay maaaring gamitin sa halip na Truncate.
7. Sa wakas, pareho sa mga command na ito ay may mga pakinabang at disadvantages din sa paglalapat ng mga ito sa Database Management Systems at dapat malaman ng user ang paggamit ng mga command na ito nang naaangkop upang makamit ang magagandang resulta.