Есть два способа достичь того, что вы хотите.
Первое: одно значение всегда можно заменить запросом, возвращающим одно значение:
insert into book (book_id, category_id, book_name, buy_price, sell_price)
values ('B-001',
(select category_id from category where category_name = 'adventure'),
'Tarzan',
200,
300
);
Второе: вы можетевставить строки, которые вы выбираете откуда-то:
insert into book (book_id, category_id, book_name, buy_price, sell_price)
select 'B-001', category_id, 'Tarzan', 200, 300
from category where category_name = 'adventure';