04.-Cargando una tabla con filas
La sentencia INSERT
se utiliza para cargar una tabla con filas:
INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');
Todos los tipos de datos utilizan formatos de entrada bastante obvios. Las constantes que no son simples valores numéricos generalmente deben estar rodeados de comillas individuales ('
), como en el ejemplo. El tipo date
es realmente bastante flexible en lo que acepta, pero para este tutorial nos acogeremos al formato inequívoco que se muestra aquí.
El tipo point
requiere un par de coordenadas como entrada, como se muestra aquí:
INSERT INTO cities VALUES ('San Francisco', '(-194.0, 53.0)');
La sintaxis utilizada hasta ahora requiere recordar el orden de las columnas. Una sintaxis alternativa permite enumerar las columnas explícitamente:
INSERT INTO weather (city, temp_lo, temp_hi, prcp, date)
VALUES ('San Francisco', 43, 57, 0.0, '1994-11-29');
Puedes listar las columnas en un orden diferente si deseas o incluso omite algunas columnas, por ejemplo, si se desconoce la precipitación:
INSERT INTO tiempo (date, city, temp_hi, temp_lo)
VALUES ('1994-11-29', 'Hayward', 54, 37);
Muchos desarrolladores consideran que enumerar explícitamente las columnas es más estiloso que confiar en el orden implícitamente.
Introduzcamos todos los comandos mostrados anteriormente para que tener algunos datos con los que trabajar en las secciones siguientes.
También se puede usar COPY
para cargar grandes cantidades de datos de archivos de texto plano. Esto suele ser más rápido porque el comando COPY
está optimizado para esta aplicación, aunque permitiendo menos flexibilidad que INSERT
. Un ejemplo sería:
COPY weather FROM '/home/user/weather.txt';
donde el nombre del archivo para el archivo fuente debe estar disponible en la máquina que ejecuta el proceso de backend, no en el cliente, ya que el proceso de backend lee el archivo directamente. Puedes leer más sobre el comando COPY
en COPY.
Ejercicios¶
- Inserta 5 registros de prueba en la tabla
employees
con diferentes valores para cada columna.
INSERT INTO employees (id, first_name, last_name, email, hire_date)
VALUES (1, 'Juan', 'Perez', 'jperez@mail.com', '2022-01-05'),
(2, 'Maria', 'Garcia', 'mgarcia@mail.com', '2021-05-15'),
(3, 'Pedro', 'Gomez', 'pgomez@mail.com', '2020-08-22'),
(4, 'Luisa', 'Fernandez', 'lufe@mail.com', '2023-02-01'),
(5, 'Pablo', 'Morales', 'pmorales@mail.com', '2019-12-15');
- Inserta 10 registros de prueba en la tabla
products
con precios entre 5 y 100 y stock entre 10 y 50 unidades a partir de un fichero de texto.