Movatterモバイル変換


[0]ホーム

URL:


You don’t need a vector database - just use Postgres for everything. Read the case study on switching from Pinecone to Neon
PostgreSQL Tutorial
PostgreSQL Tutorial
/Getting Started/Create Table As

PostgreSQL CREATE TABLE AS

Summary: in this tutorial, you will learn how to use the PostgreSQLCREATE TABLE AS statement to create a new table from the result set of a query.

Introduction to the PostgreSQL CREATE TABLE statement

TheCREATE TABLE AS statementcreates a new table and fills it with the data returned by a query. The following shows the syntax of theCREATE TABLE AS statement:

CREATE TABLE new_table_nameAS query;

In this syntax:

  1. First, specify the new table name after theCREATE TABLE clause.
  2. Second, provide a query whose result set is added to the new table after theAS keyword.

TheTEMPORARY orTEMP keyword allows you to create atemporary table:

CREATE TEMPTABLE new_table_nameAS query;

TheUNLOGGED keyword allows the new table to be created as an unlogged table:

CREATE UNLOGGEDTABLE new_table_nameAS query;

The columns of the new table will have the names and data types associated with the output columns of theSELECT clause.

If you want the table columns to have different names, you can specify the new table columns after the new table name:

CREATE TABLE new_table_name ( column_name_list)AS query;

If you want to avoid an error by creating a new table that already exists, you can use theIF NOT EXISTS option as follows:

CREATE TABLE IF NOT EXISTS new_table_nameAS query;

PostgreSQL CREATE TABLE AS statement examples

We will use thefilm andfilm_category table from thesample database for the demonstration.

film_and_film_category_tablesThe following example uses the CREATE TABLE AS statement to create a new table that contains the films whose category is 1:

CREATE TABLE action_filmASSELECT    film_id,    title,    release_year,    length,    ratingFROM    filmINNER JOIN film_categoryUSING (film_id)WHERE    category_id= 1;

To verify the table creation, you can query data from theaction_film table:

SELECT * FROM action_filmORDER BY title;

PostgreSQL CREATE TABLE AS data verificationTo check the structure of theaction_film, you can use the following command in the psql tool:

\d action_film;

It returns the following output:

PostgreSQL CREATE TABLE AS exampleAs clearly shown in the output, the names and data types of theaction_film table are derived from the columns of theSELECT clause.

If theSELECT clause contains expressions, it is a good practice to override the columns, for example:

CREATE TABLE IF NOT EXISTS film_rating (rating, film_count)ASSELECT    rating,    COUNT (film_id)FROM    filmGROUP BY    rating;

This example statement created a new tablefilm_rating and filled it with the summary data from thefilm table. It explicitly specified the column names for the new table instead of using the column names from theSELECT clause.

To check the structure of thefilm_rating table, you use the following command in psql tool:

\d film_rating

The following is the output:

PostgreSQL CREATE TABLE AS with explicit column namesNote that theCREATE TABLE AS statement is similar to theSELECT INTO statement, but theCREATE TABLE AS statement is preferred because it is not confused with other uses of theSELECT INTO syntax inPL/pgSQL. In addition, theCREATE TABLE AS statement provides a superset of the functionality offered by theSELECT INTO statement.

Summary

  • Use the PostgreSQLCREATE TABLE AS statement to create a new table from the result of a query.

Last updated on

Was this page helpful?
Thank you for your feedback!

[8]ページ先頭

©2009-2025 Movatter.jp