Tìm hiểu cách kết hợp dữ liệu từ hai bảng bằng toán tử SQL JOIN.
Bạn đang xem : tham gia bên trong là gì
Làm cách nào để bạn kết hợp dữ liệu từ các bảng khác nhau trong một truy vấn? Một tính năng SQL được gọi là JOIN là toán tử phổ biến nhất được sử dụng để tạo các truy vấn phức tạp. Tìm hiểu những điều cơ bản trong bài viết này.
SQL cho phép chúng tôi chọn dữ liệu từ nhiều bảng. Trên thực tế, toàn bộ ý tưởng sử dụng cơ sở dữ liệu quan hệ là chọn dữ liệu từ các bảng liên quan. Và chúng ta có thể sử dụng toán tử SQL’s JOIN để thực hiện việc này.
Có nhiều loại JOIN trong SQL. Trong bài viết này, chúng ta sẽ tập trung vào INNER JOIN
, là lệnh JOIN
mặc định (tức là lệnh bạn nhận được nếu sử dụng JOIN
từ khóa của chính nó).
Khi nào bạn cần tham gia?
Tại sao chúng ta cần kết hợp dữ liệu từ một số bảng? Câu trả lời đơn giản là đôi khi một bảng không chứa tất cả dữ liệu bạn cần.
Hãy tưởng tượng rằng bảng movie
lưu trữ thông tin trong các cột id
, title
, production_year < / code> và
director_id
.
idtitleproduction_yeardirector_id
1Psycho19601
2Midnight in Paris20112
3Sweet và Lowdown19932
4Nói chuyện với cô ấy20023
5 Làn da tôi sống ở đây20113
Một bảng khác, director
, chứa thông tin về các giám đốc: id
, name
và của họ sinh_năm
.
idnamebirth_year
1Alfred Hitchcock1899
2Woody Allen1935
3Pedro Almodóvar1949
Lưu ý rằng mỗi phim chỉ có một cột liên quan đến đạo diễn: director_id
. Các giá trị số ID giống nhau trong bảng director
(trong cột director_id
) và trong bảng movie >
(trong cột id
).
Chúng tôi muốn hiển thị dữ liệu của từng bộ phim cùng với thông tin chi tiết về đạo diễn của bộ phim đó. Kết quả là một bảng mới với dữ liệu từ hai bảng: movie
và director
. Các bảng được kết hợp (hoặc nối với nhau) dựa trên số ID của giám đốc. Nói cách khác, phim có director_id
cụ thể được kết hợp với thông tin của đạo diễn có ID này - ví dụ: bộ phim Psycho với director_id = 1
được khớp với bản ghi trong đó id = 1
(Alfred Hitchcock) trong director code > bảng. Nhìn vào tập hợp kết quả:
idtitleproduction_yeardirector_ididnamebirth_year
1Psycho196011Alfred Hitchcock1899
2Midnight in Paris201122Woody Allen1935
3Sweet and Lowdown199322Woody Allen1935
4Nói chuyện với cô ấy200233Pedro Almodóvar1949
5 Làn da tôi sống ở đây201133Pedro Almodóvar1949
Phiên bản minh họa của một ví dụ tương tự được trình bày trong bài viết Hướng dẫn minh họa cho SQL INNER JOIN span >.
Cách sử dụng JOIN trong Truy vấn SQL
Bây giờ, hãy phân tích truy vấn mà chúng tôi vừa sử dụng. Nó lại đây:
LỰA CHỌN * TỪ phim THAM GIA giám đốc ON movie.director_id = director.id;
JOIN
là một dạng ngắn hơn của mệnh đề INNER JOIN
; bạn có thể sử dụng chúng thay thế cho nhau.
Sau khi bạn CHỌN
các cột của mình, bạn đặt từ khóa FROM
và tên của bảng đầu tiên (trong ví dụ này, movie strong >
). Sau đó, bạn đặt JOIN
(hoặc INNER JOIN
), theo sau là tên của bảng thứ hai (ở đây, director
). Tiếp theo là từ khóa ON
và điều kiện nối (tức là cách khớp các bản ghi từ cả hai bảng). Trong trường hợp này, điều kiện kết hợp khớp với các giá trị trong cột director_id
trong bảng movie
với cột id trong bảng < strong> giám đốc
.
Theo cách này, các bản ghi trong bảng movie
được khớp với các bản ghi chính xác trong director
. Bây giờ chúng ta biết rằng bộ phim Sweet and Lowdown được chỉ đạo bởi đạo diễn Woody Allen, người sinh năm 1935. Bộ phim này có director_id = 2
; có giá trị khớp với cột tương ứng ( id
) trong bảng director
.
Hình ảnh động bên dưới cho thấy cách sử dụng toán tử JOIN
hoạt động và bản ghi nào được trả về:
Một THAM GIAToán tử
hoạt động hợp lý, theo hai bước. Bước đầu tiên trả về một tích Descartes, tức là mỗi hàng trong bảng đầu tiên được kết hợp với mỗi hàng trong bảng thứ hai. Trong bước tiếp theo, chỉ các cặp bản ghi đáp ứng điều kiện trong mệnh đề ON
được trả về - trong ví dụ này, chỉ các hàng có director_id
trong movie
bằng id trong director
.
Lưu ý rằng các giá trị được sử dụng trong điều kiện kết hợp không nhất thiết phải là số. Bạn cũng có thể sử dụng các giá trị văn bản và các điều kiện khác phức tạp hơn. Bạn có thể tìm thêm thông tin trong bài viết SQL INNER JOIN được giải thích bằng từ đơn giản .
Điều gì sẽ xảy ra nếu các bản ghi không khớp?
Điều gì sẽ xảy ra nếu có các bản ghi trong bảng đầu tiên không thể khớp với các bản ghi trong bảng thứ hai hoặc ngược lại? INNER JOIN
hoạt động như thế nào trong trường hợp này? Hãy xem một ví dụ. Đây lại là bảng movie
:
idtitleproduction_yeardirector_id
1Psycho19601
2Midnight in Paris20112
3Sweet và Lowdown19932
4Nói chuyện với cô ấy20023
5 Làn da tôi sống vào năm 2013
6Nhà mới2020NULL
Và đây là director
:
idnamebirth_year
1Alfred Hitchcock1899
2Woody Allen1935
3Pedro Almodóvar1949
4Martin Scorsese1942
Đây là cùng một truy vấn:
CHỌN tiêu đề, production_year, director_id, id, name, sinh_year TỪ phim THAM GIA giám đốc ON movie.director_id = director.id;
Bảng kết quả chỉ chứa các bản ghi là một cặp phù hợp:
idtitleproduction_yeardirector_ididnamebirth_year
1Psycho196011Alfred Hitchcock1899
2Midnight in Paris201122Woody Allen1935
3Sweet and Lowdown199322Woody Allen1935
4Nói chuyện với cô ấy200233Pedro Almodóvar1949
5 Làn da tôi sống vào năm 201133Pedro Almodóvar1949
Nếu bạn nhìn vào bảng movie
, thì cột director_id
là NULL cho phim The new house. Và trong bảng director
, đạo diễn Martin Scorsese ( id = 4
) không liên quan đến bất kỳ hàng nào trong bảng phim
. Do đó, các hàng này không được hiển thị trong tập kết quả.
Quy tắc cho INNER JOIN (JOIN)
là chỉ các hàng có khớp trong cả hai bảng mới được trả về. Trong các loại toán tử JOIN
khác, hành vi này là khác nhau. Mở rộng chủ đề này bằng cách đọc bài viết Giải thích các loại SQL JOIN .
Lọc bản ghi trong tập kết quả
Bạn cũng có thể lọc các bản ghi được trả về bởi JOIN
. Ví dụ: chúng tôi chỉ có thể liệt kê những phim đó và đạo diễn của chúng mà đạo diễn sinh sau năm 1940. Sau đây là câu hỏi:
CHỌN tiêu đề, production_year, director_id, id, name, sinh_year TỪ phim THAM GIA giám đốc TRÊN movie.director_id = director.id WHERE director.birth_year & gt; 1940;
Nó trả về kết quả:
idtitleproduction_yeardirector_ididnamebirth_year
4Nói chuyện với cô ấy200233Pedro Almodóvar1949
5 Làn da tôi sống vào năm 201133Pedro Almodóvar1949
Một lần nữa, chúng ta có các hàng từ bảng movie
được kết hợp với các hàng từ bảng director
. Ban đầu, điều kiện tham gia là giống nhau (ON director.id = movie.director_id).
Tuy nhiên, trong bước tiếp theo, các bản ghi có giá trị nhỏ hơn hoặc bằng 1940 trong cột năm sinh sẽ bị xóa. Do đó, bạn không tìm thấy Woody Allen trong tập kết quả vì ông sinh năm 1935 (trước / dưới năm 1940). Alfred Hitchcock cũng không có ở đây; anh ấy sinh năm 1899. Chúng tôi làm được điều này nhờ WHERE director.birth_year & gt; 1940
.
Bạn muốn tìm hiểu thêm về SQL JOINs?
Nếu bạn muốn mở rộng kỹ năng của mình, hãy thử khóa học Cơ bản về SQL của chúng tôi, khóa học này bao gồm nhiều hơn về cách nối các bảng (bao gồm rất nhiều bài tập thực hành!). Đây là một phần của bài học Nguyên tắc cơ bản về SQL , sẽ giúp bạn nâng cao kiến thức SQL của mình lên cấp độ tiếp theo.
Hoặc có thể bạn đã biết một số SQL và bạn muốn tìm hiểu thêm về JOIN. Trong trường hợp đó, tôi khuyên bạn nên xem Cách tìm hiểu SQL JOIN , Giải thích các loại SQL JOIN và Bảng lừa đảo SQL JOIN của chúng tôi. Bạn cũng có thể tham gia khóa học SQL JOINs của chúng tôi. Sau đó, hãy thực hành những gì bạn biết bằng cách sử dụng Đường dẫn học tập trực tuyến về Thực hành SQL của chúng tôi. Chúc bạn học vui vẻ!
Xem thêm những thông tin liên quan đến chủ đề tham gia bên trong sql là gì
Learn SQL In 60 Minutes
- Tác giả: Web Dev Simplified
- Ngày đăng: 2018-11-17
- Đánh giá: 4 ⭐ ( 4198 lượt đánh giá )
- Khớp với kết quả tìm kiếm: In this video we will cover everything you need to know about SQL in only 60 minutes. We will cover what SQL is, why SQL is important, what SQL is used for, the syntax of SQL, and multiple examples of SQL. SQL is the standard language for interacting with and manipulating data in a relational database system, and is one of the most important concepts you can learn in programming. It allows you to create, read, update, and delete data which is something nearly every application will need to do.
IMPORTANT: Exercises Worksheet Repository:
https://github.com/WebDevSimplified/Learn-SQLHow to Install MySQL:
https://youtu.be/u96rVINbAUIOutline:
[00:00] - Intro
[05:10] - SQL Syntax
[07:30] - Create Database
[09:20] - Drop Database
[10:34] - Use Database
[11:22] - Create Table
[13:01] - Alter Table
[14:47] - Drop Table
[15:08] - Create Table (Part 2)
[15:35] - Band Table
[15:55] - Not Null
[16:10] - Primary Key/ID/Auto Increment
[18:40] - Album Table
[20:05] - Foreign Key/Table Relationships
[23:05] - Insert Into
[25:40] - Select
[26:27] - Limit
[26:52] - Specific Columns
[27:18] - As/Alias Columns
[28:20] - Order By
[29:24] - Insert Into (Part 2)
[32:04] - Distinct Select
[33:07] - Update
[33:40] - Where
[33:15] - Less Than
[33:55] - Like String Filter
[37:26] - Or
[38:04] - And
[38:40] - Between
[39:20] - Is Null
[39:46] - Delete
[41:00] - Join
[43:25] - Inner/Left/Right Comparison
[46:42] - Aggregate Functions
[48:05] - Group By
[50:40] - Combined With Join
[51:15] - Alias Tables
[53:57] - Having vs WhereLearn X in Y Minutes Playlist:
http://bit.ly/2RscdMZTwitter:
https://twitter.com/DevSimplifiedGitHub:
https://github.com/WebDevSimplifiedCodePen:
https://codepen.io/WebDevSimplifiedSQL LearnSQL MySQL
Tham gia bên ngoài trong SQL là gì?
- Tác giả: presbyteryofstockton.org
- Đánh giá: 5 ⭐ ( 7975 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Tham gia bên ngoài. Khi thực hiện một phép nối bên trong, các hàng từ một trong hai bảng chưa được so khớp trong bảng khác sẽ không được trả về. Trong một phép nối bên ngoài, các hàng chưa khớp trong một hoặc cả hai bảng có thể được trả về. Có một số kiểu nối ngoài: FULL OUTER JOIN trả về các hàng chưa khớp từ cả hai bảng.
Stored Procedure Parameters trong SQL Server
- Tác giả: freetuts.net
- Đánh giá: 5 ⭐ ( 4203 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Giới thiệu tham số Stored Procedure Parameters trong SQL Server, cách sử dụng tham số khi làm việc với stored procedure như tạo tham số, truyền tham số trong.
SQL Server: Sự khác biệt giữa THAM GIA BỞI và NHÓM B BYNG
- Tác giả: qastack.vn
- Đánh giá: 3 ⭐ ( 1328 lượt đánh giá )
- Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Chúng được sử dụng ở những nơi khác nhau. group bysửa đổi toàn bộ truy vấn,…
Sự khác biệt giữa Tham gia bên trong và Tham gia bên ngoài
- Tác giả: vi.strephonsays.com
- Đánh giá: 4 ⭐ ( 9173 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Tham gia bên trong và tham gia bên ngoài Tham gia bên trong và tham gia bên ngoài là hai trong số các phương pháp nối SQL được sử dụng trong xử lý truy vấn cho cơ sở dữ liệu. Họ thuộc về gia đình của
50 câu hỏi và câu trả lời phỏng vấn SQL hàng đầu dành cho những người có kinh nghiệm & làm mới (Phần I)
- Tác giả: viblo.asia
- Đánh giá: 3 ⭐ ( 3882 lượt đánh giá )
- Khớp với kết quả tìm kiếm: SQL là viết tắt của Structured Query Language là một ngôn ngữ lập trình dành riêng cho miền để quản lý dữ liệu trong Hệ thống quản lý cơ sở dữ liệu. Kỹ năng lập trình SQL rất được mong muốn và yêu cầu...
Truy vấn con trong sql - Deft Blog
- Tác giả: shareprogramming.net
- Đánh giá: 4 ⭐ ( 8832 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Trong SQL truy vấn lồng là một câu truy vấn được định nghĩa bên trong một câu truy vấn khác. Câu truy vấn được đặt bên trong một câu truy vấn
Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình