SQL trung EXISTS dùng như thế nào
EXISTS dùng cho kiểm tra tử tuần tra hay không ít nhất sẽ phản hồi một hàng số liệu, nên tử tuần tra trên thực tế cũng không phản hồi bất luận cái gì số liệu, mà là phản hồi giá trị True hoặc False
Thao tác phương pháp
EXISTS dùng cho kiểm tra tử tuần tra hay không ít nhất sẽ phản hồi một hàng số liệu, nên tử tuần tra trên thực tế cũng không phản hồi bất luận cái gì số liệu, mà là phản hồi giá trị True hoặc FalseEXISTS chỉ định một cái tử tuần tra, kiểm tra đo lường hành tồn tại. Ngữ pháp: EXISTS subquery tham số: subquery là một cái chịu hạn SELECT câu nói ( không cho phép có COMPUTE mệnh đề phụ cùng INTO mấu chốt tự ). Kết quả loại hình: Boolean nếu tử tuần tra bao hàm hành, tắc phản hồi TRUE, nếu không phản hồi FLASE.
( một ). Ở tử tuần tra trung sử dụng NULL vẫn cứ phản hồi kết quả tập select * from TableIn where exists(select null) cùng cấp với: select * from TableIn
( nhị ). Tương đối sử dụng EXISTS cùng IN tuần tra. Chú ý hai cái tuần tra phản hồi tương đồng kết quả. select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)select * from TableIn where ANAME in(select BNAME from TableEx)
( tam ). Tương đối sử dụng EXISTS cùng = ANY tuần tra. Chú ý hai cái tuần tra phản hồi tương đồng kết quả. select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)select * from TableIn where ANAME=ANY(select BNAME from TableEx)
NOT EXISTS tác dụng cùng EXISTS vừa lúc tương phản. Nếu tử tuần tra không có phản hồi hành, tắc thỏa mãn NOT EXISTS trung WHERE mệnh đề phụ.
Kết luận: EXISTS( bao gồm NOT EXISTS ) mệnh đề phụ phản hồi giá trị là một cái BOOL giá trị. EXISTS bên trong có một cái tử tuần tra câu nói (SELECT. FROM.), ta đem này xưng là EXIST nội tuần tra câu nói. Này nội tuần tra câu nói phản hồi một cái kết quả tập. EXISTS mệnh đề phụ căn cứ này nội tuần tra câu nói kết quả tập không hoặc là phi không, phản hồi một cái bố ngươi giá trị.
Một loại thông tục có thể lý giải vì: Đem ngoại tuần tra biểu mỗi một hàng, đại nhập nội tuần tra làm kiểm nghiệm, nếu nội tuần tra phản hồi kết quả lấy phi không giá trị, tắc EXISTS mệnh đề phụ phản hồi TRUE, này từng hàng nhưng làm ngoại tuần tra kết quả hành, nếu không không thể làm kết quả.
Phân tích khí sẽ trước xem câu nói cái thứ nhất từ, đương nó phát hiện cái thứ nhất từ là SELECT mấu chốt tự thời điểm, nó sẽ nhảy đến FROM mấu chốt tự, sau đó thông qua FROM mấu chốt tự tìm được biểu danh cũng đem biểu trang đi vào tồn. Tiếp theo là tìm WHERE mấu chốt tự, nếu tìm không thấy tắc phản hồi đến SELECT tìm tự đoạn phân tích, nếu tìm được WHERE, tắc phân tích trong đó điều kiện, hoàn thành sau lại trở lại SELECT phân tích tự đoạn. Cuối cùng hình thành một trương chúng ta muốn hư biểu. WHERE mấu chốt tự mặt sau chính là điều kiện biểu đạt thức. Điều kiện biểu đạt thức tính toán hoàn thành sau, sẽ có một cái phản hồi giá trị, tức phi 0 hoặc 0, phi 0 tức vì thật (true), 0 tức vì giả (false). Cùng lý WHERE mặt sau điều kiện cũng có một cái phản hồi giá trị, thật hoặc giả, tới xác định kế tiếp chấp không chấp hành SELECT. Phân tích khí trước tìm được mấu chốt tự SELECT, sau đó nhảy đến FROM mấu chốt tự đem STUDENT biểu dẫn vào nội tồn, cũng thông qua kim đồng hồ tìm được điều thứ nhất ký lục, tiếp theo tìm được WHERE mấu chốt tự tính toán nó điều kiện biểu đạt thức, nếu vì thật như vậy đem này ký lục trang đến một cái hư biểu giữa, kim đồng hồ lại chỉ xuống phía dưới một cái ký lục. Nếu vì giả như vậy kim đồng hồ trực tiếp chỉ xuống phía dưới một cái ký lục, mà không tiến hành cái khác thao tác. Vẫn luôn kiểm tra hoàn chỉnh cái biểu, cũng đem kiểm tra ra tới giả thuyết biểu phản hồi cấp người dùng. EXISTS là điều kiện biểu đạt thức một bộ phận, nó cũng có một cái phản hồi giá trị (true hoặc false).
Ở cắm vào ký lục trước, yêu cầu kiểm tra này ký lục hay không đã tồn tại, chỉ có đương ký lục không tồn tại khi mới chấp hành cắm vào thao tác, có thể thông qua sử dụng EXISTS điều kiện câu phòng ngừa cắm vào lặp lại ký lục. INSERT INTO TableIn (ANAME,ASEX)SELECT top 1 ' Trương Tam ', ' nam ' FROM TableInWHERE not exists (select * from TableIn where TableIn.AID = 7)
EXISTS cùng IN sử dụng hiệu suất vấn đề, trong tình huống bình thường chọn dùng exists muốn so in hiệu suất cao, bởi vì IN không xiếc đi dây dẫn, nhưng muốn xem thực tế tình huống cụ thể sử dụng: IN thích hợp với bề ngoài đại mà nội biểu tiểu nhân tình huống; EXISTS thích hợp với bề ngoài tiểu mà nội biểu đại tình huống.