TOP

Lección SQL 13. Agregar datos (INSERT INTO)

En las secciones anteriores, consideramos el trabajo de recuperar datos de tablas creadas previamente. Ahora es el momento de descubrir cómo podemos crear/eliminar tablas, agregar nuevos registros y eliminar los antiguos.

Para estos fines, existen operadores en SQL como:

  • CREATE - crea una tabla;
  • ALTER - cambia la estructura de la tabla;
  • DROP: elimina una tabla o campo;
  • INSERT: agrega datos a la tabla.
  • Comencemos a familiarizarnos con este grupo de operadores con el operador INSERT.


    1. Agregar líneas enteras

    Como sugiere el nombre, el operador INSERT INTO se utiliza para insertar (agregar) filas a una tabla de base de datos.

    La adición se puede realizar de varias maneras:

  • agregue una línea completa;
  • agregar parte de una nueva línea;
  • agregar resultados de la consulta.
  • Entonces, para agregar una nueva fila a la tabla, debemos especificar el nombre de la tabla, enumerar los nombres de las columnas y especificar los valores para cada columna usando INSERT INTO nombre_tabla(campo1, campo2...) VALUES (valor1, valor2 ...) construir. Consideremos un ejemplo.

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
    VALUES ('6', '1st Street', 'Los Angeles', 'Harry Monroe', 'USA')
    

    También puede cambiar el orden de los nombres de las columnas, pero al mismo tiempo debe cambiar el orden de los valores en el parámetro VALUES.

    2. Agregando parte de las líneas.

    En el ejemplo anterior, cuando usamos el operador INSERT, especificamos explícitamente los nombres de las columnas de la tabla. Usando esta sintaxis, podemos omitir algunas columnas. Esto significa que ingresa valores para algunas columnas y no los proporciona para otras. Ejemplo:

    INSERT INTO Sellers (ID, City, Seller_name) 
    VALUES ('6', 'Los Angeles', 'Harry Monroe')
    

    En este ejemplo, no hemos especificado valores para las dos columnas Address y Country. Puede excluir algunas columnas de la declaración aaa si le permite definir la tabla. En este caso, se debe cumplir una de las siguientes condiciones: esta columna se define para permitir un valor nulo (ausencia de cualquier valor) o se especifica un valor predeterminado en la definición de la tabla. Esto significa que si no se especifica ningún valor, se utilizará el valor predeterminado. Si omite una columna de una tabla que no permite que aparezcan valores NULL en sus filas y no tiene un valor definido para uso predeterminado, el DBMS emitirá un mensaje de error y la fila no se agregará.

    3. Agregar datos seleccionados

    En los ejemplos anteriores, insertamos datos en la tabla escribiéndolos manualmente en la consulta. Sin embargo, el operador INSERT INTO nos permite automatizar este proceso si queremos insertar datos de otra tabla. Para ello existe una construcción en SQL como INSERT INTO ... SELECT ... . Este diseño le permite seleccionar datos simultáneamente de una tabla e insertarlos en otra. Supongamos que tenemos otra tabla Sellers_EU con una lista de vendedores de nuestro producto en Europa y necesitamos agregarlos a la tabla general Sellers. La estructura de estas tablas es la misma (el mismo número de columnas y los mismos nombres), pero los datos son diferentes. Para ello podemos escribir la siguiente consulta:

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
                 SELECT ID, Address, City, Seller_name, Country 
                 FROM Sellers_EU
    

    Es necesario prestar atención para que no se repitan los valores de las claves internas (campo ID), de lo contrario ocurrirá un error. La declaración SELECT también puede incluir una cláusula WHERE para filtrar datos. También cabe señalar que el DBMS no presta atención a los nombres de las columnas contenidas en el operador SELECT, solo se preocupa por el orden de su ubicación. Por lo tanto, los datos de la primera columna especificada que se seleccionó a través de SELECT se completarán en cualquier caso en la primera columna de la tabla Sellers especificada después del operador INSERT INTO, independientemente del nombre del campo.

    4. Copiar datos de una tabla a otra

    A menudo, cuando se trabaja con bases de datos, es necesario crear copias de cualquier tabla, con fines de copia de seguridad o modificación. Para hacer una copia completa de la tabla en SQL, se proporciona un operador separado SELECT INTO. Por ejemplo, necesitamos crear una copia de la tabla Sellers, necesitaremos escribir la consulta de la siguiente manera:

    SELECT * INTO Sellers_new 
    FROM Sellers
    

    A diferencia de la construcción anterior INSERT INTO ... SELECT ... cuando se agregan datos a una tabla existente, la construcción SELECT ... INTO ... FROM ... copia datos a una nueva tabla. También se puede decir que la primera construcción importa datos y la segunda los exporta.

    Al utilizar la construcción SELECT... INTO... FROM... se debe tener en cuenta lo siguiente:

  • puede utilizar cualquier cláusula en la declaración SELECT, como GROUP BY y HAVING;
  • puedes usar una unión para agregar datos de varias tablas;
  • Los datos se pueden agregar solo a una tabla, independientemente de de cuántas tablas se tomaron.