Create new table in existing module without affecting existing table data
Approach to generate a new table without affecting existing table's data.

Declare the table structure in hook_schema because for any new user who will install this module later should get this table so we have to code it here in hook_schema. 

/**
 * hook_schema().
 */

function my_module_schema() {
  $schema = array();
  $schema['new_table'] = array(
    'description' =&gt; 'Table for storing information about static media
asset .',
    'fields' =&gt; array(
      'aid' =&gt; array(
        'type' =&gt; 'serial',
        'not null' =&gt; TRUE,
        'description' =&gt; 'Primary Key: Unique aggregator static media asset ID.',
      ),
      'asset_title' =&gt; array(
        'type' =&gt; 'varchar',
        'length' =&gt; 255,
        'not null' =&gt; TRUE,
        'default' =&gt; '',
        'description' =&gt; 'Title of the static media asset title',
      ),
      'asset_file_path' =&gt; array(
        'type' =&gt; 'varchar',
        'length' =&gt; 255,
        'not null' =&gt; TRUE,
        'default' =&gt; '',
        'description' =&gt; 'CDN url path for asset.',
      ),
      'status' =&gt; array(
        'description' =&gt; 'status field for the static media assets',
        'type' =&gt; 'int',
        'length' =&gt; 1,
        'not null' =&gt; TRUE,
        'default' =&gt; 1,
      ),
    ),
    'primary key' =&gt; array('aid'),
  );
  return $schema;
}


For the users who have already installed the module and want to create a new table can write a hook_update_n() as below.

/**
 * hook_update_n().
 */

function my_module_update_7001() {
  $schema = my_module_schema();
  if(!db_table_exists('new_table'))
    db_create_table('new_table', $schema['new_table']);
}


Here we will get all the schema and creating the 'new_table' by using db_create_table().

Hope this will resolve your issue.
Thanks.