I think you should first decide if you want to learn the standard library numeric_std, or if you want to learn the 20+ years old non-standard libraries std_logic_arith etc.
The coding style will be very different with the different libraries, so it is important not to pick a book by random.
Even today, surprisingly many books use the old non-standard libraries.
I think that anyone that recommends a book should state which library is used in the examples.
For a beginner, I strongly recommend numeric_std.