title: add column to mysql table if it does not exist
body: <p>My research and experiments haven't yielded an answer yet, so I am hoping for some help.</p>
  
  <p>I am modifying the install file of an application which in previous versions did not have a column which I want to add now. I do not want to add the column manually, but in the installation file and only if the new column does not already exist in the table.</p>
  
  <p>The table is created as follows:</p>
  
  <pre><code>CREATE TABLE IF NOT EXISTS `#__comm_subscribers` (
        `subscriber_id` int(11) NOT NULL auto_increment,
        `user_id` int(11) NOT NULL default '0',
        `subscriber_name` varchar(64) NOT NULL default '',
        `subscriber_surname` varchar(64) NOT NULL default '',
        `subscriber_email` varchar(64) NOT NULL default '',
        `confirmed` tinyint(1) NOT NULL default '0',
        `subscribe_date` datetime NOT NULL default '0000-00-00 00:00:00',
        PRIMARY KEY  (`subscriber_id`),
        UNIQUE KEY `subscriber_email` (`subscriber_email`)
      ) ENGINE=MyISAM CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' COMMENT='Subscribers for Comm are stored here.';
  </code></pre>
  
  <p>If I add the following, below the create table statement, then I am not sure what happens if the column already exists (and perhaps is populated):</p>
  
  <pre><code>ALTER TABLE `#__comm_subscribers` ADD `subscriber_surname`;
  ALTER TABLE `#__comm_subscribers` MODIFY `subscriber_surname` varchar(64) NOT NULL default '';
  </code></pre>
  
  <p>So, I tried the following which I found somewhere. This does not seem to work but I am not entirely sure I used it properly.</p>
  
  <pre><code>/*delimiter '//'
  CREATE PROCEDURE addcol() BEGIN
  IF NOT EXISTS(
  SELECT * FROM information_schema.COLUMNS
  WHERE COLUMN_NAME='subscriber_surname' AND TABLE_NAME='#__comm_subscribers'
  )
  THEN
      ALTER TABLE `#__comm_subscribers`
      ADD COLUMN `subscriber_surname` varchar(64) NOT NULL default '';
  END IF;
  END;
  //
  delimiter ';'
  CALL addcol();
  DROP PROCEDURE addcol;*/
  </code></pre>
  
  <p>Does anyone have a good way to do this?</p>