La solicitud

De Tyler Morgan, Ingeniero de Datos Junior
Tu objetivo
Elige la sentencia que elimina todas las filas de supplier_import antes de la siguiente carga conservando la tabla y las definiciones de sus columnas.
Lo que recibe Tyler, y por qué
La lección
Este quiz comprueba la diferencia entre las tres formas de eliminar datos, y las decisiones de tipos de datos que tomas cuando creas una tabla en primer lugar.
Tres niveles de eliminación
| sentencia | qué se va | qué se queda |
|---|---|---|
DELETE FROM t WHERE ... |
las filas que cumplen la condición | la tabla y todas las demás filas |
DELETE FROM t (sin WHERE) |
todas las filas, una a una | la tabla vacía |
TRUNCATE TABLE t |
todas las filas, en una sola operación | la tabla vacía, con columnas y tipos |
DROP TABLE t |
la propia tabla | nada |
DELETE es la herramienta precisa: admite un WHERE, y se puede revertir dentro de una transacción en todas
las bases de datos importantes. TRUNCATE es la herramienta masiva para “vacía esta tabla ya”, mucho más
rápida en tablas grandes porque no procesa las filas individualmente. DROP TABLE es para tablas que ya
no necesitas.
Una tabla de importación diaria es el caso de manual de TRUNCATE. El trabajo ejecuta: truncar, insertar el archivo de hoy, contar las filas, comparar con el número de filas del archivo. Si la carga falla a la mitad, la tabla queda vacía o parcialmente cargada, lo que atrapa la comprobación del conteo de filas.
Elige tipos que encajen con los datos
La tabla que vacías cada mañana se definió una vez con CREATE TABLE, y sus tipos deciden lo que acepta:
- Dinero en DECIMAL, no FLOAT.
DECIMAL(10, 2)guarda centavos exactos.DOUBLEyFLOATguardan aproximaciones binarias: en DuckDB,0.1::DOUBLE + 0.2::DOUBLEes 0.30000000000000004, así que las comprobaciones de igualdad y las sumas de muchos precios se desvían. El mismo0.1 + 0.2con decimales es exactamente 0.3. - Fechas en DATE o TIMESTAMP, no en texto. Una columna de texto ordena ‘11/3/2025’ antes de ‘2/1/2025’ y no puede hacer aritmética de fechas.
- Indicadores en BOOLEAN.
is_activeen la tabla de productos de la tienda es un BOOLEAN: verdadero o falso, sin espacio para ‘Yes’, ‘Y’ e ‘y’. - Ids como INTEGER con una clave primaria, para que los duplicados se rechacen al insertar.
Errores comunes
- Eliminar y recrear una tabla cada día en lugar de truncarla, de modo que su definición vive en dos lugares y se desincroniza.
- Suponer que TRUNCATE se puede deshacer en todas partes. En Postgres, DuckDB y SQL Server se revierte dentro de una transacción; en MySQL y Oracle se confirma de inmediato.
- Guardar precios como FLOAT porque “es un número”.
En SQL Server
T-SQL requiere la palabra TABLE: TRUNCATE TABLE dbo.SupplierImport;. Su tipo adecuado para dinero es
DECIMAL(10,2) (también existe MONEY, que muchos equipos evitan por el redondeo en la división), los
indicadores son BIT (0 o 1, sin un tipo BOOLEAN real), el texto suele ser NVARCHAR(n) y las fechas con
hora son DATETIME2. TRUNCATE falla en una tabla referenciada por una clave foránea; DELETE no.
¡Linterna encendida!
Practicaste: deletetruncatedrop tabledata types
- Resuelto
- Sin pistas
- Al primer intento
