From 293913568e6a7a86fd1479e1cff8e2ecb58d6568 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 13 Apr 2024 15:44:03 +0200 Subject: Adding upstream version 16.2. Signed-off-by: Daniel Baumann --- doc/src/sgml/ref/select_into.sgml | 156 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 doc/src/sgml/ref/select_into.sgml (limited to 'doc/src/sgml/ref/select_into.sgml') diff --git a/doc/src/sgml/ref/select_into.sgml b/doc/src/sgml/ref/select_into.sgml new file mode 100644 index 0000000..82a7778 --- /dev/null +++ b/doc/src/sgml/ref/select_into.sgml @@ -0,0 +1,156 @@ + + + + + SELECT INTO + + + + SELECT INTO + 7 + SQL - Language Statements + + + + SELECT INTO + define a new table from the results of a query + + + + +[ WITH [ RECURSIVE ] with_query [, ...] ] +SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] + * | expression [ [ AS ] output_name ] [, ...] + INTO [ TEMPORARY | TEMP | UNLOGGED ] [ TABLE ] new_table + [ FROM from_item [, ...] ] + [ WHERE condition ] + [ GROUP BY expression [, ...] ] + [ HAVING condition ] + [ WINDOW window_name AS ( window_definition ) [, ...] ] + [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ] + [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ] + [ LIMIT { count | ALL } ] + [ OFFSET start [ ROW | ROWS ] ] + [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] + [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ] + + + + + Description + + + SELECT INTO creates a new table and fills it + with data computed by a query. The data is not returned to the + client, as it is with a normal SELECT. The new + table's columns have the names and data types associated with the + output columns of the SELECT. + + + + + Parameters + + + + TEMPORARY or TEMP + + + If specified, the table is created as a temporary table. Refer + to for details. + + + + + + UNLOGGED + + + If specified, the table is created as an unlogged table. Refer + to for details. + + + + + + new_table + + + The name (optionally schema-qualified) of the table to be created. + + + + + + + All other parameters are described in detail under . + + + + + Notes + + + CREATE TABLE AS is functionally similar to + SELECT INTO. CREATE TABLE AS + is the recommended syntax, since this form of SELECT + INTO is not available in ECPG + or PL/pgSQL, because they interpret the + INTO clause differently. Furthermore, + CREATE TABLE AS offers a superset of the + functionality provided by SELECT INTO. + + + + In contrast to CREATE TABLE AS, SELECT + INTO does not allow specifying properties like a table's access + method with or the table's + tablespace with . Use + CREATE TABLE AS if necessary. Therefore, the default table + access method is chosen for the new table. See for more information. + + + + + Examples + + + Create a new table films_recent consisting of only + recent entries from the table films: + + +SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01'; + + + + + Compatibility + + + The SQL standard uses SELECT INTO to + represent selecting values into scalar variables of a host program, + rather than creating a new table. This indeed is the usage found + in ECPG (see ) and + PL/pgSQL (see ). + The PostgreSQL usage of SELECT + INTO to represent table creation is historical. Some other SQL + implementations also use SELECT INTO in this way (but + most SQL implementations support CREATE TABLE AS + instead). Apart from such compatibility considerations, it is best to use + CREATE TABLE AS for this purpose in new code. + + + + + See Also + + + + + + -- cgit v1.2.3