- vừa được xem lúc

Phân biệt truncate và delete trong sql

0 0 18

Người đăng: Thang Nguyen The

Theo Viblo Asia

  1. DELETE
  • Cú pháp: DELETE FROM table_name WHERE condition;
  • Hoặc nếu muốn xóa cả bảng thì chúng ta có cú pháp: DELETE FROM table_name;
  • Khi chạy lệnh DELETE thì SQL sẽ log lại từng dòng đã xóa vào transaction log, vì thế nên khi bạn tạo 1 record mới, giá trị của id sẽ không bắt đầu từ 1 mà sẽ có giá trị n+1 với n là giá trị của record cuối cùng được tạo.
  • Ví dụ:
  • Chạy lệnh DELETE from products where productCode = 'S10_1678';
  • select * from products where productCode = 'S10_1678';
  • Vậy là giá trị productCode = 'S10_1678' đã bị xóa khỏi DB;
  • Tiếp đến là ví dụ về xóa cả bảng với DELETE
  • delete from products;
  • Và bây giờ bảng đã trống trơn
  1. TRUNCATE
  • Cú pháp: TRUNCATE TABLE table_name;
  • Đối với TRUNCATE chúng ta chỉ có thể dùng cho bảng chứ không thể dùng cho từng record.
  • Khi chạy lệnh TRUNCATE thì SQL sẽ xóa hết dữ liệu của bảng và reset transaction log, vì thế khi tạo 1 record mới, giá trị cua id sẽ bắt đầu từ 1, đây cũng chính là khác biệt lớn nhất của DELETETRUNCATE.
  • Ví dụ
  • Chúng ta sẽ chạy lệnh TRUNCATE table products với bảng ví dụ ở trên
  • Như các bạn có thể thấy bản chất câu lệnh DELETE là xóa từng row khi có 109 rows đã bị tác động còn TRUNCATE đơn giản là xóa cả 1 dữ liệu của 1 bảng không kể số lượng dòng khi có 0 rows đã bị tác động.
  1. 1 vài điều lưu ý
  • TRUNCATE không thể chạy được khi bảng bạn định xóa có foreign_key (nếu bảng đó có foreign_key trỏ đến chính nó thì bạn có thể xóa bình thường)
  • Dữ liệu bị xóa bởi DELETE có thể restored được còn TRUNCATE thì không.
  • Tùy vào từng trường hợp thì bạn sẽ dùng DELETE hoặc TRUNCATE, TRUNCATE sẽ luôn nhanh hơn vì nó tiêu tốn ít bộ nhớ hơn, các bạn có thể cân nhắc điều này khi cần xóa 1 bảng lớn vs nhiều record.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 499

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 374

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 701

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 335

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 420

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 414