A sub-query is a query embedded within another SQL query. The sub-query executes first and returns its results to the outer query. Sub-queries can be used to filter records in the outer query based on conditions determined by the sub-query results. Sub-queries can return single rows, multiple rows, or multiple columns and are used with operators like =, >, IN to relate the outer and inner queries.