Do you have this in 3 databases, or 3 tables in one database? You don't say a lot about how your database is structured. If you could show how your tables are related, more help could be provided.
I'd use one table for students that I'd not change at all for the new school year. I'd then set up a related table (or system of tables) that contain the data for which you need to specify a new set of data for each school year.
A script working from a found set of students--those not transferring or graduating, can generate a new set of related records in the related tables.
You will need to create several more "Tables" within your database to accomplish this, similar to any Student Information System would handle it.
One table would contain your students. Another table would handle the enrollment data (student number, enrolled year). Another table would handle demographics (which could be split up with mutiple tables depending upon how detailed you need to be). For example, do you need to know historical data of home arrangements (student lived in house A first half of the year, then moved to house B last half of the year, then moved to house C in the next school year, etc). You could end up with over 10 tables just for student information.
This would allow for rollover, as you would not need to modify the student table. Only ADD new records for the student enrollment for the upcoming school year.