In a well-designed database, related facts live in separate tables: players in one, teams in another, matches in a third. This avoids duplication, but it means a single useful answer often requires data from several tables at once. Joining is the mechanism that recombines these separated facts into one result, reconnecting rows that belong together through their shared key values.
The INNER JOIN is the most fundamental join and the one you will reach for most. It returns only the rows where a match exists in both tables, pairing each row from one table with its corresponding row in the other. This is exactly what you want when you need complete records, such as every delivery alongside the full details of the player who faced it.
Understanding joins is the dividing line between writing trivial single-table queries and answering the real, multi-dimensional questions businesses actually ask. Because normalisation deliberately splits data apart, knowing how to bring it back together correctly, and understanding which rows a join keeps or drops, is among the most valuable and most tested SQL skills you will ever develop.