IN so với EXISTS – w3seo sự khác biệt của in và Exist trong SQL

Rate this post

Bài viết này giải thích tổng quan đầy đủ về mệnh đề IN và EXISTS. Đây là một IN những câu hỏi phổ biến nhất được hỏi bởi các nhà phát triển, những người viết các truy vấn SQL để lọc các giá trị cụ thể. Sự khác biệt chính giữa chúng là IN chọn một danh sách các giá trị phù hợp, trong khi EXISTS trả về giá trị Boolean TRUE hoặc FALSE. Trước khi thực hiện so sánh, trước tiên chúng ta sẽ biết các mệnh đề SQL này.

Các bài viết liên quan:

Toán tử IN

Toán tử IN được sử dụng để truy xuất kết quả khi giá trị được chỉ định khớp với bất kỳ giá trị nào trong một bộ giá trị hoặc được trả về bởi một truy vấn con. Toán tử này cho phép chúng ta chỉ định nhiều giá trị cùng với mệnh đề WHERE. Nó làm giảm việc sử dụng nhiều điều kiện HOẶC trong các truy vấn CHỌN, CHÈN, CẬP NHẬT và XÓA; đó là lý do tại sao nó còn được gọi là viết tắt cho nhiều điều kiện HOẶC.

Trong toán tử này, truy vấn bên trong thực hiện đầu tiên và kết quả thu được sẽ được truy vấn bên ngoài sử dụng để hiển thị kết quả đầu ra. Cần nhớ rằng truy vấn bên trong chỉ được thực thi một lần. Toán tử IN có cú pháp sau:

Hãy để chúng tôi lấy một ví dụ để hiểu toán tử này. Giả sử chúng ta có một bảng có tên khách hàng chứa dữ liệu sau:

Nếu chúng tôi muốn biết tất cả thông tin chi tiết về khách hàng có nghề nghiệp là bác sĩ, kỹ sư hoặc nhà khoa học, thì chúng tôi có thể sử dụng câu lệnh như sau:

Đây là kết quả:

Toán tử EXISTS

Toán tử EXISTS được sử dụng để kiểm tra sự tồn tại của bất kỳ record nào trong một truy vấn con. Toán tử EXISTS trả về TRUE nếu truy vấn con trả về một hoặc nhiều bản ghi.

Toán tử này trả về TRUE nếu truy vấn con trả về một hoặc nhiều bản ghi. Nếu không, nó cho kết quả FALSE khi không có bản ghi nào được trả về.

Khi toán tử EXISTS phát hiện sự kiện true đầu tiên, nó sẽ tự động kết thúc để xử lý tiếp. Tính năng này nâng cao hiệu quả của truy vấn. Chúng ta có thể sử dụng toán tử EXISTS với các câu lệnh SELECT, UPDATE, DELETE và INSERT. Sau đây là cú pháp của toán tử EXISTS:

Xem thêm Kiểm tra lỗ hổng bảo mật SQL Injection

Hãy để chúng tôi lấy một ví dụ để hiểu toán tử này. Giả sử chúng ta có một bảng có tên khách hàng và đơn đặt hàng chứa dữ liệu sau:

Nếu chúng ta muốn lấy tất cả tên và nghề nghiệp của khách hàng đã đặt ít nhất một đơn hàng, thì chúng ta có thể sử dụng câu lệnh như sau:

Đây là kết quả:

Sự khác biệt chính giữa toán tử IN và EXISTS

Các điểm sau đây giải thích sự khác biệt chính giữa mệnh đề IN và EXISTS:

  • Mệnh đề IN quét tất cả các bản ghi được tìm nạp từ cột truy vấn con đã cho, IN khi mệnh đề EXISTS đánh giá đúng hoặc sai và công cụ SQL sẽ thoát khỏi quá trình quét ngay sau khi nó tìm thấy một kết quả phù hợp.
  • Khi kết quả truy vấn con lớn, toán tử EXISTS cung cấp hiệu suất tốt hơn. Ngược lại, khi kết quả truy vấn phụ nhỏ, toán tử IN nhanh hơn EXISTS.
  • Toán tử IN luôn chọn danh sách giá trị phù hợp, trong khi EXISTS trả về giá trị Boolean TRUE hoặc FALSE.
  • Toán tử EXISTS chỉ có thể được sử dụng với các truy vấn con, trong khi chúng ta có thể sử dụng toán tử IN trên cả hai truy vấn con và giá trị.
  • Mệnh đề EXISTS có thể so sánh mọi thứ với NULL, trong khi mệnh đề IN không thể so sánh bất cứ thứ gì với NULL.
  • Toán tử IN thực hiện đối sánh trực tiếp giữa các cột được chỉ định trước từ khóa IN và kết quả truy vấn con. Ngược lại, toán tử EXISTS không kiểm tra sự phù hợp vì nó chỉ xác minh sự EXISTS của dữ liệu trong một truy vấn con.

Xem thêm 9 function quan trọng trong OpenCV trong computer vision

Biểu đồ so sánh IN và EXISTS

Biểu đồ so sánh sau giải thích sự khác biệt chính của chúng một cách nhanh chóng:

Toán tử IN 

  1. Nó được sử dụng để giảm thiểu nhiều điều kiện OR. 
  2. Nó so sánh các giá trị giữa truy vấn con (truy vấn con) và truy vấn mẹ. 
  3. Nó quét tất cả các giá trị bên trong khối IN. 
  4. Nó có thể trả về TRUE, FALSE hoặc NULL. Do đó, chúng ta có thể sử dụng nó để so sánh các giá trị NULL.
  5. Chúng ta có thể sử dụng nó trên các truy vấn con cũng như với các giá trị. 
  6. Nó thực thi nhanh hơn khi kết quả truy vấn con ít hơn.
  7. Cú pháp sử dụng mệnh đề IN:

Toán tử EXISTS 

  1. Nó được sử dụng để kiểm tra sự EXISTS của dữ liệu trong một truy vấn con. Nói cách khác, nó xác định liệu giá trị có được trả về hay không.
  2. Nó không so sánh các giá trị giữa truy vấn con và truy vấn mẹ.
  3. Nó dừng để thực hiện thêm khi đáp ứng điều kiện tích cực duy nhất.
  4. Nó trả về TRUE hoặc FALSE. Do đó, chúng tôi không thể sử dụng nó để so sánh các giá trị NULL.
  5. Chúng ta chỉ có thể sử dụng nó trên các truy vấn con.
  6. Nó thực thi nhanh hơn khi kết quả truy vấn con lớn. Nó hiệu quả hơn IN vì nó xử lý các giá trị Boolean hơn là các giá trị của chính nó.
  7. Cú pháp sử dụng mệnh đề EXISTS:

Kết luận

Trong bài viết này, chúng tôi đã so sánh giữa toán tử IN và EXISTS. Ở đây, chúng tôi kết luận rằng cả hai mệnh đề đều hoạt động cho cùng một mục đích, nhưng hoạt động bên trong của chúng là khác nhau. Nói cách khác, chúng khác nhau ở cách làm việc hợp lý. Chúng tôi có thể chọn bất kỳ trong số chúng theo yêu cầu của chúng tôi, nhưng nếu chúng tôi có một bảng chứa nhiều bản ghi (dữ liệu lớn), tốt hơn nên sử dụng EXISTS hơn là IN.