Non-repeatable reads occur when a transaction reads the same row twice and gets different data each time due to another transaction modifying the data between reads. This phenomenon is a result of concurrency issues in database systems and is typically addressed using isolation levels like 'Repeatable Read' or higher to ensure data consistency.