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.