I've never tried to do this but it was a lot easier 3 years ago than it is now.
Now you need to worry about putting the information for the ticket in ost_ticket, ost_thread, ost_thread_entry, ost_thread_event.
If your parsing an email you would need to make an entry in ost_thread_entry_email.
If you want a collaborator I imagine that you would want to update ost_thread_collaborator
If you have a file attachment you would update ost_file and ost_file_chunk.
If you have form values that you want to fill then you would have to look at all the ost_form* tables and update those accordingly.
So it would be a lot easier to do this in one query per table. Hence multiple queries.
I'm not sure why you need to reinvent the wheel, but thats basically what you are doing by creating tickets via SQL query. I would recommend using the ticket api, or sending the ticket system an email from a form if you need to open a ticket outside of the API.