a) Remove column from table 't1' - DML operations can proceed while DDL is in progress i.e. ALTER TABLE .. DROP column..
mysql >show processlist;
+-----+------+-----------+------+---------+------+----------------+----------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+-----------+------+---------+------+----------------+----------------------------------+
| 67 | root | localhost | test | Query | 0 | init | show processlist |
| 604 | root | localhost | test | Query | 3 | altering table | alter table t1 drop column data2 |
+-----+------+-----------+------+---------+------+----------------+----------------------------------+
2 rows in set (0.00 sec)
mysql >insert into t1 values (null,'xxxx','yyyy');
Query OK, 1 row affected (0.00 sec)
mysql >select * from t1 where id=2;
+----+----------------------------------------------------+-------+
| id | data | data2 |
+----+----------------------------------------------------+-------+
| 2 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | a |
+----+----------------------------------------------------+-------+
1 row in set (0.00 sec)
b) Add new column table 't1' - DML operations can proceed as long as they do not access the new column that is being added to the table:
mysql>show processlist;
+-----+------+-----------+------+---------+------+----------------+---------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+-----------+------+---------+------+----------------+---------------------------------------------------------+
| 67 | root | localhost | test | Query | 0 | init | show processlist |
| 604 | root | localhost | test | Query | 38 | altering table | alter table t1 add column data2 varchar(20) default 'a' |
+-----+------+-----------+------+---------+------+----------------+---------------------------------------------------------+
2 rows in set (0.00 sec)
mysql>insert into test.t1 values (null,'xxxx');
Query OK, 1 row affected (0.02 sec)
mysql>insert into test.t1 values (null,'xxxx','yyyy');
ERROR 1136 (21S01): Column count doesn't match value count at row 1