An SQL INSERT statement adds one or more records to any single table in a relational database. Basic form Insert statements have the following form: The number of columns and values must be the same. If a column is not specified, the default value for the column is used. The values specified (or implied) by the statement must satisfy all the applicable constraints (such as primary keys, constraints, and constraints). If a syntax error occurs or if any constraints are violated, the new row is not added to the table and an error returned instead. Example: INSERT INTO phone_book (name, number) VALUES ('John Doe', '555-1212'); Shorthand may also be used, taking advantage of the order of the columns when the table was created. It is not required to specify all columns in the table since any other columns will take their default value or remain null: Example for inserting data into 2 columns in the phone_book table and ignoring any other columns which may be after the first 2 in the table. INSERT INTO phone_book VALUES ('John Doe', '555-1212'); Advanced forms Multirow inserts A SQL feature (since SQL-92) is the use of row value constructors to insert multiple rows at a time in a single SQL statement: INSERT INTO tablename (column-a, [column-b, ...]) VALUES ('value-1a', ['value-1b', ...]), ('value-2a', ['value-2b', ...]), ... This feature is supported by IBM Db2, SQL Server (since version 10.0 - i.e. 2008), PostgreSQL (since version 8.2), MySQL, SQLite (since version 3.7.11) and H2. Example (assuming that 'name' and 'number' are the only columns in the 'phone_book' table): INSERT INTO phone_book VALUES ('John Doe', '555-1212'), ('Peter Doe', '555-2323'); which may be seen as a shorthand for the two statements INSERT INTO phone_book VALUES ('John Doe', '555-1212'); INSERT INTO phone_book VALUES ('Peter Doe', '555-2323'); Note that the two separate statements may have different semantics (especially with respect to statement triggers) and may not provide the same performance as a single multi-row insert. To insert multiple rows in MS SQL you can use such a construction: INSERT INTO phone_book SELECT 'John Doe', '555-1212' UNION ALL SELECT 'Peter Doe', '555-2323'; Note that this is not a valid SQL statement according to the SQL standard (SQL:2003) due to the incomplete subselect clause. To do the same in Oracle use the DUAL table, which always consists of a single row only: INSERT INTO phone_book SELECT 'John Doe', '555-1212' FROM DUAL UNION ALL