Как (и можно ли) добавить в таблицу поля с вычисляемыми именами на голом MySQL?
Попробуйте подход как тут forums.mysql.com
(пример из страницы по ссылке)

set @addcoltext = concat('ALTER TABLE nick.mytable ADD COLUMN ',concat('day',dayofmonth(curdate() - interval 1 day)),' INTEGER UNSIGNED;');
prepare addcol from @addcoltext;
execute addcol;
deallocate prepare addcol; 

copist: Не очень понятно, что конкретно должно быть в колонках name_1 name_2
0lorin: В будущем — названия стран на языках из первой таблицы.
То есть при появлении новой записи в languages, в таблице countries добавить поле равное `name_` + languages.id?
Отвечу, что нельзя голым майскулом. :-)
Потому что автосоздание вы можете по вешать по сути только на тригер. А он не дружит со склейкой имён полей из переменных(CONCAT). Сам с этим воевал. Пробовал даже создать функцию, которая бы обращалась к полю, имя которого должно собираться из составных частей. Но триггеры послали меня в лес, сказав что «хитрый какой, мы видим что ты в функции создаёшь поле из переменных».
Ни создать, ни даже обратиться к такому полю.
Если же создание поля будет у вас выполнять php, а не MySQL, то там вариант niko83 вам подойдёт.

Но я бы всё таки сделал как советует boodda. С годами пришёл именно к такому варианту. Особенно когда начал использовать ОРМ джанги. Просто на HL проекте не стоит всё завязывать на MySQL. Многие вещи, особенно если это списки. Порой проще вытаскивать из БД и перебирать уже кодом. Ну и для обработки больших списков помогают такие вещи как MongoDB или noSQL