You're describing a multi-valued attribute. That is, a book can have multiple genres.
The way to do this in a relational database like MySQL is create another table. For example, we could call it BOOK_GENRE
.
CREATE TABLE BOOK_GENRE (
book_id INT NOT NULL,
genre_id INT NOT NULL,
PRIMARY KEY (book_id, genre_id),
FOREIGN KEY (book_id) REFERENCES BOOK(book_id),
FOREIGN KEY (genre_id) REFERENCES GENRE(genre_id)
);
For each book, there may be one or more rows in this new table. Each row has one pair of book with one of its genres.
This allows you to insert any number of genres you want. It allows you to search for books that have a specific genre. And many other types of queries.
This is the best strength of a relational database: data is represented by sets of rows, and you can keep adding rows.
It's much better than trying to stuff many values into one column!
You might also like my answer to Is storing a delimited list in a database column really that bad?