Apidog

Nền tảng phát triển API hợp tác tất cả trong một

Thiết kế API

Tài liệu API

Gỡ lỗi API

Giả lập API

Kiểm thử API tự động

Sử Dụng INNER JOIN Một Cách Thành Thạo: Tích Hợp Dữ Liệu Nhiều Bảng

Maurice Odida

Maurice Odida

Updated on tháng 12 12, 2024

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ệ.

💡
Khi bạn không nhận được kết quả như mong muốn từ câu truy vấn SQL, bạn có thể cảm thấy khó khăn trong việc giải quyết vấn đề về 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!
button
apidog client

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, table1table2, 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.

button

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.

Apidog - 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.

Kết nối cơ sở dữ liệu

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ấy dữ liệu từ cơ sở dữ liệu và kiểm tra phản hồi

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.

Nhập tên biến và biểu thức JSONPath

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.

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.

Thiết lập xác nhận Apidog

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.

Tự động kiểm tra xem phản hồi API có khớp với dữ liệu 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.

button

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 khi LEFT 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ệnh ON.

4. INNER JOIN và JOIN có nghĩa giống nhau không?

  • Câu trả lời: Có, INNER JOINJOIN cơ bản có nghĩa giống nhau. INNER JOIN là diễn đạt rõ ràng, trong khi JOIN 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.