Bài viết này dành cho những ai tạm hiểu về cơ bản của SQL nhưng vẫn chưa hiểu rõ về JOIN, hoặc những người muốn ôn lại kiến thức đã quên. Nội dung sẽ trình bày khái niệm về INNER JOIN và OUTER JOIN, sau đó sẽ thực hành với INNER JOIN và OUTER JOIN trong MySQL.
INNER JOIN là gì?
SQL INNER JOIN
là một chức năng rất quan trọng được sử dụng để kết nối nhiều bảng và lấy dữ liệu liên quan. Nó cho phép bạn kết hợp dữ liệu từ hai hoặc hơn bảng một cách hiệu quả, thu thập thông tin cần thiết như một tập hợp kết quả. Đây là thao tác không thể thiếu khi sử dụng nhiều bảng trong cơ sở dữ liệu có quan hệ.
INNER JOIN
. Trong trường hợp này, sử dụng Apidog có thể giúp bạn thực hiện việc gỡ lỗi và kiểm tra API một cách hiệu quả, cũng như dễ dàng kiểm tra hành vi của truy vấn SQL và sự kết hợp dữ liệu. Apidog là một công cụ mạnh mẽ để tăng cường khả năng hiển thị và tích hợp kiểm tra API, giúp nhanh chóng chẩn đoán các vấn đề cơ sở dữ liệu. Nó dễ sử dụng ngay cả đối với người mới bắt đầu và cải thiện đáng kể hiệu suất phát triển. Hãy tải ngay Apidog để trải nghiệm mới về kiểm tra cơ sở dữ liệu và API!
Môi trường thực hiện
Bài viết này sẽ giải thích cách sử dụng cơ bản của INNER JOIN
với MySQL. Cú pháp cơ bản là giống nhau với các RDBMS khác (chẳng hạn như PostgreSQL, SQL Server), nhưng có thể có sự khác biệt nhỏ nên hãy kiểm tra cú pháp tương ứng với từng môi trường khi thực sự sử dụng.
Tạo bảng
Trước khi sử dụng INNER JOIN
, trước tiên bạn cần tạo bảng để lưu trữ dữ liệu. Dưới đây là bảng employees
(nhân viên) và bảng departments
(phòng ban).
CREATE TABLE departments (
department_id INT PRIMARY KEY,
department_name VARCHAR(50)
);
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
employee_name VARCHAR(50),
department_id INT,
FOREIGN KEY (department_id) REFERENCES departments(department_id)
);
Bằng cách liên kết department_id
trong bảng employees
với department_id
trong bảng departments
, bạn có thể kết nối cả hai bảng với nhau.
Cú pháp cơ bản
Cú pháp cơ bản của INNER JOIN
là như sau.
SELECT columns
FROM table1
INNER JOIN table2
ON table1.column = table2.column;
Cú pháp này kết nối hai bảng, table1
và table2
, bằng INNER JOIN
, và sử dụng từ khóa ON
để kết hợp theo cột chung (khóa).
Cách sử dụng cơ bản
Ví dụ, nếu bạn muốn lấy thông tin nhân viên kèm theo tên phòng ban, bạn có thể sử dụng INNER JOIN
như sau.
SELECT employees.employee_name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.department_id;
Câu truy vấn này kết hợp cột employee_name
từ bảng employees
và cột department_name
từ bảng departments
, để lấy tên nhân viên và tên phòng ban của họ. Kết quả sẽ hiển thị mỗi nhân viên thuộc phòng ban nào.
Sự khác biệt giữa OUTER JOIN và INNER JOIN
INNER JOIN
thường được so sánh với OUTER JOIN
. OUTER JOIN
có ba loại khác nhau (LEFT JOIN
, RIGHT JOIN
, FULL JOIN
), nhưng INNER JOIN
chỉ trả về dữ liệu khớp với điều kiện đã chỉ định. Ví dụ, nếu có nhân viên trong bảng employees
mà không được chỉ định phòng ban, thì nhân viên đó sẽ không có trong kết quả của INNER JOIN
.
Khi sử dụng OUTER JOIN
, bạn có thể nói rằng dữ liệu không khớp với điều kiện sẽ được đưa vào kết quả bằng cách trả về giá trị NULL. Dưới đây là một ví dụ sử dụng LEFT JOIN
.
SELECT employees.employee_name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;
Trong trường hợp của LEFT JOIN
, ngay cả khi một nhân viên không liên quan đến phòng ban nào, tên của nhân viên đó vẫn sẽ hiển thị, trong khi tên phòng ban sẽ được thể hiện là NULL.
Ví dụ ứng dụng: Gửi định dạng body yêu cầu
Ví dụ 1: Gửi dữ liệu dưới dạng application/x-www-form-urlencoded
Hãy xem xét một ví dụ sử dụng application/x-www-form-urlencoded
làm định dạng body yêu cầu API. Bằng cách này, dữ liệu biểu mẫu sẽ được mã hóa URL và gửi đi.
POST /api/user
Content-Type: application/x-www-form-urlencoded
username=johndoe&email=john@example.com
Trong định dạng này, dữ liệu sẽ được gửi dưới dạng cặp key=value
, với nhiều trường được ngăn cách bằng &
. Bạn có thể kết nối nhiều bảng như INNER JOIN
để lấy dữ liệu cần thiết một cách hiệu quả.
Ví dụ 2: Gửi dữ liệu dưới dạng application/json
Mặt khác, khi sử dụng application/json
, body yêu cầu sẽ được gửi ở định dạng JSON. Phương pháp này rất tiện lợi để biểu diễn dữ liệu một cách cấu trúc, đặc biệt là khi gửi dữ liệu phức tạp.
POST /api/user
Content-Type: application/json
{
"username": "johndoe",
"email": "john@example.com"
}
Trong định dạng này, dữ liệu phức tạp có thể được giữ nguyên khi gửi đến API.
Sử dụng Apidog để tăng cường tương tác API
Apidog là một công cụ rất hữu ích cho việc kiểm tra và gỡ lỗi API. Khi làm việc với những truy vấn phức tạp như INNER JOIN
, việc xác minh phản hồi và yêu cầu API là rất quan trọng. Sử dụng Apidog, bạn có thể trực quan xác minh nội dung body yêu cầu và phản hồi, cũng như nhanh chóng tìm ra lỗi. Điều này cực kỳ hữu ích, đặc biệt là khi kết hợp nhiều bảng hoặc gửi dữ liệu dưới dạng JSON.
Cơ sở dữ liệu có thể kết nối bằng Apidog
Apidog có thể hỗ trợ các cơ sở dữ liệu của nhà cung cấp đang thông dụng hiện nay. Dưới đây là các loại cơ sở dữ liệu mà Apidog hỗ trợ.
- MySQL
- SQL Server
- Oracle
- PostgreSQL
- ClickHouse
- MongoDB
Cách kết nối API với cơ sở dữ liệu bằng Apidog
Vậy làm thế nào để sử dụng Apidog để kết nối API với cơ sở dữ liệu? Dưới đây là hướng dẫn chi tiết về các bước.
Bước 1: Trong quá trình thử nghiệm API, bạn có thể sử dụng "hoạt động trước" và "hoạt động sau" để lựa chọn hoạt động cơ sở dữ liệu.

Bước 2: Thiết lập cơ sở dữ liệu. Tại đây bạn có thể thêm cơ sở dữ liệu mới trong mục kết nối cơ sở dữ liệu. Nhập thông tin cần thiết để kết nối với cơ sở dữ liệu như hình dưới đây để thêm cơ sở dữ liệu mới.

Hướng dẫn: Lấy dữ liệu cơ sở dữ liệu và kiểm tra phản hồi
Bước 1: Nhập câu lệnh SQL để xác định dữ liệu cần lấy và các thao tác cần thực hiện. Ví dụ: Nhập lệnh "SELECT * FROM departments WHERE department_id = 1;" để lấy dữ liệu của người dùng có department_id=1
từ cơ sở dữ liệu departments.

Lưu ý: Bật "Hiển thị kết quả trong bảng điều khiển" và nhấn nút "Gửi" để hiển thị dữ liệu lấy từ cơ sở dữ liệu trong bảng điều khiển.
Bước 2: Nhập tên biến và biểu thức JSONPath trong "Trích xuất kết quả vào biến" để lưu dữ liệu từ cơ sở dữ liệu thành biến môi trường, biến toàn cục và biến cục bộ trong Apidog.

Bước 3: Khi hoàn thành việc thiết lập biến, nhấn nút "Gửi" để lưu biến. Tại đây, bạn có thể nhấp vào biểu tượng cài đặt ở góc trên bên phải để kiểm tra các biến đã lưu.

Như vậy, khi lưu trữ dữ liệu thực tế từ cơ sở dữ liệu dưới dạng biến, bạn có thể tham chiếu trực tiếp biến này trong quá trình kiểm tra API sau này và sử dụng dữ liệu thực trong kiểm tra API.
Thêm vào đó, bằng cách sử dụng chức năng xác nhận của Apidog, bạn có thể tự động kiểm tra xem phản hồi API nhận được có khớp với dữ liệu trong cơ sở dữ liệu hay không, đây là chức năng rất hữu ích cho việc xác thực hoạt động của API và đảm bảo chất lượng.

Khi thiết lập xác nhận, Apidog sẽ tự động kiểm tra xem dữ liệu trả về từ phản hồi có khớp với dữ liệu trong cơ sở dữ liệu hay không.

Kết luận
Sử dụng INNER JOIN
cho phép bạn kết nối dữ liệu từ nhiều bảng để có được thông tin phong phú hơn. INNER JOIN
là một chức năng mạnh mẽ và là yếu tố không thể thiếu khi xây dựng các truy vấn phức tạp. Hơn nữa, khi sử dụng cơ sở dữ liệu, việc sử dụng INNER JOIN
một cách hợp lý có thể giúp bạn lấy dữ liệu một cách hiệu quả. Việc thành thạo INNER JOIN
trong thao tác với cơ sở dữ liệu là rất quan trọng.
FAQ: Các câu hỏi thường gặp về INNER JOIN
1. INNER JOIN và LEFT JOIN khác nhau như thế nào?
- Câu trả lời:
INNER JOIN
chỉ trả về dữ liệu chung của cả hai bảng, trong khiLEFT JOIN
trả về tất cả dữ liệu của bảng bên trái và dữ liệu tương ứng ở bên phải, nếu không có dữ liệu khớp ở bên phải thì trả vềNULL
.
2. Nếu không hiện kết quả khi sử dụng INNER JOIN
, tôi nên làm gì?
- Câu trả lời: Có thể không có dữ liệu phù hợp với điều kiện kết hợp trong cả hai bảng. Hãy kiểm tra lại điều kiện kết hợp và dữ liệu để chắc chắn rằng dữ liệu cần thiết tồn tại.
3. Điều gì sẽ xảy ra nếu tôi quên điều kiện kết hợp khi sử dụng INNER JOIN
?
- Câu trả lời: Điều kiện kết hợp là bắt buộc trong
INNER JOIN
. Nếu không chỉ định điều kiện, sẽ có lỗi SQL xảy ra. Hãy luôn chỉ định điều kiện kết hợp thích hợp với câu lệnhON
.
4. INNER JOIN và JOIN có nghĩa giống nhau không?
- Câu trả lời: Có,
INNER JOIN
vàJOIN
cơ bản có nghĩa giống nhau.INNER JOIN
là diễn đạt rõ ràng, trong khiJOIN
là viết tắt và sẽ mặc định là INNER JOIN được thực hiện.
5. Khi INNER JOIN nhiều bảng, thứ tự có quan trọng không?
- Câu trả lời: Thứ tự kết hợp có thể ảnh hưởng đến hiệu suất. Thông thường, bắt đầu kết hợp từ bảng nhỏ hơn sẽ hiệu quả hơn. Hãy kiểm tra kế hoạch thực thi truy vấn để chọn thứ tự tối ưu.