Nie zmieniaj projektu bazy danych w czasie wykonywania, ale zaprojektuj go w taki sposób, aby zmienić dane, a nie strukturę.
Możesz mieć dwa stoły. Jeden o nazwie Student
z kolumnami rollno
i name
, może PK na rollno
jeśli jest unikalny.
Następnie przygotuj kolejną tabelę o nazwie Thing
(dowolna odpowiednia nazwa, ale nie wiem, czego dotyczą Twoje dane) z trzema kolumnami when
(data/godzina), value
(dowolne odpowiednie imię) (CHAR(1)) i student
(ten sam typ co rollno
).
Zdefiniuj PK dla obu when
i value
aby upewnić się, że każdy uczeń ma tylko jedną wartość na dzień. Zdefiniuj FK z Thing.student
do Student.rollno
. Teraz Twoja baza danych dba o utrzymanie (w większości) spójności Twoich danych.
Zdefiniuj indeksy w zależności od potrzeb dotyczących zaznaczeń, wstawek i aktualizacji w różnych kolumnach.
Następnie do zapytania połącz obie tabele, aby uzyskać pożądany wynik, np.
select s.name, t.value
from Student s
left join Thing t on t.student = s.rollno
where t.when == 'whenever'
(Nie jestem pewien co do dialektu mysql, więc może potrzebnych jest więcej cudzysłowów. Prosimy o edycję.)