Tham gia PostgreSQL là gì?
PostgreSQL JOINs được sử dụng để truy xuất dữ liệu từ nhiều bảng. Với JOIN, chúng ta có thể kết hợp các câu lệnh SELECT và JOIN thành một câu lệnh duy nhất. Một điều kiện JOIN được thêm vào câu lệnh và tất cả các hàng đáp ứng các điều kiện sẽ được trả về.
Các giá trị từ các bảng khác nhau được kết hợp dựa trên các cột chung. Cột chung chủ yếu là khóa chính trong bảng đầu tiên và khóa ngoại của bảng thứ hai.
Trong hướng dẫn PostgreSQL này, bạn sẽ học:
- Tham gia PostgreSQL là gì?
- Các loại tham gia
- Tham gia bên trong
- Theta Tham gia
- Tham gia EQUI
- Tham gia tự nhiên
- Tham gia bên ngoài
- THAM GIA BÊN NGOÀI TRÁI
- THAM GIA ĐÚNG NGƯỜI RA NGOÀI
- Tham gia đầy đủ bên ngoài
- Sử dụng pgAdmin
- Tham gia bên trong
- Theta Tham gia
- Tham gia EQUI
- Tham gia tự nhiên
- INNER JOIN (tham gia đơn giản)
- Tham gia bên ngoài
- THAM GIA BÊN NGOÀI TRÁI
- THAM GIA ĐÚNG NGƯỜI RA NGOÀI
- Tham gia đầy đủ bên ngoài
Các loại tham gia
Có hai loại JOIN trong PostgreSQL:
- Tham gia bên trong
- Tham gia bên ngoài
Tham gia bên trong
Có 3 loại nối bên trong:
- Theta tham gia
- Tham gia tự nhiên
- Tham gia EQUI
Theta Tham gia
Một phép nối theta cho phép một người tham gia hai bảng dựa trên điều kiện được đại diện bởi theta. Các phép nối theta có thể hoạt động với tất cả các toán tử so sánh. Trong hầu hết các trường hợp, phép nối theta được gọi là phép nối bên trong.
Tham gia theta là kiểu tham gia cơ bản nhất. Nó sẽ trả về tất cả các hàng từ các bảng mà điều kiện JOIN được thỏa mãn.
Cú pháp:
SELECT columnsFROM table-1INNER JOIN table-2ON table-1.column = table-2.column;
Hãy xem xét các bảng sau của cơ sở dữ liệu Demo:
Sách:
Giá bán:
Chúng tôi muốn xem tên của từng cuốn sách và Giá tương ứng. Chúng ta có thể chạy lệnh sau:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Điều này sẽ trả về như sau:
Chỉ có 3 hàng thỏa mãn điều kiện tham gia.
Tham gia EQUI
Phép nối EQUI cung cấp cho chúng ta một cách nối hai bảng dựa trên mối quan hệ khóa chính / khóa ngoại. Ví dụ:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Điều này sẽ trả về như sau:
Các bản ghi đã được trả về từ cả hai bảng dựa trên các cột chung, tức là cột id.
Tham gia tự nhiên
Loại liên kết này cung cấp cho chúng tôi một cách khác để viết một liên kết EQUI. Chúng tôi có thể cải thiện ví dụ trước của chúng tôi bằng cách thêm từ khóa NATURAL như được hiển thị bên dưới:
SELECT *FROM BookNATURAL JOIN Price;
Điều này sẽ trả về như sau:
Chỉ có một cột id đã được trả lại. NATURAL JOIN có thể lưu ý rằng cột id là chung trong hai bảng. Chỉ có một chiếc được trả lại.
Tham gia bên ngoài
Có ba loại JOIN bên ngoài trong PostgreSQL:
- Tham gia bên ngoài bên trái.
- Tham gia bên ngoài bên phải.
- Tham gia đầy đủ bên ngoài
THAM GIA BÊN NGOÀI TRÁI
LEFT OUTER JOIN sẽ trả về tất cả các hàng trong bảng ở phía bên trái và chỉ các hàng trong bảng bên phải đã thỏa mãn điều kiện nối.
Cú pháp:
SELECT columnsFROM table-1LEFT OUTER JOIN table-2ON table-1.column = table-2.column;
Chúng ta cần xem tên của từng cuốn sách và Giá tương ứng. Chúng ta có thể chạy lệnh sau:
SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Điều này trả về như sau:
Tất cả 4 hàng trong bảng Sách đã được trả lại. Chỉ có 3 hàng từ bảng Giá đáp ứng điều kiện tham gia. Do đó họ đã được trả lại. Cuốn sách cuối cùng không có giá trị tương ứng.
THAM GIA ĐÚNG NGƯỜI RA NGOÀI
RIGHT OUTER JOIN trả về tất cả các hàng trong bảng ở phía bên phải và các hàng trong bảng ở phía bên trái nơi điều kiện nối đã được thỏa mãn.
Cú pháp:
SELECT columnsFROM table-1RIGHT OUTER JOIN table-2ON table-1.column = table-2.column;
Ví dụ:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Điều này trả về như sau:
Tất cả các hàng trong bảng Giá đã được trả lại. Chỉ các hàng trong bảng Sách đáp ứng điều kiện nối mới được trả về. Hàng thứ 3 không có giá trị cho tên vì không tìm thấy kết quả phù hợp nào.
Tham gia đầy đủ bên ngoài
Loại JOIN này sẽ trả về tất cả các hàng trong bảng ở phía bên trái và tất cả các hàng trong bảng ở phía bên phải có giá trị rỗng khi điều kiện nối không được thỏa mãn.
Cú pháp:
SELECT columnsFROM table-1FULL OUTER JOIN table-2ON table-1.column = table-2.column;
Ví dụ:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Điều này trả về như sau:
Tất cả các hàng từ tất cả các bảng đã được trả về, với giá trị rỗng mà không tìm thấy kết quả phù hợp nào.
Sử dụng pgAdmin
Các tác vụ trên có thể được thực hiện trong pgAdmin như sau:
Tham gia bên trong
Theta Tham gia
Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.
Bước 2)
- Từ thanh điều hướng bên trái - Nhấp vào Cơ sở dữ liệu.
- Nhấp vào Demo.
Bước 3) Nhập truy vấn vào trình chỉnh sửa truy vấn:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Bước 4) Nhấp vào nút Thực thi.
Nó sẽ trả về như sau:
Tham gia EQUI
Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.
Bước 2)
- Từ thanh điều hướng bên trái - Nhấp vào Cơ sở dữ liệu.
- Nhấp vào Demo.
Bước 3) Nhập truy vấn vào trình chỉnh sửa truy vấn:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Bước 4) Nhấp vào nút Thực thi.
Nó sẽ trả về như sau:
Tham gia tự nhiên
Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.
Bước 2)
- Từ thanh điều hướng bên trái - Nhấp vào Cơ sở dữ liệu.
- Nhấp vào Demo.
Bước 3) Nhập truy vấn vào trình chỉnh sửa truy vấn:
SELECT *FROM BookNATURAL JOIN Price;
Bước 4) Nhấp vào nút Thực thi.
Nó sẽ trả về như sau:
INNER JOIN (tham gia đơn giản)
Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.
Bước 2)
- Từ thanh điều hướng bên trái - Nhấp vào Cơ sở dữ liệu.
- Nhấp vào Demo.
Bước 3) Nhập truy vấn vào trình chỉnh sửa truy vấn:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Bước 4) Nhấp vào nút Thực thi.
Nó sẽ trả về như sau:
Tham gia bên ngoài
THAM GIA BÊN NGOÀI TRÁI
Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.
Bước 2)
- Từ thanh điều hướng bên trái - Nhấp vào Cơ sở dữ liệu.
- Nhấp vào Demo.
Bước 3) Nhập truy vấn vào trình chỉnh sửa truy vấn:
SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Bước 4) Nhấp vào nút Thực thi.
Nó sẽ trả về như sau:
THAM GIA ĐÚNG NGƯỜI RA NGOÀI
Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.
Bước 2)
- Từ thanh điều hướng bên trái - Nhấp vào Cơ sở dữ liệu.
- Nhấp vào Demo.
Bước 3) Nhập truy vấn vào trình chỉnh sửa truy vấn:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Bước 4) Nhấp vào nút Thực thi.
Nó sẽ trả về như sau:
Tham gia đầy đủ bên ngoài
Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.
Bước 2)
- Từ thanh điều hướng bên trái - Nhấp vào Cơ sở dữ liệu.
- Nhấp vào Demo.
Bước 3) Nhập truy vấn vào trình chỉnh sửa truy vấn:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Bước 4) Nhấp vào nút Thực thi.
Nó sẽ trả về như sau:
Tóm lược:
- Trong PostgreSQL, chúng tôi sử dụng JOIN khi cần truy xuất các giá trị từ nhiều hơn một bảng.
- INNER JOIN là loại JOIN cơ bản nhất. Nó trả về tất cả các bản ghi đã thỏa mãn điều kiện JOIN được chỉ định.
- LEFT OUTER JOIN trả về tất cả các hàng trong bảng bên trái và chỉ các hàng trong bảng khác mà điều kiện nối đã được thỏa mãn.
- RIGHT OUTER JOIN trả về tất cả các hàng trong bảng bên phải và chỉ các hàng trong bảng khác đã thỏa mãn điều kiện nối.
- Loại JOIN này trả về tất cả các hàng trong bảng bên trái và tất cả các hàng trong bảng bên phải có giá trị rỗng khi điều kiện nối không được thỏa mãn.
Tải xuống Cơ sở dữ liệu được sử dụng trong Hướng dẫn này