Exists trong SQL là gì? Tìm hiểu về toán tử EXISTS trong SQL Server

Điều kiện exists trong SQL thường được dùng để kết hợp, truy vấn nội bộ. Vậy thì exists trong SQL server là gì? Cách dùng Exists kết hợp với các toán tử khác ra sao? Cùng Comdy tìm hiểu chi tiết trong bài viết này bạn nhé.

Tổng quan về câu lệnh exists trong SQL Server

Tổng quan về câu lệnh exists trong SQL Server
Toán tử EXISTS sql server là một toán tử logic cho phép bạn kiểm tra xem một subquery có trả về bất kỳ bản ghi nào không

Exists trong SQL là gì?

SQL exists là gì? Toán tử EXISTS sql server là một toán tử logic cho phép bạn kiểm tra xem một subquery có trả về bất kỳ bản ghi nào không. Toán tử EXISTS trả về TRUE nếu subquery trả về một hoặc nhiều bản ghi.

Sau đây minh họa cú pháp của hàm exists trong sql Server :

EXISTS ( subquery)

Trong cú pháp này, truy vấn con chỉ là một câu lệnh select exists sql server. Ngay sau khi truy vấn con trả về các bản ghi, toán tử sql EXISTS sẽ trả về TRUE và ngừng xử lý ngay lập tức.

Lưu ý rằng ngay cả khi truy vấn con trả về một giá trị NULL, toán tử EXISTS vẫn trả về TRUE.

Cú pháp if exists trong SQL server

Cú pháp if exists trong SQL server
If exists in sql server thường sử dụng để kiểm tra sự tồn tại của một đối tượng

Cú pháp if exists in sql server thường sử dụng để kiểm tra sự tồn tại của một đối tượng (bảng, cột, hoặc điều kiện) trước khi thực hiện một hành động cụ thể.

Ví dụ kiểm tra sự tồn tại của bảng trong cơ sở dữ liệu:

IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = ‘TenBang’)
DROP TABLE TenBang;

Ví dụ kiểm tra sự tồn tại của cột trong bảng:

IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ‘TenBang’ AND COLUMN_NAME = ‘TenCot’)
ALTER TABLE TenBang DROP COLUMN TenCot;

Ví dụ về toán tử SQL subquery exists

Hãy lấy một số ví dụ để hiểu cách hoạt động của toán tử exists trong oracle hoặc sql:

Sử dụng toán tử sql server với một truy vấn con trả về NULL

Hãy xem bảng customers trong cơ sở dữ liệu mẫu BikeStores. Ví dụ sau đây trả về tất cả các bản ghi từ bảng customers:

SELECT
    customer_id,
    first_name,
    last_name
FROM
    sales.customers
WHERE
    EXISTS (SELECT NULL)
ORDER BY
    first_name,
    last_name;

Trong ví dụ này, truy vấn con trả về một tập hợp kết quả có chứa  NULL, nhưng do toán tử EXISTS trả về TRUE. Do đó, toàn bộ truy vấn trả về tất cả các bản ghi từ bảng customers.

Sử dụng toán tử EXISTS với một subquery tương quan

Hãy xem bảng customers và orders trong cơ sở dữ liệu mẫu BikeStores. Ví dụ sau đây tìm tất cả những khách hàng đã đặt nhiều hơn hai đơn hàng:

SELECT
    customer_id,
    first_name,
    last_name
FROM
    sales.customers c
WHERE
    EXISTS (
        SELECT
            COUNT (*)
        FROM
            sales.orders o
        WHERE
            customer_id = c.customer_id
        GROUP BY
            customer_id
        HAVING
            COUNT (*) > 2
    )
ORDER BY
    first_name,
    last_name

Trong ví dụ này, chúng tôi có một subquery tương quan trả về những khách hàng đặt nhiều hơn hai đơn đặt hàng. Nếu số lượng đơn đặt hàng do khách hàng đặt ít hơn hoặc bằng hai, truy vấn con trả về tập kết quả trống khiến toán tử EXISTS trả về FALSE.

Dựa trên kết quả của toán tử EXISTS, khách hàng sẽ được đưa vào bộ kết quả trả về.

Toán tử EXISTS so với toán tử IN

Toán tử EXISTS so với toán tử IN
Ví dụ về toán tử EXISTS so với toán tử IN

Câu lệnh sau sử dụng toán tử IN để tìm đơn đặt hàng của khách hàng từ San Jose:

SELECT
    *
FROM
    sales.orders
WHERE
    customer_id IN (
        SELECT
            customer_id
        FROM
            sales.customers
        WHERE
            city = 'San Jose'
    )
ORDER BY
    customer_id,
    order_date;

Câu lệnh sau sử dụng toán tử EXISTS trả về cùng một kết quả:

SELECT
    *
FROM
    sales.orders o
WHERE
    EXISTS (
        SELECT
            customer_id
        FROM
            sales.customers c
        WHERE
            o.customer_id = c.customer_id
        AND city = 'San Jose'
    )
ORDER BY
    o.customer_id,
    order_date;

Ví dụ về câu lệnh not exists trong SQL

Ví dụ về câu lệnh not exists trong SQL
Câu lệnh NOT EXISTS trong SQL thường được sử dụng để kiểm tra xem một điều kiện cụ thể không tồn tại trong một tập hợp dữ liệu hay không

Ví dụ qua cú pháp where exists trong sql:

Giả sử chúng ta muốn thêm một bản ghi mới vào bảng “Products” chỉ khi không có sản phẩm nào có cùng tên đã tồn tại trong bảng. Chúng ta có thể sử dụng NOT EXISTS để kiểm tra điều kiện này.

INSERT INTO Products (ProductName, Price)
VALUES (‘TenSanPhamMoi’, 50)
WHERE NOT EXISTS (SELECT 1 FROM Products WHERE ProductName = ‘TenSanPhamMoi’);

Toán tử exists so với mệnh đề JOIN

Toán tử EXISTS trả về TRUE hoặc FALSE trong khi mệnh đề JOIN trả về bản ghi từ bảng khác.

Bạn sử dụng toán tử EXISTS để kiểm tra xem một truy vấn con có trả về bất kỳ bản ghi nào không và dừng ngay khi có bất kỳ bản ghi được trả về. Trong khi đó, bạn sử dụng mệnh đề JOIN để mở rộng tập kết quả bằng cách kết hợp nó với các cột từ các bảng có liên quan.

Trong thực tế, bạn sử dụng EXISTS khi bạn chỉ cần kiểm tra sự tồn tại của các hàng từ các bảng liên quan mà không cần trả về dữ liệu từ chúng.

So sánh not in và not exists trong SQL server

Not in và not exists trong SQL server
Sự khác nhau giữa not in và not exists trong SQL server là gì?

Cả NOT IN và NOT EXISTS là các điều kiện trong SQL được sử dụng để kiểm tra sự không tồn tại của giá trị hoặc kết quả từ một truy vấn con. Cụ thể sự khác nhau của 2 điều kiện này như sau:

Not in trong SQL

  • Sử dụng với danh sách giá trị cụ thể: NOT IN thường được sử dụng khi bạn muốn kiểm tra xem giá trị không tồn tại trong một danh sách cụ thể.
  • Không thể xử lý giá trị NULL: Nếu danh sách giá trị chứa giá trị NULL, NOT IN có thể không hoạt động đúng với một số hệ quản trị cơ sở dữ liệu.

Not exists trong SQL

  • Sử dụng với một truy vấn con: NOT EXISTS thường được sử dụng với một truy vấn con để kiểm tra điều kiện không tồn tại.
  • Có thể xử lý giá trị NULL: NOT EXISTS thường được ưa chuộng hơn khi bạn muốn xử lý giá trị NULL.

Cú pháp where not exists trong SQL

Câu lệnh WHERE NOT EXISTS trong SQL thường được sử dụng khi bạn muốn kiểm tra xem một điều kiện cụ thể không có kết quả nào từ một truy vấn con.

Ví dụ:

SELECT *
FROM Customers C
WHERE NOT EXISTS (
SELECT 1
FROM Orders O
WHERE O.CustomerID = C.CustomerID
);

Trong ví dụ này, chúng ta đang lấy danh sách khách hàng mà không có bất kỳ đơn hàng nào được đặt hàng.

Kết lại

Trên đây là toàn bộ chia sẻ của Comdy về câu lệnh exists trong sql server. Hi vọng những thông tin, kiến thức cung cấp trong bài viết này là hữu ích và ý nghĩa với mọi người. Xin cám ơn vì đã theo dõi và ủng hộ!

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *