I would like to know if there is a way to sort data in a table, not when selecting it, but the actual data in the table. I would like to sort it by 2 columns though. For example the "topic" should go from A-Z and then inside all rows with a topic of "A" should be sorted by the book_title... So basically priority 1: sort by topic, priority 2: sort by title...
How would you know that data are sorted? MySQL does not guarantee you any sequence of records if you do not use an ORDER BY clause.
What you can do, though, is to create a new table and SELECT your data INTO this table in a certain sort order.
the concept of sorting the data in the table is meaningless, as you can only see the data when you query the table. so use an order by clause and for all practical purposes, you will image that your table is sorted.
When you delete a few rows and then insert new ones, they could go anywhere in the table, but you'd never know.
What purpose do you imagine that a "sorted" table would server?