La sentencia Insert es una sentencia SQL que pertenece al grupo DML(Data Manipulation Language) «Lenguaje de manipulación de datos en español » la cual nos permite insertar o ingresar filas de datos en las tablas de nuestra base de datos.

Ejemplos desarrollados al final

Sintaxis:

INSERT INTO 
mi_tabla(campo1,campo2,campo3,...) 
VALUES (valor1,valor2,valor3,...)

Donde:

  • Campo: Son los nombres de los campos que se van a insertar.
  • Valor: Los valores que se van a insertar.

Los valores que se van a insertar deben estar en el mismo orden y ser del mismo tipo de la tabla.

Consideraciones al insertar una fila

  • Si necesita actualizar una fila de datos insertada en una tabla, es necesario usar la sentencia UPDATE.
  • Si ha creado una clave primaria en una tabla y trata de INSERTAR una fila de datos con un valor que ya se encuentra registrado, el motor de base de datos le arrojará un error
  • Si necesita insertar varios registros de otra tabla con alguna condición se debe combinar con la SENTENCIA SELECT.
  • Si existe un campo AUTONUMÉRICO creado en la tabla que deseamos INSERTAR, ese campo no deberá ser especificado en la sentencia insert porque nos arrojará un mensaje de error.

Ejemplos sentencia Insert

TABLA DIRECCIONES_RESTAURANTES

IDDIRECCIONTELEFONOCODIGOPOSTAL
1AV 5 DE JUNIO Y CALLE EL ROSARIO 2563366 098568
2EL SALVADOR Y CALLE QUINTA 2585474 098599
3CHILE Y CALLE EL OBELISCO 2452152 088577
4CALLE MAYOR Y AV 10 DE AGOSTO 2526321 096588
5CALLE EL ALFARO Y AV 5 DE ABRIL 2256323 098565

Caso desarrollado #1

Insertar 2 direcciones a la tabla DIRECCIONES_RESTAURANTES.

CODIGO SQL »

INSERT INTO 
DIRECCIONES_RESTAURANTES
VALUES (6,'CALLE DECIMA Y LA OCTAVA','2452120','098745'),
(6,'CALLE DECIMA Y LA OCTAVA','2452120','098745')

NOTA: Cuando solo se especifica los valores a insertar mas no las columnas , los valores deben ir en el orden y el tipo correcto como estén definidos en la tabla.

RESULTADO »

IDDIRECCIONTELEFONOCODIGOPOSTAL
1AV 5 DE JUNIO Y CALLE EL ROSARIO 2563366 098568
2EL SALVADOR Y CALLE QUINTA 2585474 098599
3CHILE Y CALLE EL OBELISCO 2452152 088577
4CALLE MAYOR Y AV 10 DE AGOSTO 2526321 096588
5CALLE EL ALFARO Y AV 5 DE ABRIL 2256323 098565
6CALLE DECIMA Y LA OCTAVA2452120098745
7AV MARISCAL Y 5 DE NOVIEMBRE2698954091223

Caso desarrollado #2

Insertar 3 direcciones a la tabla DIRECCIONES_RESTAURANTES pero solamente especificar el ID y la Dirección sin el Teléfono ni el Código postal.

CODIGO SQL »

INSERT INTO DIRECCIONES_RESTAURANTES (ID, Direccion) 
VALUES (8,'AV PRIMERA Y VICTOR EMILIO'),
(9,'AV BOLIVAR Y LA NOVENA'),
(10,'LIBERTADOR Y LA CUARTA')

NOTA: Cuando al insertar no se especifican todos los campos de un registro, esos campos se insertarán con valor NULL a menos que se especifique un valor por defecto.

RESULTADO »

IDDIRECCIONTELEFONOCODIGOPOSTAL
1AV 5 DE JUNIO Y CALLE EL ROSARIO 2563366 098568
2EL SALVADOR Y CALLE QUINTA 2585474 098599
3CHILE Y CALLE EL OBELISCO 2452152 088577
4CALLE MAYOR Y AV 10 DE AGOSTO 2526321 096588
5CALLE EL ALFARO Y AV 5 DE ABRIL 2256323 098565
6CALLE DECIMA Y LA OCTAVA2452120098745
7AV MARISCAL Y 5 DE NOVIEMBRE2698954091223
8AV PRIMERA Y VICTOR EMILIONULLNULL
9AV BOLIVAR Y LA NOVENANULLNULL
10LIBERTADOR Y LA CUARTANULLNULL

Sentencia Insert Into Select

Cuando necesitemos insertar filas de datos en una tabla pero tomando valores de otra tabla y con ciertas condiciones, tenemos que hacer uso de la sentencia INSERT INTO SELECT, para poder hacer esto debemos realizar la siguiente sintaxis:

Sintaxis:

INSERT INTO 
mi_tabla(campo1,campo2,campo3,...) 
SELECT campo1, campo2, campo3 FROM otra_tabla 
WHERE condición1, condición2,...

NOTA: Los campos recuperados con la sentencia SELECT deben ser del mismo tipo que el campo a insertar y estar en el mismo orden que se especificaron en el insert.

Caso desarrollado #3

Creamos una Tabla llamada DIRECCIONES_2 y la llenamos con la mismos datos que la tabla DIRECCIONES_RESTAURANTES.

CODIGO SQL »

CREATE TABLE 
DIRECCIONES_2(
ID INT NOT NULL,
DIRECCION CHAR(250),
TELEFONO CHAR(10),
CODIGO_POSTAL CHAR(10)
) 
INSERT INTO 
DIRECCIONES_2(CODIGO_POSTAL,TELEFONO, DIRECCION, ID) 
SELECT CODIGO_POSTAL,TELEFONO, DIRECCION, ID  
FROM DIRECCIONES_RESTAURANTES

NOTA: Como observamos en la sentencia anterior, debemos colocar los campos en el mismo orden tanto en el INSERT INTO como en el SELECT.

Etiquetado en: