Sự khác biệt giữa Tham gia bên trong và Tham gia bên ngoài

Sự khác biệt giữa Tham gia bên trong và Tham gia bên ngoài
Sự khác biệt giữa Tham gia bên trong và Tham gia bên ngoài

Video: Sự khác biệt giữa Tham gia bên trong và Tham gia bên ngoài

Video: Sự khác biệt giữa Tham gia bên trong và Tham gia bên ngoài
Video: [Business Analyst] Cách viết BRD, SRS, FRS - Phân biệt các loại Documents 2024, Tháng bảy
Anonim

Tham gia bên trong và Tham gia bên ngoài

Nối bên trong và Nối bên ngoài là hai trong số các phương thức nối SQL được sử dụng trong xử lý truy vấn cho cơ sở dữ liệu. Chúng thuộc về họ mệnh đề nối (hai mệnh đề khác là Nối trái và Phải). Tuy nhiên, có một Self Join có thể được sử dụng cho các tình huống chuyên biệt. Mục đích của Join là kết hợp các trường bằng cách sử dụng các giá trị chung cho hai bảng. Các phép nối này kết hợp các bản ghi từ nhiều bảng trong cơ sở dữ liệu. Nó tạo ra các tập hợp kết quả, có thể được lưu dưới dạng một bảng khác.

Tham gia bên trong là gì?

Thao tác nối SQL được sử dụng phổ biến nhất là phép nối bên trong. Có thể coi đây là kiểu nối mặc định được sử dụng trong các ứng dụng. Phép nối bên trong sử dụng vị từ nối để kết hợp hai bảng. Giả sử hai bảng là A và B, thì vị từ nối sẽ so sánh các hàng của A và B để tìm ra tất cả các cặp thỏa mãn vị từ. Giá trị cột của tất cả các hàng thỏa mãn của bảng A và B được kết hợp để tạo ra kết quả. Nó có thể được xem như lần đầu tiên lấy phép nối chéo (tích Descartes) của tất cả các bản ghi và sau đó chỉ trả về các bản ghi thỏa mãn vị từ nối. Tuy nhiên, trong thực tế, tích Descartes không được tính toán vì nó rất kém hiệu quả. Thay vào đó, tham gia băm hoặc kết hợp sắp xếp được sử dụng.

Tham gia bên ngoài là gì?

Không giống như, phép nối bên trong, phép nối bên ngoài giữ tất cả các bản ghi ngay cả khi nó không thể tìm thấy bản ghi phù hợp. Điều đó có nghĩa là kết nối bên ngoài cần một bản ghi để tìm một bản ghi phù hợp để nó xuất hiện trong kết quả. Thay vào đó, nó sẽ trả về tất cả các bản ghi, nhưng các bản ghi chưa khớp sẽ có giá trị null. Các phép nối bên ngoài được chia thành ba loại phụ. Chúng là liên kết ngoài bên trái, liên kết ngoài bên phải và liên kết ngoài đầy đủ. Sự khác biệt này dựa trên hàng của bảng (bảng bên trái, bảng bên phải hoặc cả hai bảng) được giữ lại khi tìm thấy các bản ghi chưa khớp. Các phép nối bên ngoài bên trái (còn được gọi đơn giản là phép nối bên trái) giữ lại tất cả các bản ghi của bảng bên trái. Điều đó có nghĩa là, ngay cả khi các bản ghi so khớp số bằng 0, thì nó sẽ vẫn có các bản ghi trong bảng kết quả, nhưng sẽ có giá trị rỗng cho tất cả các cột B. Nói cách khác, tất cả các giá trị từ bảng bên trái được trả về với các giá trị phù hợp từ bên phải bảng (hoặc giá trị null khi chưa được so khớp). Nếu các giá trị từ nhiều hàng từ bảng bên trái được khớp với một hàng từ bảng bên phải, thì hàng từ bảng bên phải sẽ được lặp lại theo yêu cầu. Phép nối ngoài bên phải khá giống với phép nối ngoài bên trái, nhưng việc xử lý các bảng được tôn trọng. Điều đó có nghĩa là kết quả sẽ có tất cả các hàng của bảng bên phải ít nhất một lần với các giá trị bảng bên trái phù hợp (và giá trị rỗng cho các giá trị bên phải chưa khớp). Tham gia bên ngoài đầy đủ toàn diện hơn so với cả liên kết ngoài bên trái và bên phải. Nó dẫn đến kết hợp hiệu ứng của việc áp dụng cả bên ngoài bên trái và bên phải kết hợp với nhau.

Sự khác biệt giữa Tham gia bên trong và Tham gia bên ngoài là gì?

Phép nối bên trong không giữ các hàng chưa khớp trong kết quả, nhưng phép nối bên ngoài sẽ giữ tất cả các bản ghi từ ít nhất một bảng (tùy thuộc vào phép nối bên ngoài nào đã được sử dụng). Vì vậy, hành vi không có thông tin hiển thị trên các hàng chưa khớp trong bảng kết quả là không mong muốn, bạn cần phải luôn sử dụng một trong các phép nối bên ngoài (thay cho phép nối bên trong). Kết nối bên trong có thể không tạo ra kết quả nếu không tìm thấy kết quả phù hợp nào. Nhưng phép nối bên ngoài sẽ luôn tạo ra một bảng kết quả, ngay cả khi không có hàng nào phù hợp. Tham gia bên trong sẽ luôn trả về các bảng có giá trị (nếu được trả về). Nhưng các phép nối bên ngoài có thể dẫn đến các bảng có giá trị rỗng.

Đề xuất: