Skip to main content

Insert Into Select

Structured Query Language (SQL) is a powerful programming language used for managing and manipulating relational databases. One key feature of SQL is its ability to insert data into a database dynamically using the INSERT INTO SELECT statement. This article will provide a comprehensive guide on how to use this particular statement in PostgreSQL.

What is 'Insert Into Select'?

The INSERT INTO SELECT statement is a combination of the INSERT and SELECT commands. It's used to copy data from one table (source table) and insert it into another table (destination table). This is particularly useful when you need to insert a large amount of data into a table from another table.

Simple Usage

The basic syntax of INSERT INTO SELECT is:

INSERT INTO table2
SELECT * FROM table1
WHERE condition;

This command copies all columns from table1 to table2 under a certain condition. If no condition is given, all rows will be copied.

Insert Specific Columns

You can also insert specific columns from the source table to the destination table. Here's how:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

In this case, column1, column2, column3, etc., are the names of the columns in table2 where the data will be inserted.

Insert and Calculate Simultaneously

The INSERT INTO SELECT statement can do more than just copying data. It can also perform calculations during the insertion. For example:

INSERT INTO table2 (column1, column2, total)
SELECT column1, column2, (column1 + column2)
FROM table1;

In this example, the sum of column1 and column2 from table1 is calculated and inserted into the total column of table2.

Precautions

While using INSERT INTO SELECT, it's important to ensure that the data types in the source table match those in the destination table. If the data types do not match, PostgreSQL will return an error.

Also, if the destination table has a column with a NOT NULL constraint, make sure the source table does not have NULL values in the corresponding column.

Conclusion

The INSERT INTO SELECT statement is a powerful tool in SQL, allowing you to insert data into tables dynamically. It's versatile and can save a lot of time when dealing with large amounts of data. Practice using this statement with different scenarios to become proficient in its use. With mastery of INSERT INTO SELECT, you're one step closer to becoming an SQL expert.