Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Hướng dẫn tham gia SQL với các ví dụ

Trong bài viết này, chúng ta sẽ xem xét kỹ lưỡng các SQL Server JOIN. Chúng tôi sẽ xem xét tất cả các loại SQL Server JOIN được hỗ trợ với cú pháp, hình ảnh minh họa trực quan và ví dụ.

Như chúng ta đã biết, dữ liệu bảng là cốt lõi của bất kỳ cơ sở dữ liệu SQL nào. Để sử dụng nó một cách hiệu quả, người quản trị cơ sở dữ liệu cần trích xuất các bản ghi từ một số bảng dựa trên các điều kiện nhất định thường xuyên. Và đó chính xác là những gì SQL JOIN dùng.

JOIN là một mệnh đề SQL được sử dụng để truy xuất cái dữ liệu từ hai hoặc nhiều bảng dựa trên mối quan hệ logic giữa các bảng. Các phép nối chỉ ra cách SQL Server nên sử dụng dữ liệu từ một bảng để chọn các hàng trong bảng khác.

Các loại THAM GIA khác nhau trong SQL

SQL Server hỗ trợ các loại JOIN khác nhau, bao gồm cả INNER JOIN , TỰ THAM GIA , CROSS THAM GIA THAM GIA NGOÀI TRỜI . Trên thực tế, mỗi kiểu nối xác định cách hai bảng có liên quan trong một truy vấn. Đến lượt chúng, có thể chia các THAM GIA NGOÀI RA thành THAM GIA NGOÀI TRÁI , ĐÚNG THAM GIA NGOÀI TRỜI ĐẦY ĐỦ THAM GIA NGOÀI TRỜI .

Để chứng minh rõ hơn cách hoạt động của các JOIN, chúng tôi sẽ tạo hai bảng.

CREATE TABLE AdventureWorks2019.dbo.users (
auid INT IDENTITY
,username VARCHAR(50) NOT NULL
,password VARCHAR(50) NOT NULL
,createdate DATETIME NOT NULL
,isActive TINYINT NOT NULL
);

CREATE TABLE AdventureWorks2019.dbo.userprofile (
apid INT NOT NULL
,auid INT NOT NULL
,firstname VARCHAR(50) NOT NULL
,lastname VARCHAR(50) NOT NULL
,email VARCHAR(100) NOT NULL
,phone VARCHAR(45) NOT NULL
);

Tiếp theo, chúng ta cần chèn dữ liệu vào các bảng đã tạo.

USE AdventureWorks2019
GO
Insert into dbo.users
(auid, username,password, createdate, isActive)
values
(1,'admin','pswrd123', GETDATE(), 1);
Insert into dbo.userprofile
(apid, auid, firstname, lastname, email, phone)
values
(1,1,'Jack', 'Wolf', '[email protected]','600075764216');
Insert into dbo.users
(auid,username,password, createdate, isActive)
values
(2, 'admin1','pass506', GETDATE(), 1);
Insert into dbo.userprofile
(apid, auid, firstname, lastname, email, phone)
values
(2, 3, 'Tom', 'Collins', '[email protected]','878511311054');
Insert into dbo.users
(auid, username,password, createdate, isActive)
values
(4,'fox12','[email protected]', GETDATE(), 1);
Insert into userprofile
(apid, auid, firstname, lastname, email, phone)
values
(4,5,'Bill', 'Fonskin', '[email protected]','450985764216');
Insert into dbo.users
(auid,username,password, createdate, isActive)
values
(6, 'lexus1267','98hnfRT6', GETDATE(), 1);
Insert into dbo.userprofile
(apid, auid, firstname, lastname, email, phone)
values
(7, 7, 'John', 'Hopkins', '[email protected]','878511311054');

THAM GIA BÊN TRONG SQL

Câu lệnh INNER JOIN trả về các bản ghi có giá trị phù hợp trong cả hai bảng.

Cú pháp của mệnh đề SQL INNER JOIN như sau:

SELECT column_name(s)
FROM table1
INNER JOIN table2
 ON table1.column_name = table2.column_name;

SQL OUTER THAM GIA

Trái ngược với mệnh đề INNER JOIN, OUTER JOIN không chỉ trả về các bản ghi phù hợp mà còn trả về các bản ghi không phù hợp. Trong trường hợp có các hàng không khớp trong một bảng đã kết hợp, giá trị NULL sẽ được hiển thị cho chúng.

Có hai loại OUTER JOIN sau trong SQL Server:SQL LEFT JOIN và SQL RIGHT JOIN. Chúng ta hãy xem xét kỹ hơn từng người trong số họ.

THAM GIA TRÁI SQL

SQL LEFT JOIN trả về tất cả các bản ghi từ bảng bên trái (bảng A) và các bản ghi phù hợp từ bảng bên phải (bảng B). Kết quả là 0 bản ghi từ phía bên phải nếu không có bản ghi nào phù hợp.

Cú pháp của mệnh đề SQL LEFT JOIN như sau:

SELECT column_name(s)
FROM tableA
LEFT JOIN tableB
 ON tableA.column_name = tableB.column_name;

THAM GIA QUYỀN SQL

Từ khóa RIGHT JOIN trả về tất cả các bản ghi từ bảng bên phải (table2) và các bản ghi phù hợp từ bảng bên trái (table1). Kết quả là 0 bản ghi từ phía bên trái nếu không có bản ghi nào phù hợp.

Cú pháp của mệnh đề SQL RIGHT JOIN như sau:

SELECT column_name(s)
FROM tableA
RIGHT JOIN tableB
 ON tableA.column_name = tableB.column_name;

SQL FULL OUTER THAM GIA

FULL OUTER JOIN trả về tất cả các bản ghi khi có sự trùng khớp trong các bản ghi bảng bên trái (bảng A) hoặc bên phải (bảng B).

Cú pháp của mệnh đề SQL FULL OUTER JOIN như sau:

SELECT column_name(s)
 FROM tableA
 FULL OUTER JOIN tableB
 ON tableA.column_name = tableB.column_name
  WHERE condition;

THAM GIA CROSS SQL

SQL CROSS JOIN, còn được gọi là THAM GIA cartesian, truy xuất tất cả các tổ hợp các hàng từ mỗi bảng. Trong loại JOIN này, tập kết quả được trả về bằng cách nhân mỗi hàng của bảng A với tất cả các hàng trong bảng B nếu không có điều kiện bổ sung nào được đưa ra.

Để hiểu rõ hơn về CROSS JOIN, hãy xem sơ đồ Venn bên dưới.

Cú pháp của SQL CROSS JOIN như sau:

SELECT * 
FROM tableA 
CROSS JOIN tableB;

SQL tự tham gia

Tự tham gia là một tham gia thông thường, nhưng bảng được kết hợp với chính nó. Điều này ngụ ý rằng mỗi hàng của bảng được kết hợp với chính nó và với mọi hàng khác của bảng.

Cú pháp của SQL self JOIN như sau:

SELECT column_name(s)
FROM table1 T1, table1 T2
  WHERE condition;

Kết luận

Kiến thức và chuyên môn trong việc sử dụng mệnh đề SQL JOIN là kỹ năng cần thiết của bất kỳ DBA hoặc nhà phân tích nào. Với chức năng Hoàn thành mã xuất sắc, dbForge Studio dành cho SQL Server có thể tiết kiệm thời gian và công sức của bạn khi viết ngay cả những mệnh đề JOIN phức tạp nhất. Bạn không cần phải nhớ đến hàng trăm tên cột hoặc bí danh, dbForge Studio cho SQL sẽ nhắc một mệnh đề SQL JOIN đầy đủ. Chức năng phong phú của công cụ giúp thiết kế các truy vấn SQL phức tạp và quản lý các điều kiện JOIN nhanh chóng, dễ dàng và thuận tiện.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thực thi SQL thô trong SQLAlchemy

  2. Bộ vấn đề 1 - Xác định các thực thể

  3. Cơ sở dữ liệu là gì? Định nghĩa, Các loại và Thành phần

  4. Chứng chỉ Chuyên gia Google Data Analytics có giá trị không?

  5. Cách tạo dữ liệu thử nghiệm DB