sql >> Database teknologi >  >> RDS >> Mysql

Dupliker, kopier eller sikkerhedskopier tabeller i MySQL, MariaDB, Oracle, PostgreSQL, DB2 og SQLite med Create Table As SQL

I Oracle, PostgreSQL, DB2, MySQL, MariaDB og SQLite databasesystem er der en fin kommandofunktion kaldet Create Table As som tillader nem duplikering af en tabel med data fra en anden eller nogle få andre tabeller. SQL-kommandoen kan også bruges til at 'kopiere og indsætte' en tabel nøjagtigt eller sikkerhedskopiere en tabeldata, før der udføres datamanipulationsforespørgsel på den originale tabel, bare i tilfælde af, at scriptet har fejl, og sikkerhedskopieringsdatoen kan bruges til at gendanne den oprindelige tilstand . Opret tabel som vil opretter en ny tabel bygget ud fra indholdet af datasættet eller resultatsæt hentet af en Vælg SQL-forespørgsel fra en tabel, der allerede findes i databasen.

Syntaksen for Create Table As SQL-sætning er:

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

Erstat tabelnavn med navnet på den nye tabel, der vil blive oprettet. Kolonnenavn er valgfrit, hvor du kan angive flere kolonner ved at inkludere deres navne i en kommasepareret liste. Ellers vil strukturen af ​​den nye tabel være baseret på kolonnenavne, typer og antal kolonner, der returneres af Select-sætningen, sammen med rækkedata. Hvis du angiver kolonnenavnet, skal du være opmærksom på, at der skal være det samme antal kolonner angivet, som returneres af select.

Select-sætningen i slutningen af ​​create table as-kommandoen skal være gyldig og har antallet af valgte mål, der matcher antallet af kolonner i den valgfri kolonneliste forud for AS-udtrykket. Det kan være en kompleks select-sætning, der henter data fra flere tabeller. Hvis valgfri kolonneliste er angivet i parentes, kan stjerne (*) ikke længere bruges i select-sætningen.

For eksempel

CREATE TABLE demo_backup
AS SELECT * FROM demo;

Ovenstående SQL-sætning vil oprette en nøjagtig replika backup-tabel ved navn demo_backup med data og struktur (kolonner) af demo-tabellen.

Mulig fejl, hvis du angiver den valgfri kolonneliste er:

FEJL:CREATE TABLE/AS SELECT har ikke matchet kolonneantal

Hvis du støder på denne fejlmeddelelse, skyldes det, at valgfri liste over kolonner i parentes indeholder et andet antal rækker, end select-sætningen returnerer. Dobbelttjek, om det angivne antal kolonner er det samme med de resultater, der forventes fra det udvalgte resultatsæt.

Bemærk! Nogle databasesystemer understøtter CREATE TABLE … LIKE syntaks, der opretter en tom tabel baseret på definitionen af ​​en anden tabel, inklusive eventuelle kolonneattributter og indekser defineret i den originale tabel. Forskellen er, at CREATE TABLE … SELECT syntaks også kopierer dataene.


  1. Jeg kan ikke indstille flere billeder i gittervisning?

  2. Sådan får du vist forespørgselsfejl i PDO PHP

  3. Postgres:vakuumkommando renser ikke døde tupler

  4. Hvordan undgår man divider med nul fejl i SQL?