Cómo llenar tablas usando INSERT INTO SELECT en MySQL
Resumen
Aprender cómo llenar una tabla con datos de otra tabla utilizando INSERT INTO SELECT en MySQL es una habilidad clave para optimizar tu trabajo con bases de datos. Este método permite llenar rápidamente tablas nuevas aprovechando información existente, haciendo el proceso eficiente y claro.
¿Para qué sirve usar INSERT INTO SELECT en MySQL?
Esta función es ideal cuando precisas crear una nueva tabla a partir de información previamente almacenada. Por ejemplo, almacenar fácilmente el monto invertido en diferentes productos de un inventario.
La estructura general de este comando es sencilla y directa:
INSERTINTO investment (productID, investment)SELECT productID, stock * price FROM products;
No necesitas usar la palabra VALUES; en su lugar, utilizas un SELECT que alimentará los datos en las columnas correspondientes según su orden.
¿Cómo implementar INSERT INTO SELECT con un caso práctico?
Te cuento paso a paso cómo hacerlo:
Crea primero una nueva tabla (investment) con los campos correspondientes:
CREATETABLE investment ( ID INTUNSIGNEDPRIMARYKEYAUTO_INCREMENT, productID INTUNSIGNEDNOTNULL, investment INTNOTNULLDEFAULT0);
Ejecuta el comando INSERT INTO SELECT:
INSERTINTO investment (productID, investment)SELECT productID, stock * price FROM products;
Revisa que los datos estén correctamente insertados usando:
SELECT*FROM investment;
¿Cómo recuperar y ordenar datos almacenados?
Luego de insertar datos, puedes hacer consultas específicas como:
En esta clase, se aprendió sobre el comando INSERT INTO ... SELECT, que permite insertar datos en una tabla a partir de los resultados de otra tabla.
Ejemplo práctico:
Supongamos que tienes dos tablas: products y investment. La tabla products contiene información sobre productos, y deseas registrar cuánto dinero has invertido en cada producto en la tabla investment.
INSERTINTO investment (product_id, investment)SELECT product_id, stock * price FROM products;
Este comando inserta en la tabla investment el product_id y el cálculo del stock * price para cada producto. Así, puedes gestionar tus inversiones de manera eficiente.
Se agradece una clase tan concisa y clara justo antes de los últimos vídeos 👌🏻
En SQL, el término unsigned se utiliza para especificar que un valor numérico no puede ser negativo. Por ejemplo, al definir una columna como integer unsigned, estás indicando que esta columna solo aceptará valores enteros positivos, mejorando la integridad de los datos al evitar la entrada de valores negativos. Esto es útil en contextos donde los valores negativos no tienen sentido, como identificadores o conteos.
Transferencia Directa de DatosINSERT INTO SELECT permite migrar información entre tablas de forma eficiente sin archivos intermedios. Solo necesitas definir la tabla de destino, especificar las columnas y ejecutar la consulta SELECT desde la fuente.
Reglas de Oro
La estructura es vital: el número y tipo de datos de las columnas deben coincidir exactamente. ¿Qué pasaría si intentaras insertar más columnas de las que tiene la tabla destino?
Para verificar si hubo pérdida de decimales tras el cast automático al insertar stock*price en la tabla investment, puedes seguir estos pasos:
Consulta antes de insertar: Realiza un SELECT en la tabla products para verificar el valor de stock*price que se va a insertar. Asegúrate de que tenga decimales.
SELECT product_id, stock * price AS investment_value FROM products;
Inserta los datos: Realiza la inserción con el comando INSERT INTO investment.
INSERTINTO investment (product_id, investment)SELECT product_id, stock * price FROM products;
Revisa el contenido de investment: Una vez insertados los datos, ejecuta un SELECT en la tabla investment y verifica los valores.
SELECT*FROM investment;
Compara: Compara los valores originales de investment_value de la tabla products con los valores en investment. Si los valores de investment son enteros, significa que hubo pérdida de decimales.
Este proceso te permitirá identificar si hubo pérdida de datos durante la inserción.