sql >> Database >  >> RDS >> Mysql

Maak een nieuwe tabel door gegevens uit andere tabellen te selecteren met CREATE TABLE AS

Door gebruik te maken van een SQL-gegevensmanipulatie-instructie, kan een nieuwe, tijdelijke, back-up of gewone tabel worden gemaakt en gevuld of ingevoegd met gegevens uit een andere tabel of tabellen die zijn opgehaald door de SELECT-instructie. De taal voor het manipuleren van SQL-gegevens is CREATE TABLE AS die kan worden gebruikt om een ​​nieuwe tabel te maken die is opgebouwd uit de inhoud van de resultatenset door een query op een tabel die al in de database bestaat. Zowel de kolomtypen als de rijgegevens voor de nieuwe tabel zijn afkomstig van het SELECT-commando dat is opgegeven door select.

CREATE TABLE AS heeft de volgende syntaxis of synopsis in eenvoudige vorm:

CREATE TABLE new_table_name [ ( column [, ...] ) ] AS SELECT [ ( column [, ...] ) ] FROM existing table_name

De SELECT-instructie kan een complexe vorm hebben waarbij gegevens uit verschillende tabellen worden opgehaald. Voor de nieuwe tabel kunnen kolomnamen worden gespecificeerd door de kolomnamen op te nemen in een door komma's gescheiden lijst. Een zeer belangrijk punt om op te merken is dat er hetzelfde aantal kolommen moet zijn gespecificeerd in de kolomlijst voorafgaand aan de AS-component (optioneel, indien gespecificeerd) voor nieuwe tabel als het aantal doelkolommen dat wordt geretourneerd door de select-instructie. Als de optionele lijst met kolommen tussen haakjes van de nieuwe tabel een ander aantal rijen bevat dan de rijen die de SELECT-instructie retourneert, wordt het volgende foutbericht weergegeven:

FOUT:CREATE TABLE/AS SELECT heeft niet-overeenkomende kolomtelling

In zijn eenvoudigste vorm zal de instructie CREATE TABLE AS een volledige back-up maken van een bestaande tabel, inclusief alle kolommen en gegevens, door simpelweg de instructie te gebruiken:

CREATE TABLE new_table_name AS SELECT * FROM existing_table_name


  1. Meerdere versies van de database maken en implementeren via schema-snapshots

  2. Trage zoekopdracht bij gebruik van ORDER BY

  3. Is er een manier om een ​​benoemde constante in een PostgreSQL-query te definiëren?

  4. Dynamische pivot-query met PostgreSQL 9.3