sql-join-15

JOIN trong SQL Server

XEM NHANH

Những ai muốn trở thành lập trình viên hay mới tiếp cận lĩnh vực công nghệ thông tin thì chắc chắn phải tìm hiểu SQL join là gì và cách dùng câu lệnh này như thế nào. Bài viết sau đây sẽ chia sẻ đến bạn những thông tin về Join trong SQL Server cùng với các ví dụ cụ thể để bạn hiểu theo cách đơn giản hơn.

SQL Server là gì?

Đây là một phần mềm do Microsoft phát triển và được sử dụng vào mục đích lưu trữ, truy xuất các dữ liệu theo chuẩn RDBMS. Mỗi RDBMS sẽ bao gồm công cụ CSDL (cơ sở dữ liệu), CSDL, những ứng dụng để quản lý các dữ liệu cùng những bộ phận liên quan,…

sql-join-1
SQL Server là gì?

Phiên bản SQL Server đầu tiên mà Microsoft phát hành là vào năm 1989. Phiên bản này hoạt động trên hệ điều hành 16bit và có tên gọi là  SQL Server 1.0. Đây là nền tảng để phát triển những phiên bản SQL Server mới cho đến ngày nay. Hiện nay SQL Server đã tối ưu hơn để vận hành trong môi trường CSDL lớn và phục vụ được hàng nghìn người cùng sử dụng trong một thời điểm. 

Trước khi tìm hiểu về lệnh SQL JOIN, mọi người hãy tìm hiểu sơ qua về thành phần, tính năng, phiên bản của SQL Server:

SQL Server có những thành phần nào?

Một SQL Server hiện nay được Microsoft thiết lập dựa vào 1 cấu trúc dạng bảng biểu. Nó bao gồm những dòng có thể kết nối những dữ liệu liên quan ở nhiều bảng khác nhau. Vì vậy mà nó đã loại bỏ được nhu cầu về lưu trữ các dữ liệu tại đa dạng vị trí trong CSDL

Như vậy SQL Server có 2 thành phần là SQLOS và Database Engine:

Database Engine

Đây là một thành phần chính trong SQL Server, chức năng của Database Engine là xử lý, quản lý lưu trữ, bảo mật các dữ liệu. Thành phần này cũng bao gồm khá nhiều công cụ như quản lý tệp, lưu trữ tệp, trang, bảng, bộ đệm chứa dữ liệu, chỉ mục, giao dịch CSDL.

sql-join-2
QL Server có những thành phần nào?

SQLOS

Đây là tầng cuối ở trong cấu trúc của phần mềm Database Engine. SQLOS sẽ xử lý những nhiệm vụ chính như lên lịch về các nhiệm vụ, quản lý các bộ nhớ, khóa các dữ liệu để tránh những xung đột có thể diễn ra khi người dùng thực hiện cập nhật.

SQL Server bao gồm tính năng nổi bật nào?

Để hiểu rõ về lệnh SQL JOIN, mọi người cần biết SQL Server gồm tính năng nào? Microsoft đang cung cấp một số tính năng về quản lý các dữ liệu cho SQL Server cùng với những dịch vụ hỗ trợ lập trình như SQL Server Data Quality, SQL Server, SQL Server Master. Bên cạnh đó, SQL Server còn cung cấp 2 công cụ hỗ trợ lập trình viên và quản trị CSDL (DBAs):

  • Data Tools: Công cụ này hỗ trợ quá trình phát triển các CSDL.
  • Management Studio: Công cụ này hỗ trợ việc triển khai, quản lý, giám sát những CSDL.
sql-join-3
SQL Server bao gồm tính năng nổi bật nào?

Ngoài ra, SQL Server còn tích hợp cả tính năng về kinh doanh, nó giúp mọi người phân tích các dữ liệu qua:

  • Analysis Services (SSAS): Tính năng phân tích dữ liệu.
  • Reporting Services: Thiết lập báo cáo đơn giản hơn.

SQL Server có những phiên bản nào?

Lệnh SQL JOIN hiện đang được áp dụng trên nhiều phiên bản SQL Server nên bạn phải tìm hiểu trước những phiên bản này. Phần mềm SQL Server hiện đang được cung cấp nhiều loại phiên bản để người dùng tiết kiệm thời gian, chi phí và tăng hiệu suất công việc:

sql-join-4
SQL Server có những phiên bản nào?
  • Enterprise: Phiên bản này tích hợp đầy đủ những tính năng từ cơ bản đến cao cấp của phần mềm SQL Server. Nó bao gồm nhân của bộ máy CSDL, những dịch vụ kèm theo và những công cụ hỗ trợ tạo – quản lý các phân cụm của SQL Server. 
  • Standard: Phiên bản này có ít chức năng nâng cao hơn phiên bản Enterprise. Nó thích hợp với những doanh nghiệp nhỏ và vừa, họ không cần dùng những tính năng cao cấp. 
  • Workgroup: Thích hợp cho những công ty có quy mô lớn với số lượng văn phòng online nhiều. Phiên bản này sở hữu tính năng là lõi CSDL và không đi kèm những dịch vụ liên quan. Tuy nhiên phiên bản này đã không còn xuất hiện ở phần mềm SQL Server bản 2012.
  • Developer: Phiên bản này tích hợp đầy đủ những tính năng giống như phiên bản Enterprise và giới hạn về số lượng những người dùng có thể kết nối và truy cập vào Server cùng lúc. Tuy nhiên, bạn có thể nâng cấp lên phiên bản này lên Enterprise và không phải cài đặt lại.
  • Express: Phiên bản SQL Server khá dễ dùng và nó có chức năng là quản trị CSDL cơ bản, dung lượng cao nhất của nó là một CPU, dung lượng của bộ nhớ là 1GB và kích cỡ cao nhất của CSDL là khoảng 10GB.

SQL JOIN là gì?

Thông thường thì mọi người sẽ lưu trữ các dữ liệu trong nhiều loại bảng và chúng liên kết nhau với 1 giá trị chung trong CSDL dạng quan hệ, ví dụ như Oracle, SQL Server, MySQL,… Như vậy là chúng ta sẽ liên tục phải lấy những dữ liệu của hai hay nhiều bảng rồi tập hợp nó thành một kết quả như ý muốn và căn cứ vào một vài điều kiện.

sql-join-5
Lệnh JOIN trong SQL Server là gì?

Với lệnh JOIN trong SQL Server thì chúng ta có thể đạt được kết quả này. Lệnh này cho phép người lập trình có thể truy xuất những dữ liệu của 2 hay nhiều bảng có liên hệ với nhau và tạo ra một kết quả có ý nghĩa. Người dùng có thể tiến hành nối các bảng với lệnh SELECT với 1 điều kiện là JOIN. Nó sẽ chỉ cách mà SQL Server sử dụng dữ liệu trong 1 bảng và chọn hàng từ những bảng khác. Những bảng nào có liên quan sẽ bị ràng buộc với Foreign key.

SQL JOIN có mấy loại?

Sau đây là 4 loại lệnh JOIN trong SQL Server mà mọi người có thể tham khảo cùng các ví dụ minh hoạ:

INNER JOIN trong SQL Server

Đây là dạng lệnh JOIN được dùng rộng rãi nhất trong SQL Server. Loại này sẽ trả về toàn bộ các hàng trong các bảng nếu điều kiện để kết nối đã đáp ứng.

Cú pháp dùng lệnh INNER JOIN trong SQL Server như sau:

SELECT cot

  FROM bang1

  INNER JOIN bang2

  ON bang1.cot = bang2.cot;

Để hình dung rõ hơn thì bạn có thể tham khảo ví dụ dùng lệnh INNER JOIN như sau:

Ví dụ chúng ta có bảng Nhà Cung chứa hai thông tin là nhacung_ten và nhacung_id:

nhacung_tennhacung_id
IBM10000
Hewlett Packard10001
Microsoft10002
NVIDIA10003

Ví dụ chúng ta có bảng Đơn hàng chứa 3 thông tin là nhacung_id, donhang_ngay, donhang_id:

donhang_iddonhang_ngaynhacung_id
5001252003/05/1210000
5001262003/05/1310001
5001272003/05/1410004

Nếu chúng ta cho chạy lệnh SELECT (dùng thêm dạng lệnh JOIN SQL là INNER JOIN) như sau:

sql-join-7
Ví dụ về lệnh INNER JOIN trong SQL Server

Thì sau đây là bảng kết quả sẽ trả về:

nhacung_idtendonhang_ngay
10000IBM2003/05/12
10001Hewlett Packard2003/05/13

Như vậy, chúng ta có thể thấy hàng NVDIA và Microsoft đã bị loại bỏ vì nhacung_id (10003 và 10002) chỉ tồn tại trong một bảng. Trong bảng Đơn hàng, hàng 500127 đã bị bỏ ra vì nhacung_id 10004 không tồn tại ở bảng Nhà cung.

LEFT OUTER JOIN trong SQL Server

Dạng lệnh SQL JOIN tiếp theo mà mọi người nên tìm hiểu là LEFT OUTER JOIN. Hiện nay có một vài CSDL đang dùng lệnh LEFT JOIN để thay cho lệnh LEFT OUTER JOIN. Vì dạng kết nối này sẽ trả kết quả về những hàng ở trong bảng ở bên trái với điều kiện là ON và nó chỉ lấy tại những hàng ở những bảng đáp ứng các điều kiện đã đặt ra. 

Cú pháp dùng lệnh LEFT JOIN như sau:

SELECT cot

  FROM bang1

  LEFT [OUTER] JOIN bang2

  ON bang1.cot = bang2.cot;

Sau đây là ví dụ về lệnh LEFT JOIN để mọi người hiểu rõ hơn:

Ta có bảng Nhà cung bao gồm nhacung_ten và nhacung_id như sau:

nhacung_idnhacung_ten
10000IBM
10001Hewlett Packard
10002Microsoft
10003NVIDIA

Tiếp theo ta có bảng Đơn hàng gồm nhacung_id, donhang_ngay, donhang_id như sau:

donhang_idnhacung_iddonhang_ngay
500125100002003/05/12
500126100012003/05/13

Nếu chúng ta chạy dạng lệnh SQL JOIN như hình sau:

sql-join-9
Ví dụ về lệnh LEFT OUTER JOIN trong SQL Server

 

Kết quả xuất ra sẽ hiển thị như bảng sau:

nhacung_idnhacung_tendonhang_ngay
10000IBM2003/05/12
10001Hewlett Packard2003/05/13
10002Microsoft<null>
10003NVIDIA<null>

Những hàng NVIDIA và Microsoft vẫn xuất hiện trong bảng kết quả vì chúng ta đang sử dụng lệnh LEFT OUTER JOIN (lấy toàn bộ bảng ở bên trái). Lúc này thì donhang_ngay trong những bản ghi có giá trị là <null>.

RIGHT OUTER JOIN trong SQL Server

Có một vài database hiện nay sử dụng lệnh RIGHT JOIN để thay thế cho lệnh RIGHT OUTER JOIN. Dạng kết nối này sẽ trả kết quả là những hàng ở bảng phía bên phải với điều kiện là ON và nó chỉ lấy các hàng có đáp ứng những điều kiện đã được đặt ra từ trước. 

Cú pháp của lệnh SQL JOIN này được thể hiện như sau:

SELECT cot

 FROM bang1

 RIGHT [OUTER] JOIN bang2

 ON bang1.cot = bang2.cot;

Chúng ta sẽ tìm hiểu rõ hơn về hàm RIGHT JOIN qua ví dụ sau:

Ta có bảng nhà Cung gồm nhacung_ten và nhacung_id như sau:

nhacung_idnhacung_ten
10000Apple
10001Google

Tiếp theo ta có bảng Đơn hàng gồm nhacung_id, donhang_ngay, donhang_id:

donhang_idnhcung_iddonhang_ngay
500125100002003/08/12
500126100012003/08/13
500127100022003/08/14

Nếu chúng ta chạy lệnh SQL JOIN giống hình sau:

sql-join-11
Ví dụ về lệnh RIGHT OUTER JOIN trong SQL Server

Kết quả sẽ hiển thị như bảng sau:

donhang_iddonhang_ngaynhacung_id
5001252003/08/12Apple
5001262003/08/13Google
5001272003/08/14<null>

Như vậy chúng ta thấy hàng 5000127 thuộc donhang_id vẫn xuất hiện ở bảng trả kết quả. Vì chúng ta đã dùng lệnh RIGHT OUTER JOIN. 

FULL OUTER JOIN trong SQL Server

Nhiều CSDL đang dùng lệnh FULL JOIN thay vì dùng lệnh FULL OUTER JOIN. Dạng kết nối này có thể trả về toàn bộ những hàng ở bảng phải và trái cùng giá trị dạng <null> sẽ nằm ở chỗ nào không thể đáp ứng các điều kiện.

Cú pháp của lệnh FULL JOIN như sau:

SELECT cot

 FROM bang1

 FULL [OUTER] JOIN bang2

 ON bang1.cot = bang2.cot;

Bạn có thể theo dõi thêm ví dụ minh hoạ về lệnh SQL JOIN này như sau:

Ta có bảng Nhà cung bao gồm nhacung_ten và nhacung_id:

nhacung_tennhacung_id
IBM10000
Hewlett Packard10001
Microsoft10002
NVIDIA10003

Tiếp theo ta có bảng Đơn hàng bao gồm nhacung_id, donhang_ngay và donhang_id: 

nhacung_iddonhang_iddonhang_ngay
100005001252003/08/12
100015001262003/08/13
100045001272003/08/14

Nếu như chúng ta chạy lệnh SQL JOIN như sau:

sql-join-13
Ví dụ về lệnh FULL OUTER JOIN trong SQL Server

Chúng ta sẽ được bảng trả kết quả như sau:

nhacung_idnhacung_tendonhang_ngay
10000IBM2003/08/12
10001Hewlett Packard2003/08/13
10002Microsoft<null>
10003NVIDIA<null>
<null><null>2003/08/14

Như vậy, những hàng NVIDIA và Microsoft vẫn xuất hiện ở bộ kết quả vì sử dụng lệnh FULL OUTER JOIN. Lúc đó thì donhang_ngay của những bản ghi chứa các giá trị dạng <null>. Hàng 10004 của nhacung_id vẫn nằm ở bảng trả kết quả, tuy nhiên nhacung_ten và nhacung_id của những bản ghi lại chứa các giá trị dạng <null>.

Bài viết trên đã giới thiệu đến mọi người phần mềm SQL Server và cách dùng lệnh SQL JOIN trong phần mềm này. Hy vọng mọi người đã hiểu hơn về lệnh này và biết cách sử dụng từng loại lệnh JOIN để liên kết các bảng dữ liệu một cách hiệu quả.

Tham khảo bài viết liên quan:

Tin mới nhất
Identity V – Cuộc chiến bất đối xứng
irelia-su-gia-1
Cách chơi đội hình Irelia Sử Gia DTCL Mùa 11
bio-la-gi
Bio là gì? Cách tạo Bio thu hút trên mạng xã hội
complaint-la-gi
Complaint là gì? Cách xử lý khiếu nại của khách hàng khéo léo