  Computer science educators seek to understand the types of mistakes that
students make when learning a new (programming) language so that they can help
students avoid those mistakes in the future. While educators know what mistakes
students regularly make in languages such as C and Python, students struggle
with SQL and regularly make mistakes when working with it. We present an
analysis of mistakes that students made when first working with SQL, classify
the types of errors introduced, and provide suggestions on how to avoid them
going forward. In addition, we present an automated tool, SQLRepair, that is
capable of repairing errors introduced by undergraduate programmers when
writing SQL queries. Our results show that students find repairs produced by
our tool comparable in understandability to queries written by themselves or by
other students, suggesting that SQL repair tools may be useful in an
educational context. We also provide to the community a benchmark of SQL
queries written by the students in our study that we used for evaluation of
SQLRepair.
