Trong bài viết này, chúng ta sẽ tìm hiểu về khái niệm INNER JOIN và cách sử dụng nó trong SQL với mệnh đề WHERE.
INNER JOIN trong SQL là gì?
Tham gia bên trong là một kiểu tham gia trong SQL. Phép nối bên trong trong SQL là một phép nối được sử dụng rộng rãi. Phép nối này chỉ trả về những hàng chung trong cả hai bảng. Phép nối bên trong được sử dụng để nối hai bảng.
Cú pháp của phép nối bên trong trong SQL:
SELECT table1.columname1, table1.columnname2, table2.columnname1, table2.columnname2 FROM TABLE1 INNER JOIN TABLE2 ON table1.column = table2.column;
Table1.column =table2.column là cột chung duy trì mối quan hệ con chính giữa hai bảng này.
Có một số bước mà chúng tôi phải sử dụng trong Nối bên trong trong truy vấn SQL:
1. Tạo cơ sở dữ liệu mới hoặc sử dụng cơ sở dữ liệu hiện có bằng cách chọn cơ sở dữ liệu bằng từ khóa USE theo sau là tên cơ sở dữ liệu.
2. Tạo một bảng mới bên trong cơ sở dữ liệu đã chọn hoặc bạn có thể sử dụng một bảng đã được tạo.
3. Nếu bảng mới được tạo, hãy chèn các bản ghi vào cơ sở dữ liệu mới được tạo bằng cách sử dụng truy vấn INSERT.
4. Xem dữ liệu được chèn bằng truy vấn CHỌN mà không có truy vấn Nối bên trong.
5 Bây giờ, chúng ta đã sẵn sàng sử dụng phép nối bên trong trong các truy vấn SQL.
Bước 1:Tạo cơ sở dữ liệu mới hoặc sử dụng cơ sở dữ liệu đã được tạo.
Tôi đã tạo một cơ sở dữ liệu. Tôi sẽ sử dụng tên cơ sở dữ liệu đã tạo hiện có của mình, Công ty.
USE Company;
Công ty là tên cơ sở dữ liệu.
Những người chưa tạo cơ sở dữ liệu hãy làm theo truy vấn dưới đây để tạo cơ sở dữ liệu:
CREATE DATABASE database_name;
Sau khi tạo cơ sở dữ liệu, hãy chọn cơ sở dữ liệu bằng cách sử dụng từ khóa USE, theo sau là tên cơ sở dữ liệu.
Bước 2:Tạo bảng mới hoặc sử dụng bảng đã có:
Tôi đã tạo một bảng. Tôi sẽ sử dụng bảng hiện có có tên Nhân viên và Người quản lý khi chúng tôi đang thực hiện truy vấn Tham gia bên trong.
Để tạo bảng mới, hãy làm theo cú pháp TẠO BẢNG bên dưới:
CREATE TABLE table_name(
columnname1 datatype(column size),
columnname2 datatype(column size),
columnname3 datatype(column size)
);
Bước 3:Chèn bản ghi vào bảng mới tạo bằng cách sử dụng truy vấn CHÈN
Sử dụng cú pháp dưới đây để chèn các bản ghi mới vào bảng:
INSERT INTO table_name VALUES(value1, value2, value3);
Bước 4: Xem các bản ghi bằng truy vấn SELECT.
Xem các bản ghi từ bảng bằng cú pháp sau:
SELECT * FROM table_name;
Truy vấn sau sẽ hiển thị hồ sơ của Nhân viên.
SELECT * FROM Employees;
Kết quả của truy vấn SELECT ở trên là:
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | THÀNH PHỐ | KHOA | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C # | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | ĐIỀU CHỈNH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C # | 5 |
3001 | PRANOTI | CHIA SẺ | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | DÂY | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | MỤC TIÊU | 60500 | MUMBAI | KIỂM TRA | 4 |
4002 | ASHWINI | TÚI XÁCH | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | KIỂM TRA | 4 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
5003 | ROSHAN | NEHTE | 48500 | ĐIỀU CHỈNH | C # | 5 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | KIỂM TRA | 4 |
6002 | TẠP CHÍ | JADHAV | 60500 | BANGALORE | C # | 5 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORACLE | 1 |
Truy vấn sau sẽ hiển thị các bản ghi của Người quản lý.
SELECT * FROM Manager;
Kết quả của truy vấn SELECT ở trên là:
Managerid | manager_name | manager_department |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | KIỂM TRA |
5 | Akash Kadam | C # |
Truy vấn sau sẽ hiển thị các bản ghi của Máy tính xách tay.
SELECT * FROM Laptop;
Kết quả của truy vấn SELECT ở trên là:
LAPTOPID | TÊN | NGƯỜI LAO ĐỘNG |
101 | DELL | KHÔNG ĐẦY ĐỦ |
102 | HP | 1002 |
103 | LENOVO | KHÔNG ĐẦY ĐỦ |
104 | HP | 3003 |
105 | DELL | 4002 |
106 | LENOVO | 4003 |
107 | DELL | 5001 |
108 | HP | KHÔNG ĐẦY ĐỦ |
109 | DELL | KHÔNG ĐẦY ĐỦ |
110 | HP | KHÔNG ĐẦY ĐỦ |
111 | LENOVO | 2002 |
112 | LENOVO | 6003 |
113 | HP | 1003 |
Bước 5:Chúng tôi đã sẵn sàng sử dụng INNER JOIN trong các truy vấn
Hãy cùng tìm hiểu Nội tâm với sự trợ giúp của các ví dụ.
Ví dụ 1: Viết truy vấn để hiển thị id nhân viên, tên, họ, lương, thành phố từ bảng của nhân viên, id người quản lý và tên người quản lý từ bảng người quản lý bằng cách sử dụng kết nối Nội bộ.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, E.CITY, M.MANAGERID, M.MANAGER_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID;
Trong truy vấn trên, chúng tôi đã tìm nạp id nhân viên, họ, tên, lương, thành phố từ bảng của nhân viên và id người quản lý, tên người quản lý từ bảng người quản lý trong đó cột id người quản lý bảng của nhân viên bằng với cột id người quản lý bảng của người quản lý. Truy vấn sẽ trả về tất cả các bản ghi đối sánh từ cả hai bảng. Id người quản lý là một cột chung giữa cả hai bảng. E là tên bí danh cho bảng của nhân viên, trong khi M là tên cho bảng của người quản lý. Cột id người quản lý hoạt động như một khóa ngoại trong bảng của nhân viên. Id người quản lý hoạt động như khóa chính trong bảng người quản lý, tạo mối quan hệ cha-con giữa hai bảng.
Kết quả của truy vấn trên là:
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | THÀNH PHỐ | KHOA | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
2001 | PRACHI | SHARMA | 55500 | ĐIỀU CHỈNH | ORACLE | 1 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORACLE | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
3002 | ANUJA | DÂY | 50500 | JAIPUR | FMW | 2 |
3001 | PRANOTI | CHIA SẺ | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4002 | ASHWINI | TÚI XÁCH | 54500 | NOIDA | JAVA | 3 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
4001 | RAJESH | MỤC TIÊU | 60500 | MUMBAI | KIỂM TRA | 4 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | KIỂM TRA | 4 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | KIỂM TRA | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C # | 5 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C # | 5 |
5003 | ROSHAN | NEHTE | 48500 | ĐIỀU CHỈNH | C # | 5 |
6002 | TẠP CHÍ | JADHAV | 60500 | BANGALORE | C # | 5 |
Các bản ghi được hiển thị theo thứ tự tăng dần theo id người quản lý mặc định.
Ví dụ 2: Viết truy vấn để hiển thị id nhân viên, họ, tên, thành phố và phòng ban từ bảng của nhân viên và id người quản lý và tên người quản lý từ bảng người quản lý bằng cách sử dụng Nội dung tham gia với bộ phận nhân viên là C #.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.CITY, E.DEPARTMENT, M.MANAGERID, M.MANAGER_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID WHERE DEPARTMENT = ‘C#’;
Trong truy vấn trên, chúng tôi đã tìm nạp id nhân viên, họ, tên, thành phố và phòng ban từ bảng của nhân viên, id người quản lý và tên người quản lý từ bảng người quản lý trong đó id người quản lý từ bảng nhân viên bằng id người quản lý chỉ từ bảng người quản lý những hồ sơ nhân viên có bộ phận nhân viên là C #.
Kết quả của truy vấn trên là:
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | THÀNH PHỐ | KHOA | MANAGERID |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C # | 5 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C # | 5 |
5003 | ROSHAN | NEHTE | 48500 | ĐIỀU CHỈNH | C # | 5 |
6002 | TẠP CHÍ | JADHAV | 60500 | BANGALORE | C # | 5 |
Trong đầu ra obove, chúng ta chỉ có thể thấy những bản ghi được truy xuất từ những nhân viên có bộ phận là C #. Chúng tôi sử dụng mệnh đề WHERE với tham gia INNER.
Ví dụ 3: Viết truy vấn để hiển thị id nhân viên, tên, lương, thành phố và phòng ban từ bảng của nhân viên cũng như id máy tính xách tay và tên máy tính xách tay từ bảng máy tính xách tay bằng cách sử dụng Inner Join.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.SALARY, E.CITY, E.DEPARTMENT, L.LAPTOPID, L.NAME FROM EMPLOYEES E INNER JOIN LAPTOP L ON E.EMPLOYEEID = L.EMPLOYEEID;
Trong truy vấn trên, chúng tôi đã tìm nạp id nhân viên, tên, lương, thành phố và phòng ban từ bảng nhân viên, id máy tính xách tay và tên từ bảng máy tính xách tay trong đó id nhân viên từ bảng nhân viên bằng với id nhân viên từ bảng máy tính xách tay . Id nhân viên là một khóa ngoại trong bảng Máy tính xách tay, tạo mối quan hệ mẹ-con giữa bảng Nhân viên và bảng Máy tính xách tay.
Kết quả của truy vấn trên là:
EMPLOYEEID | FIRST_NAME | TIỀN LƯƠNG | THÀNH PHỐ | KHOA | LAPTOPID | TÊN |
1002 | VAIBHAV | 60000 | NOIDA | C # | 102 | HP |
3003 | DEEPAM | 58500 | MUMBAI | JAVA | 104 | HP |
4002 | ASHWINI | 54500 | NOIDA | JAVA | 105 | DELL |
4003 | RUCHIKA | 60000 | DELHI | ORACLE | 106 | LENOVO |
5001 | ARCHIT | 55500 | DELHI | KIỂM TRA | 107 | DELL |
2002 | BHAVESH | 65500 | PUNE | FMW | 111 | LENOVO |
6003 | NIKITA | 65000 | HYDERABAD | ORACLE | 112 | LENOVO |
1003 | NIKHIL | 50500 | JAIPUR | FMW | 113 | HP |
Chỉ những bản ghi đó được hiển thị trong đầu ra nhất định mà Máy tính xách tay được chỉ định.
Ví dụ 4: Viết truy vấn để hiển thị id nhân viên, tên, lương và phòng ban từ bảng nhân viên và Id người quản lý và tên người quản lý từ bảng người quản lý bằng cách sử dụng tham gia bên trong nơi lương> 57000 hoặc phòng ban là Oracle.
SELECT EMPLOYEEID, FIRST_NAME, SALARY, DEPARTMENT, M.MANAGERID, M.MANAGER_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID = M.MANAGERID WHERE SALARY > 57000 OR DEPARTMENT = 'ORACLE';
Trong truy vấn ở trên, chúng tôi đã tìm nạp id nhân viên, họ, lương và phòng ban từ bảng của nhân viên và id người quản lý và tên người quản lý từ bảng người quản lý trong đó id người quản lý từ bảng nhân viên bằng với id người quản lý từ người quản lý chỉ những nhân viên có lương lớn hơn 57000 hoặc Bộ phận là Oracle.
Kết quả của truy vấn trên là:
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | THÀNH PHỐ | KHOA | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
2001 | PRACHI | SHARMA | 55500 | ĐIỀU CHỈNH | ORACLE | 1 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
4001 | RAJESH | MỤC TIÊU | 60500 | MUMBAI | KIỂM TRA | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C # | 5 |
6002 | TẠP CHÍ | JADHAV | 60500 | BANGALORE | C # | 5 |
Trong kết quả đầu ra ở trên, chỉ những hồ sơ nhân viên được hiển thị có mức lương lớn hơn 57000 hoặc bộ phận nhân viên là 'Oracle'. Toán tử OR hiển thị các bản ghi nếu một trong các điều kiện đã cho trong truy vấn là đúng.