2009-07-17 25 views
14

Trong SQL Server, phần chênh lệch giữa haiSự khác biệt giữa bảng thả và bảng xóa trong SQL Server là gì? > Thả để - -

  • Nhấp chuột phải sau trên một đối tượng cơ sở dữ liệu (bảng/view) và lựa chọn bảng Drop (tức là bảng Script như là những gì> New Cửa sổ Trình chỉnh sửa truy vấn)

  • Nhấp chuột phải vào đối tượng cơ sở dữ liệu (bảng/chế độ xem) và chọn Xóa.

Tôi đã thử cả hai và cả hai đều thực hiện cùng một hành động. Bất kỳ lý do gì để có hai lựa chọn cho cùng một điều? Là tùy chọn Xóa chỉ là một cách thô lỗ để bỏ đối tượng DB?

Chỉ dành cho bản ghi - Tôi đang sử dụng SS2008.

+1

Tôi rất tiếc - Chỉ tìm thấy một sự khác biệt. Trong GUI đối tượng xóa, trên đầu trang có một tùy chọn 'script' cung cấp câu lệnh t-sql là câu lệnh bảng thả xuống đơn giản. Trường hợp khi bạn đi cho tùy chọn thả bảng, t-sql được tạo ra sẽ thực hiện thả chỉ khi bảng tồn tại trong bảng sys.objects. Xin lỗi một lần nữa vì đã đặt ra câu hỏi này. Xin hãy tiếp tục và đóng nó lại. – Arnkrishn

Trả lời

1

Trong GUI đối tượng xóa, trên đầu có tùy chọn 'tập lệnh' cung cấp câu lệnh t-sql là câu lệnh bảng thả đơn giản. Trường hợp khi bạn đi cho tùy chọn thả bảng, t-sql được tạo ra sẽ thực hiện thả chỉ khi bảng tồn tại trong bảng sys.objects.

2

Một trong số này thực hiện xóa, phần còn lại cung cấp cho bạn tập lệnh TSQL để xóa để bạn có thể sửa đổi hoặc sử dụng nó ở nơi khác.

+0

vâng, bạn nói đúng :) Tôi chưa xem xét điều này theo cách như vậy - câu trả lời của tôi hướng đến nhiều kết quả hơn, và bạn đã nhận thấy rằng việc tạo ra tuyên bố DROP cho phép thực hiện một số thay đổi thủ công hoặc sao chép sang tập lệnh, ví dụ ... Tôi đang bình chọn cho câu trả lời của bạn, chúc mừng :) –

1

Hai yếu tố đó là cùng một hoạt động. DROP TABLE là câu lệnh SQL cho việc này, Delete là tên lệnh tiêu chuẩn, thân thiện với người dùng và menu. Đó là tất cả.

14

nó là thảbảngxóađối tượng, ít nhất là trong SQL Server 2005. Cả hai thực hiện các hành động tương tự.

Delete tableDrop table không giống nhau. Trước đây sẽ xóa tất cả dữ liệu khỏi bảng trong khi thứ hai sẽ xóa bảng khỏi cơ sở dữ liệu.

0

Nếu bạn chọn Xóa, sau đó chọn để tập lệnh, bạn sẽ thấy rằng nó cũng cung cấp cho bạn một bảng sao kê thả.

1

Bảng thả ... nó sẽ xóa bảng hoàn chỉnh khỏi Database.it không thể truy xuất bak Xóa được sử dụng để xóa dữ liệu khỏi bảng .. dữ liệu có thể được truy xuất bằng ROLL BACK.

26

DROP cũng sẽ xóa tất cả dữ liệu và cấu trúc bảng.

DELETE sẽ xóa dữ liệu nhưng cấu trúc bảng sẽ vẫn giữ nguyên và chúng tôi vẫn có thể khôi phục dữ liệu. Ngoài ra, với DELETE bạn có thể sử dụng điều kiện where tức là chỉ xóa một số bản ghi nhất định.

-1

Chúng tôi có thể xóa bản ghi cụ thể khỏi bảng bằng lệnh xóa. nhưng bằng cách sử dụng thả chúng ta có thể thả các bảng. nếu bạn sử dụng Drop cấu trúc cũng sẽ đi, nhưng nếu bạn sử dụng lệnh delete cấu trúc sẽ không đi.

4

Xóa v/s thả.

  • Xóa câu lệnh thực hiện xóa dựa trên điều kiện, trong khi lệnh thả xóa toàn bộ bản ghi trong bảng.

  • Xóa câu lệnh chỉ xóa các hàng trong bảng và nó giữ nguyên cấu trúc bảng như nhau, và lệnh thả loại bỏ tất cả dữ liệu trong bảng và cấu trúc bảng.

  • Thao tác xóa có thể được cuộn lại và không được tự động cam kết, trong khi thao tác thả không thể được cuộn lại theo bất kỳ cách nào vì đây là tuyên bố được tự động cam kết.

0

Sử dụng hàng lệnh xóa có thể bị xóa khỏi bảng có điều kiện, nhưng thay đổi có thể được thực hiện/hoàn tác bằng cách sử dụng COMMIT và ROLLBACK. Cấu trúc bảng không bao giờ bị mất. Truncate là một thay thế của Delete theo nghĩa là nó cho phép xóa các hàng mà không làm mất cấu trúc bảng nhưng UNLIKE Delete, không thể hoàn tác thao tác. Lệnh thả tuy nhiên, loại bỏ bảng hoàn toàn cùng với cấu trúc của nó từ cơ sở dữ liệu và thao tác này không thể hoàn tác được. Vì vậy, Delete là một câu lệnh DML và Turncate and Drop là các câu lệnh DDL.

0

Bảng thả sẽ xóa nội dung của bảng và bảng tự. Xóa bảng sẽ chỉ xóa nội dung. Cắt ngắn sẽ chỉ 'đặt lại' nội dung về không

0

Một khác biệt lớn là DELETE nó sẽ đi qua/quét tất cả (điều kiện dựa trên vị ngữ) các bản ghi và không xóa. Nhưng khi thả nó sẽ đi qua các bản ghi thay vào đó nó sẽ loại bỏ mục nhập bảng thực tế khỏi cơ sở dữ liệu. Nếu chúng ta nhìn vào kế hoạch thực hiện cho Delete:

enter image description here

Trong trường hợp Drop vì nó là lệnh DDL nó thậm chí sẽ không ghi traverse và sẽ không tạo ra bất kỳ kế hoạch thực hiện.

Các vấn đề liên quan