|
|
Inserting Data
The INSERT statement is used to insert new rows into existing tables.
Values to be inserted may be specified explicitly, as constants or expressions, or in the form of a subselect, see below.
The data to be inserted must be of a type compatible with the corresponding column definition.
If the length of the inserted data differs from that of the column definition, the data is handled as follows:
Inserting Explicit Values
The explicit INSERT statement has the general form:
INSERT INTO table [(column-list)] VALUES (value-list);Values in the value-list are inserted into columns in the column-list in the order specified.
The order of columns in the column-list need not be the same as the order in the table definition. Any columns in the table definition which are not included in the column-list are assigned NULL values, or the column default value if one is defined.
An explicit INSERT statement can only insert a single row.
Insert the values 'GW', 'Guinea-Bissau' and 'XOF' into the CODE, COUNTRY and CURRENCY_CODE columns respectively into the COUNTRIES table:
INSERT INTO countries(code, country, currency_code) VALUES ('GW', 'Guinea-Bissau', 'XOF');
CODE COUNTRY CURRENCY_CODE GW Guinea-Bissau XOFIf you insert explicit values into all of the columns in a table, the column list can be omitted from the INSERT statement. The values specified are then inserted into the table in the order that the columns are defined in the table.
Thus the example above could also be written:
INSERT INTO countries VALUES ('GW', 'Guinea-Bissau', 'XOF');Inserting Results of Expressions
You can also insert the result of an expression into a table:
INSERT INTO mimer_store.customers(customer_id, title, surname, forename, date_of_birth, address_1, address_2, town, postcode, country_code, email, password, registered) VALUES (DEFAULT, 'Mr', 'Eriksson', 'Sven', mimer_store.cast_to_date('25/10/1953'), 'Kungsgaten 64', 'Box 1713', 'Uppsala', '751 47', 'SE', 'training@mimer.com', 'secret', CURRENT_DATE - INTERVAL '3' DAY);Inserting with a Subselect
Values to be inserted can also be specified in the form of a subselect, i.e. fetched from another table in the database.
INSERT INTO formats SELECT 11, 'Book & Cassette', MAX(category_id), MAX(display_order) + 10 FROM formats NATURAL JOIN categories WHERE category = 'Books';The same table cannot be listed in the subselect's FROM clause that is listed in the INSERT INTO clause - data cannot be selected from a table for insertion into the same table.
Inserting the result of a subselect can insert a number of rows into a table. If any of the rows are rejected (e.g. because of a duplicate primary or unique key), the whole INSERT statement fails and no rows are inserted.
Inserting Sequence Values
The value to be inserted can be the value of a sequence. The constructs that return the current value or next value of a sequence can be used as column values in the INSERT statement:
INSERT INTO products(product, product_id) VALUES ('SQL Reference', NEXT_VALUE OF product_id_seq); INSERT INTO mimer_store_music.titles(item_id, artist_id) VALUES (CURRENT_VALUE OF mimer_store.item_id_seq, 500999);Inserting NULL Values
The keyword NULL may be used to insert the NULL value into a column, provided that the column is not defined as NOT NULL:
INSERT INTO tracks(item_id, track_no, track, length) VALUES (60099, 14, 'Bayamesa', NULL);The NULL indicator is implicitly inserted into columns when no value is given for that column and the column definition does not include a default value.
Thus, the following INSERT statement will give the same results as the example above:
INSERT INTO tracks(item_id, track_no, track) VALUES (60099, 14, 'Bayamesa');
|
Upright Database Technology AB Voice: +46 18 780 92 00 Fax: +46 18 780 92 40 dbtechnology@upright.se |
|
|