sql >> Databasteknik >  >> RDS >> Mysql

Duplicera, kopiera eller säkerhetskopiera tabeller i MySQL, MariaDB, Oracle, PostgreSQL, DB2 och SQLite med Skapa tabell som SQL

I Oracle, PostgreSQL, DB2, MySQL, MariaDB och SQLite databassystem finns det en trevlig kommandofunktion som heter Skapa tabell som vilket möjliggör enkel duplicering av en tabell med data från en annan eller några andra tabeller. SQL-kommandot kan också användas för att "kopiera och klistra in" en tabell exakt eller för att säkerhetskopiera en tabelldata innan du utför en datamanipuleringsfråga på den ursprungliga tabellen, bara om skriptet har fel och säkerhetskopieringsdatumet kan användas för att återställa till originaltillståndet . Skapa tabell som will skapar en ny tabell byggd från innehållet i datamängden eller resultatuppsättningen som hämtats av en Välj SQL-fråga från en tabell som redan finns i databasen.

Syntaxen för Skapa tabell som SQL-sats är:

CREATE TABLE table_name [ ( column_name [, ...] ) ]
             AS select [ * ! ( column_name [, ...] ) ] FROM source_table_name

Ersätt tabellnamn med namnet på den nya tabellen som kommer att skapas. Kolumnnamn är valfritt, där du kan ange flera kolumner genom att inkludera deras namn i en kommaavgränsad lista. Annars kommer strukturen för den nya tabellen att baseras på kolumnnamn, typer och antal kolumner som returneras av Select-satsen, tillsammans med raddata. Om du anger kolumnnamnet, notera att det bör finnas samma antal kolumner som anges som returneras av select.

Select-satsen i slutet av create table as-kommandot måste vara giltig och har antalet valda mål som matchar antalet kolumner i den valfria kolumnlistan som föregår AS-satsen. Det kan vara en komplex select-sats som hämtar data från flera tabeller. Om valfri kolumnlista anges inom parentes kan asterisk (*) inte längre användas i select-satsen.

Till exempel,

CREATE TABLE demo_backup
AS SELECT * FROM demo;

Ovan SQL-sats kommer att skapa en exakt replika backup-tabell med namnet demo_backup med data och struktur (kolumner) för demotabellen.

Möjligt fel om du anger den valfria kolumnlistan är:

FEL:CREATE TABLE/AS SELECT har inte matchat kolumnantal

Om du stöter på det här felmeddelandet beror det på att valfri lista med kolumner inom parentes innehåller ett annat antal rader än vad select-satsen returnerar. Dubbelkolla om antalet angivna kolumner är detsamma som de resultat som förväntas från den valda resultatuppsättningen.

Obs! Vissa databassystem stöder CREATE TABLE … LIKE-syntaxen som skapar en tom tabell baserat på definitionen av en annan tabell, inklusive eventuella kolumnattribut och index definierade i den ursprungliga tabellen. Skillnaden är att CREATE TABLE … SELECT-syntax också kopierar data.


  1. Kan databasposter som lagts till från objekt raderas med knappen?

  2. PostgreSQL:Frågan har ingen destination för resultatdata

  3. Skala PostgreSQL för stora mängder data

  4. TODATETIMEOFFSET() Exempel i SQL Server