sql >> Database >  >> RDS >> Database

Een tabel maken van een andere tabel in SQL

Probleem:

U wilt een nieuwe tabel maken met gegevens die uit een andere tabel zijn gekopieerd.

Voorbeeld:

Onze database heeft een tabel met de naam product met gegevens in de volgende kolommen:id (primaire sleutel), name , category , en price .

id naam categorie prijs
105 roos bloem 5,70
108 bureau meubels 120,00
115 tulp bloem 6.50
123 zonnebloem bloem 7,50
145 gitaar muziek 300,00
155 orchidee bloem 9,50
158 fluit muziek 156,00

Laten we in de database een nieuwe tabel maken met de naam florist waarin de volgende kolommen worden opgeslagen:id , name , en price . Deze kolommen komen uit de tabel product maar alleen uit de categorie bloem .

Het is belangrijk op te merken dat we een nieuwe tabel maken. De tafel florist bestaat niet in deze database.

De CREATE TABLE AS SELECT-structuur

Om een ​​nieuwe tabel van een andere tabel te maken, kunt u CREATE TABLE AS SELECT . gebruiken . Deze constructie is standaard SQL. Bekijk de onderstaande SQL-code:

Oplossing 1:

CREATE TABLE florist 
AS SELECT
  *
FROM product
WHERE category = ’flower’;

Hier is het resultaat van de zoekopdracht:

id naam categorie prijs
105 roos bloem 5,70
115 tulp bloem 6.50
123 zonnebloem bloem 7,50
155 orchidee bloem 9,50

CREATE TABLE gebruiken , kunt u een nieuwe tabel maken door gegevens uit een andere tabel te kopiëren. In dit geval gebruiken we eerst de CREATE TABLE clausule met de naam voor nieuwe tabel (in ons voorbeeld:florist ), schrijven we vervolgens AS en de SELECT query met de namen van de kolommen (in ons voorbeeld:* ), en we schrijven dan FROM gevolgd door de naam van de tabel waaruit de gegevens zijn verzameld (in ons voorbeeld:product ). Vervolgens kunt u elke SQL-clausule gebruiken:WHERE , GROUP BY , HAVING , enz.

De nieuwe tafel florist bevat de definitie van de kolommen van het product tabel (id , name , category , en price ). Het aantal rijen wordt beperkt door een WHERE-clausule te gebruiken, waarbij de records worden gefilterd om alleen gegevens op te halen uit de categorie bloem .

De SELECT INTO-structuur

Een andere oplossing is om SELECT INTO . te gebruiken . Deze syntaxis is niet-standaard SQL, maar wordt ondersteund door veel populaire databases.

Oplossing 2:

SELECT  
  id,
  name,
  price
INTO florist
FROM product
WHERE category=’flower’;

Hier is het resultaat:

id naam prijs
105 roos 5,70
115 tulp 6.50
123 zonnebloem 7,50
155 orchidee 9,50

Discussie:

Als u een nieuwe tabel wilt maken op basis van de structuur en gegevens uit een andere tabel, kunt u de SELECT INTO gebruiken clausule. Schrijf eerst een SELECT clausule gevolgd door een lijst met kolommen (in ons voorbeeld:id , name , en price ) uit de bestaande tabel (in ons voorbeeld:product ).

Merk op dat er meer kolommen zijn in de tabel product . We hebben alleen de kolommen geselecteerd waarin we geïnteresseerd zijn.

Gebruik vervolgens het trefwoord INTO met de naam van de nieuwe tafel die u wilt maken (in ons voorbeeld:florist ). Schrijf vervolgens het trefwoord FROM met de naam van de bestaande tabel (in ons voorbeeld:product ).

Als u gefilterde rijen uit de tabel wilt selecteren, gebruikt u de WHERE clausule. Na WHERE , schrijf de voorwaarden om de gegevens te filteren (in ons voorbeeld:WHERE category=’flower’ ).

In dit voorbeeld maken we een nieuwe tabel florist die minder kolommen heeft dan de tabel product (het verschil is de kolomcategorie). Deze nieuwe tabel heeft ook minder rijen – alleen de rijen met de categorie bloem .

Als u een tabel wilt maken met alle kolommen in de andere tabel, kunt u natuurlijk * gebruiken in plaats van de kolommen te vermelden na SELECT . Zie onderstaand voorbeeld:

Oplossing 2:

SELECT  
  *
INTO florist
FROM product
WHERE category=’flower’;

Hier is het resultaat:

id naam categorie prijs
105 roos bloem 5,70
115 tulp bloem 6.50
123 zonnebloem bloem 7,50
155 orchidee bloem 9,50

Gebruik SELECT INTO is een gemakkelijke manier om een ​​nieuwe tabel te maken op basis van een bestaande tabel in de database.


  1. Ontdek waarom een ​​e-mail niet kon worden verzonden in SQL Server (T-SQL)

  2. SQL Server gebruiken als een DB-wachtrij met meerdere clients

  3. Een PostgreSQL-array toewijzen met Hibernate

  4. SQL Server Prestaties TOP IO Query -1