instrucción INSERTAR EN VALORES()

Descubrimos cómo crear tablas, ahora echemos un vistazo detallado a cómo agregar datos a una tabla usando una consulta SQL.

De hecho, es muy simple hacer esto, pero hay varios matices. La opción más simple para insertar datos en una tabla requiere especificar dos cosas:

  • nombres de columnas
  • valores de columna (datos)

Los nombres de las columnas deben especificarse, ya que muy a menudo las columnas tienen valores predeterminados que no se especifican al insertar datos. Y, por lo general, cada tabla tiene al menos una de esas columnas, por ejemplo, ID de fila.

La forma general de la consulta para insertar datos en una tabla se ve así:

INSERT INTO table (column1, column2, column3) VALUES
    (value1, value2, value3),
    (value1, value2, value3),
    (value1, value2, value3);

Por ejemplo, si desea insertar un nuevo registro en la tabla de usuarios, así es como se vería la consulta:

INSERT INTO user (name, level, created_time) VALUES
	('Rabinovich', 5, ‘2022-06-06’);

instrucción INSERT INTO SELECT

Otro escenario común para insertar datos en una tabla es tomarlos de otra tabla, esquema o incluso un DBMS.

Para ello, existe otro formato de consulta INSERT INTO, en el que, en lugar de la parte VALORES, se puede especificar una consulta para seleccionar datos.

La forma general de tal solicitud es:

INSERT INTO table (column1, column2, column3)
SELECT-request;

Escribamos una consulta que agregará todos los usuarios de la tabla de empleados a la tabla de usuarios:

INSERT INTO user (name, created_time)
   SELECT employee.name, employee.join_date
   FROM employee;

Tenemos varios datos en la tabla de empleados, pero de ellos seleccionamos solo dos campos: el nombre y la hora de llegada a la empresa.

Además, la tabla de usuarios requiere que especifique el nivel de usuario - nivel. Los empleados no tienen un nivel en la tabla de empleados, por lo que utilizaremos el hecho de que la tabla de usuarios tiene un valor predeterminado para el campo de nivel. Simplemente no especificamos el nivel y SQL establecerá el valor predeterminado.

Supongamos que no estamos satisfechos con el valor predeterminado y queremos que el nivel sea 99, y reemplazamos user.created_time con la fecha de hoy, entonces podemos escribir esto:

INSERT INTO user (name, level, created_time)
   SELECT employee.name, 99, CURDATE()
   FROM employee;

Hay mucho más que se podría hacer, pero creo que esto será suficiente por ahora. Puedes leer más en la página oficial de MySQL.