SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

SQLite TỒN TẠI

Tóm tắt :trong hướng dẫn này, bạn sẽ học cách sử dụng SQLite EXISTS toán tử để kiểm tra sự tồn tại của các hàng được trả về bởi một truy vấn con.

Giới thiệu về SQLite EXISTS toán tử

EXISTS toán tử là một toán tử logic kiểm tra xem một truy vấn con có trả về bất kỳ hàng nào hay không.

Đây là cú pháp cơ bản của EXISTS nhà điều hành:

EXISTS(subquery)
Code language: SQL (Structured Query Language) (sql)

Trong cú pháp này, truy vấn con là SELECT câu lệnh trả về không hoặc nhiều hàng.

Nếu truy vấn con trả về một hoặc nhiều hàng, thì EXISTS toán tử trả về true. Nếu không, EXISTS toán tử trả về false hoặc NULL .

Lưu ý rằng nếu truy vấn con trả về một hàng có NULL , kết quả của EXISTS toán tử vẫn đúng vì tập kết quả chứa một hàng với NULL.

Để phủ định EXISTS , bạn sử dụng NOT EXISTS toán tử như sau:

NOT EXISTS (subquery)Code language: SQL (Structured Query Language) (sql)

NOT EXISTS toán tử trả về true nếu truy vấn con không trả về hàng.

SQLite EXISTS ví dụ toán tử

Xem Customers sau và Invoices bảng từ cơ sở dữ liệu mẫu:

Câu lệnh sau tìm những khách hàng có hóa đơn:

SELECT
    CustomerId,
    FirstName,
    LastName,
    Company
FROM
    Customers c
WHERE
    EXISTS (
        SELECT 
            1 
        FROM 
            Invoices
        WHERE 
            CustomerId = c.CustomerId
    )
ORDER BY
    FirstName,
    LastName; 
Code language: SQL (Structured Query Language) (sql)

Hình ảnh sau đây cho thấy tập hợp kết quả từng phần:

Trong ví dụ này, đối với mỗi khách hàng, EXISTS nhà điều hành kiểm tra xem id khách hàng có tồn tại trong invoices không bảng.

  • Nếu có, truy vấn con trả về một hàng có giá trị 1 gây ra EXISTS toán tử đánh giá thành true. Do đó, truy vấn bao gồm đồng phân khối trong tập kết quả.
  • Trong trường hợp id khách hàng không tồn tại trong Invoices bảng, truy vấn con không trả về hàng nào gây ra EXISTS toán tử để đánh giá thành false, do đó truy vấn không bao gồm khách hàng trong tập kết quả.

Lưu ý rằng bạn có thể sử dụng IN toán tử thay vì EXISTS trong trường hợp này để đạt được kết quả tương tự:

SELECT
   CustomerId, 
   FirstName, 
   LastName, 
   Company
FROM
   Customers c
WHERE
   CustomerId IN (
      SELECT
         CustomerId
      FROM
         Invoices
   )
ORDER BY
   FirstName, 
   LastName;Code language: SQL (Structured Query Language) (sql)

Khi truy vấn con trả về hàng đầu tiên, EXISTS toán tử ngừng tìm kiếm vì nó có thể xác định kết quả. Mặt khác, IN toán tử phải quét tất cả các hàng được trả về bởi truy vấn con để xác định kết quả.

Nói chung, EXISTS toán tử nhanh hơn IN toán tử nếu tập kết quả được trả về bởi truy vấn con lớn. Ngược lại, IN toán tử nhanh hơn EXISTS toán tử nếu tập kết quả được trả về bởi truy vấn con nhỏ.

SQLite NOT EXISTS ví dụ toán tử

Xem bảng Nghệ sĩ và Album sau từ cơ sở dữ liệu mẫu:

Truy vấn này tìm tất cả các nghệ sĩ không có bất kỳ album nào trong bảng Album:

SELECT
   *
FROM
   Artists a
WHERE
   NOT EXISTS(
      SELECT
         1
      FROM
         Albums
      WHERE
         ArtistId = a.ArtistId
   )
ORDER BY Name;Code language: SQL (Structured Query Language) (sql)

Đây là kết quả một phần:

Trong hướng dẫn này, bạn đã học cách sử dụng SQLite EXISTS toán tử để kiểm tra sự tồn tại của các hàng được trả về bởi một truy vấn con.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. khởi tạo cơ sở dữ liệu sqlite android

  2. Sqlite Android Raw Truy vấn CHÈN VÀO KHÔNG hoạt động

  3. Khôi phục cơ sở dữ liệu SQLite

  4. Không thể mở cơ sở dữ liệu ở chế độ đọc / ghi

  5. Xem nội dung của tệp cơ sở dữ liệu trong Android Studio