In all the previous articles I’ve written on SQL I’ve showed you how to get data out of the database.  Now, we’re switching gears.  I’m going to show you how to put data into the database.  The command to put data into the database is INSERT.  There are four main ways to use this command, so let’s dive right in.

Grab the example file here, so you can follow along on your own database server.

If you wanted to put a record into the productSale table, you have to understand what columns it has, and what types of data it wants for each column.  So let’s take a look at the table definition for productSale.

CREATE TABLE productSale (
buyer VARCHAR(255)
, productName VARCHAR(255)
, purchaseDate DATETIME
, qtypurchased INT
, pricePaid DECIMAL(9,2)

Based on this script, you can see the different data types each column expect.  In case you are unfamiliar with the data types, search this site for articles on “data types” and you’ll see a lot more detail than I’ll go into here. A varchar is a variable length string.  Datetimes are dates, int is an integer, and decimal(9,2) is a decimal.  Given this definition we know that the following INSERT statement will work.

INSERT INTO productSale
VALUES('Shannon Lowder', 'paper', '1/1/2000', 2, 1.00)

There is a slightly different version of this statement that lets you use SELECT instead of VALUES.  I prefer this version, since you can only use VALUES with one record of data at a time.  If you use the SELECT version, you can also use UNION or UNION ALL and insert multiple rows at once.

INSERT INTO productSale
SELECT 'Shannon Lowder', 'paper', '1/1/2000', 2, 1.00

Either way, both of the previous statements would insert the same data into the table.  Both show you the bare minimum required to insert a record into a table.  INSERT into [table name], and list the values you want to put into each column.  As long as you list a value for each column, and the data type for each value is compatible with the one the table is expecting, you’re golden.  If you have too many or too few columns, or if any one column has an incompatible type for the column that value is going into… you’ll receive an error from your server telling so.  Also, if you don’t include a value for a column that has been marked required, you’d get an error for that to.

But what if you don’t want to give a value for a certain column.  What if that column is optional, and you don’t want to enter it?  Then you’ll have to tell the interpreter which columns you are passing.  To do so, you have to alter your command slightly

INSERT INTO productSale
(buyer, productName, qtyPurchased, pricePaid)
SELECT 'Shannon Lowder', 'paper', 2, 1.00

Now you can enter just the information you want into the table.  This leaves us with one last method for getting data into a table.  What if we want to take data from one table, and insert it into another table.  We can take the last statement we wrote and alter is again to accomplish this task.

INSERT INTO productSale_test
(buyer, productName, qtyPurchased, pricePaid)
  , productName
  , qtyPurchased
  , pricePaid
FROM productSale

This way you can select the values from one table, and insert them into another.  Please note I have included the column list between the INSERT INTO and the SELECT statements.  That way the interpreter knows which columns to put the selected data into.


This is your first step into loading data into the database.  No matter how complex the load seems, it will always reduce to a simple INSERT statement.  Practice using this statement and there’s nothing you won’t be able to load.

If you have any problems, questions, or concerns, let me know!  I’m here to help!

Previous: JOIN Next: UPDATE

By Shannon Lowder

Shannon Lowder is the Database Engineer you've been looking for! Look no further for expertise in: Business Analysis to gather the business requirements for the database; Database Architecting to design the logical design of the database; Database Development to actually build the objects needed by the business logic; finally, Database Administration to keep the database running in top form, and making sure there is a disaster recovery plan.


Leave a comment

Your email address will not be published. Required fields are marked *