Outer join specifications are included in the ODBC SQL grammar because they are used quite often, especially with relational DBMSs. The basic idea behind an outer join is as follows. Suppose Table A and Table B are just listed in the table list. This is known as an Inner Join. Any row in either Table A or Table B that does not match a row in the other table is left out of the result data set. By contrast, if Table A and Table B are joined by an outer join, all rows in either Table A or Table B that do not contain matching rows in the other table are included in the result data set. Columns in those rows that would have contained matching values from the other table are empty. Thus, an outer join adds nonmatching rows to a result data set where an inner join would exclude them. A "left" outer join of Table A with Table B preserves nonmatching rows from Table A. A "right" outer join of Table A with Table B preserves nonmatching rows from Table B. Finally, a "full" outer join preserves nonmatching rows from both Table A and Table B.