sql >> Base de Datos >  >> RDS >> Database

Cómo crear una tabla a partir de otra tabla en SQL

Problema:

Le gustaría crear una nueva tabla con datos copiados de otra tabla.

Ejemplo:

Nuestra base de datos tiene una tabla llamada product con datos en las siguientes columnas:id (clave principal), name , category y price .

id nombre categoría precio
105 rosa flor 5,70
108 escritorio muebles 120,00
115 tulipán flor 6,50
123 girasol flor 7,50
145 guitarra música 300,00
155 orquídea flor 9,50
158 flauta música 156,00

En la base de datos, creemos una nueva tabla llamada florist que almacenará las siguientes columnas:id , name y price . Estas columnas provienen de la tabla product pero solo de la categoría flor .

Es importante tener en cuenta que estamos creando una nueva tabla. La mesa florist no existe en esta base de datos.

La estructura CREAR TABLA COMO SELECCIONAR

Para crear una nueva tabla a partir de otra tabla, puede usar CREATE TABLE AS SELECT . Esta construcción es SQL estándar. Mire el código SQL a continuación:

Solución 1:

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

Aquí está el resultado de la consulta:

id nombre categoría precio
105 rosa flor 5,70
115 tulipán flor 6,50
123 girasol flor 7,50
155 orquídea flor 9,50

Usando CREATE TABLE , puede crear una nueva tabla copiando datos de otra tabla. En este caso, primero usamos CREATE TABLE cláusula con el nombre de la nueva tabla (en nuestro ejemplo:florist ), a continuación escribimos AS y el SELECT consulta con los nombres de las columnas (en nuestro ejemplo:* ), y luego escribimos FROM seguido del nombre de la tabla de la que se recopilan los datos (en nuestro ejemplo:product ). Luego, puede usar cualquier cláusula SQL:WHERE , GROUP BY , HAVING , etc.

La nueva mesa florist contendrá la definición de las columnas del product tabla (id , name , category y price ). El número de filas está limitado mediante el uso de una cláusula WHERE, filtrando los registros para recuperar solo datos de la categoría flor .

La estructura SELECT INTO

Otra solución es usar SELECT INTO . Esta sintaxis es SQL no estándar, pero es compatible con muchas bases de datos populares.

Solución 2:

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

Aquí está el resultado:

id nombre precio
105 rosa 5,70
115 tulipán 6,50
123 girasol 7,50
155 orquídea 9,50

Discusión:

Si desea crear una nueva tabla basada en la estructura y los datos de otra tabla, puede utilizar SELECT INTO cláusula. Primero, escribe un SELECT cláusula seguida de una lista de columnas (en nuestro ejemplo:id , name y price ) de la tabla existente (en nuestro ejemplo:product ).

Observe que hay más columnas en la tabla product . Solo seleccionamos las columnas que nos interesan.

A continuación, utilice la palabra clave INTO con el nombre de la nueva tabla que desea crear (en nuestro ejemplo:florist ). Luego, escribe la palabra clave FROM con el nombre de la tabla existente (en nuestro ejemplo:product ).

Si desea seleccionar filas filtradas de la tabla, use WHERE cláusula. Después de WHERE , escribe las condiciones para filtrar los datos (en nuestro ejemplo:WHERE category=’flower’ ).

En este ejemplo, estamos creando una nueva tabla florist que tiene menos columnas que la tabla product (la diferencia es la categoría de la columna). Esta nueva tabla también tiene menos filas, solo las filas con la categoría flor .

Por supuesto, si desea crear una tabla usando todas las columnas de la otra tabla, puede usar * en lugar de enumerar las columnas después de SELECT . Vea el siguiente ejemplo:

Solución 2:

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

Aquí está el resultado:

id nombre categoría precio
105 rosa flor 5,70
115 tulipán flor 6,50
123 girasol flor 7,50
155 orquídea flor 9,50

Usando SELECT INTO es una manera fácil de crear una nueva tabla basada en una tabla existente en la base de datos.