Mysql: add column to table
Adding a column to an existing mysql table is simple.
Below, I'm showing information regarding a phpbb table that I needed to alter, in order to upgrade phpbb:
Code:
mysql> describe phpbb_forums;
+--------------------------+-----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------------+-----------------------+------+-----+---------+----------------+
| forum_id | mediumint(8) unsigned | NO | PRI | NULL | auto_increment |
| parent_id | mediumint(8) unsigned | NO | | 0 | |
| left_id | mediumint(8) unsigned | NO | MUL | 0 | |
| right_id | mediumint(8) unsigned | NO | | 0 | |
| forum_parents | mediumtext | NO | | NULL | |
| forum_name | varchar(255) | NO | | | |
| forum_desc | text | NO | | NULL | |
| forum_desc_bitfield | varchar(255) | NO | | | |
| forum_desc_options | int(11) unsigned | NO | | 7 | |
| forum_desc_uid | varchar(8) | NO | | | |
| forum_link | varchar(255) | NO | | | |
| forum_password | varchar(40) | NO | | | |
| forum_style | mediumint(8) unsigned | NO | | 0 | |
| forum_image | varchar(255) | NO | | | |
| forum_rules | text | NO | | NULL | |
| forum_rules_link | varchar(255) | NO | | | |
| forum_rules_bitfield | varchar(255) | NO | | | |
| forum_rules_options | int(11) unsigned | NO | | 7 | |
| forum_rules_uid | varchar(8) | NO | | | |
| forum_topics_per_page | tinyint(4) | NO | | 0 | |
| forum_type | tinyint(4) | NO | | 0 | |
| forum_status | tinyint(4) | NO | | 0 | |
| forum_posts | mediumint(8) unsigned | NO | | 0 | |
| forum_topics | mediumint(8) unsigned | NO | | 0 | |
| forum_topics_real | mediumint(8) unsigned | NO | | 0 | |
| forum_last_post_id | mediumint(8) unsigned | NO | MUL | 0 | |
| forum_last_poster_id | mediumint(8) unsigned | NO | | 0 | |
| forum_last_post_subject | varchar(255) | NO | | | |
| forum_last_post_time | int(11) unsigned | NO | | 0 | |
| forum_last_poster_name | varchar(255) | NO | | | |
| forum_last_poster_colour | varchar(6) | NO | | | |
| forum_flags | tinyint(4) | NO | | 32 | |
| forum_options | int(20) unsigned | NO | | 0 | |
| display_subforum_list | tinyint(1) unsigned | NO | | 1 | |
| display_on_index | tinyint(1) unsigned | NO | | 1 | |
| enable_indexing | tinyint(1) unsigned | NO | | 1 | |
| enable_icons | tinyint(1) unsigned | NO | | 1 | |
| enable_prune | tinyint(1) unsigned | NO | | 0 | |
| prune_next | int(11) unsigned | NO | | 0 | |
| prune_days | mediumint(8) unsigned | NO | | 0 | |
| prune_viewed | mediumint(8) unsigned | NO | | 0 | |
| prune_freq | mediumint(8) unsigned | NO | | 0 | |
+--------------------------+-----------------------+------+-----+---------+----------------+
42 rows in set (0.01 sec)
The column that I want to add is "forum_recent_topics" and I want to add it after the existing column "prune_freq"(i.e.).
Below command will add "forum_recent_topics" column, right after "prune_freq":
Code:
mysql> ALTER TABLE phpbb_forums ADD forum_recent_topics tinyint(1) AFTER prune_freq;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
If I wanted the new column to be first:
Code:
mysql> ALTER TABLE phpbb_forums ADD forum_recent_topics tinyint(1) FIRST;