The WordPress functions changed since the answers here in 2014.
As of today (Version 4.6.1) this code will create a main menu named “My Menu” , main item and sub item.
To run code just paste and saves in your functions.php file in your child theme.
$menu_id = wp_create_nav_menu('My Menu');
$parent_item = wp_update_nav_menu_item($menu_id, 0, array(
'menu-item-title' => __('Main Page'),
'menu-item-url' => home_url( '/main-page/' ),
'menu-item-status' => 'publish',
)
);
wp_update_nav_menu_item($menu_id, 0, array(
'menu-item-title' => __('Sub Item Page'),
'menu-item-url' => home_url( '/sub-item-page/' ),
'menu-item-status' => 'publish',
'menu-item-parent-id' => $parent_item)
);
Docs: