loại tham gia được thực hiện? Tôi nghĩ đó là sự tham gia bên ngoài đầy đủ, tôi ổn chứ?
Không, đó là một tham gia bên ngoài thông thường. Truy vấn cần biết khi nào có các hàng trong bảng đích cũng có trong bảng nguồn và khi nào có các bản ghi trong bảng nguồn không có trong bảng đích. Vì truy vấn không cần trả lời các hàng có trong bảng đích nhưng không có trong bảng nguồn, nên nó không cần kết nối bên ngoài để thực hiện cả hai cách.
Tuy nhiên, phép nối bên ngoài sẽ không được thực hiện nếu không có not matched
mệnh đề (hoàn toàn hợp lệ). Trình tối ưu hóa đủ thông minh để biết rằng trong trường hợp đó, một phép nối bên trong là đủ.
liên quan đến phần WHEN MATCHED:điều gì sẽ xảy ra khi một hàng từ t khớp với nhiều hàng từ s?
Khi có nhiều trận đấu, cập nhật sẽ được thực hiện cho mỗi trận đấu. Điều này có nghĩa là bất kỳ cập nhật nào đến sau cùng sẽ là cập nhật được ghi trong cam kết. Không có cách nào để ra lệnh, vì vậy trong trường hợp này, nguồn của bản cập nhật thực sự là ngẫu nhiên (từ tập hợp các kết quả phù hợp).
Như @ Vincent Malgrat đã chỉ ra, điều này không chính xác. Có vẻ như Oracle sẽ tạo ra lỗi "ORA-40926:không thể có được một tập hợp các hàng ổn định trong bảng nguồn" nếu có nhiều kết quả trùng khớp.
về phần WHEN NOT MATCHED Tôi tin rằng nó có nghĩa là “khi một hàng trong s không tương ứng trong t”. Tôi nói đúng chứ?
Điều đó đúng.