Está en la página 1de 9

UNSCH EFP.

Ingeniería de Sistemas

OPERACIONES DE MANTENIMIENTO DE DATOS

INGRESO, MODIFICACION Y ELIMINACIÓN DE DATOS


TEMA:
Esta sesión muestra como se puede utilizar SQL para añadir nuevos registros en una tabla,
suprimir registros en una tabla y modificar registros en una tabla ya existente.

OBJETIVOS ESPECIFICOS:

- Describir las tres sentencias SQL que se emplean para modificar los CONTENIDOS de
una base de datos.

CONTENIDO:

 INSERT
 DELETE
 UPDATE

1.- INSERT
La sentencia de INSERT se utiliza para añadir registros a las tablas de la base de datos.
En un tratamiento simplificado, el comando INSERT toma la siguiente forma:

Sintaxis:
INSERT [INTO] Nombre_tabla (nombre_columna1,..) VALUES (exp,…)

Nombre_tabla es únicamente el nombre de la tabla donde se desea ingresar los nuevos


datos.
Nombre_columna es una lista opcional de nombres de campo en los que se insertarán
valores en el mismo número y orden que se especificarán en la Cláusula VALUES. Si no
se especifica la lista de columnas(nombre_comumna1,…), los valores de expr en la
cláusula VALUES deben ser tantos como campos tenga la tabla y en el mismo orden que
se definieron al crear la tabla.

Si solo se indica una lista parcial de columnas, el resto de las columnas recibirán un valor
nulo o el valor configurado por defecto para esa columna, en caso que lo tenga.
Además, no se deben asignar valores a los siguientes tipos de columnas, dado que SQL
Server genera automáticamente este valor.

Columnas con la propiedad IDENTITY

Exp es una lista de expresiones o valores constantes, separados por comas, para dar valor
a los distintos campos del registro que se añadirá a la tabla. Las cadenas de caracteres
deberán estar encerradas entre comillas simples.

Modelamiento de datos 1 Prof. Elvira Fernández


UNSCH EFP.Ingeniería de Sistemas

NOTA

 La palabra clave INTO en un comando INSERT es opcional y solo se utiliza para


clarificar el código.
 Los valores ingresados deben coincidir con la lista de columnas. La cantidad de
valores provistos debe ser igual a la cantidad de columnas indicadas en la lista de
columnas, y el tipo de dato, precisión, y escala de cada valor debe coincidir con los de
las columnas correspondientes.
 Cuando se define un comando INSERT, se puede usar la cláusula VALUES para
especificar los valores de los datos para una fila o usar una subconsulta SELECT para
especificar los valores para una o más columnas.

Nota: Una vez creadas las tablas de la base de datos se debe cargar la data, para ello copiar la
base de datos ControlInventario de una tienda de abarrotes.

1.1 INSERTAR REGISTROS CON VALORES INCOMPLETOS

Cuando la lista de valores está incompleta es obligatorio establecer en que columna va cada valor
de la lista, por lo que la lista de columnas es obligatoria en la instrucción INSERT.

Utilizar la base de datos ControlInventario creada anteriormente.

Modelamiento de datos 2 Prof. Elvira Fernández


UNSCH EFP.Ingeniería de Sistemas

EJEMPLO 01: Añadir un registro a la tabla proveedor

INSERT proveedor ( Nombre , Representante , Direccion )


VALUES('GOLOSINAS Y ANTOJOS','ZAVALA ZEGARRA, CLAUDIA',
'AV. CIRCUNVALACION 755 ZONA INDUSTRIAL')

INSERT proveedor ( Nombre , Representante , Direccion )


VALUES('EL DULZON','PRADO PRADO, MIGUEL', 'AV. BRASIL CDA 5 NRO 526')

INSERT proveedor ( Nombre , Representante , Direccion )


VALUES('LACTEOS DEL CENTRO','JUAN PEREZ, WALTER','LIBERTAD 345 URB. EL PINO')

En este comando, los valores han sido definidos para la columnas Nombre, Representante Y
Direccion Sin embargo, no es necesario incluir la columna IdProveedor en el comando
INSERT, dado que la columna IdProveedor se define con la propiedad IDENTITY, porque los
valores para esa columna se generan automáticamente.

Cada sentencia INSERT añade un único registro a la tabla. En el ejemplo sólo se han
especificado 3 campos con sus respectivos valores, el resto de campos quedarán a nulo. Un
valor Nulo NULL no significa blancos o ceros sino simplemente que el campo nunca ha tenido
un valor.

1.2 INSERTAR REGISTROS CON VALORES COMPLETOS

Añadir un registro a la tabla PRODUCTO


INSERT producto (IdCategoria,IdProveedor,Nombre,UnidadMedida,PrecioProveedor,
StockActual,StockMinimo,Descontinuado )
VALUES(1,1,'CARAMELOS BASTON ARCOR','PAQUETE 454 GR',1.50,200,50,0)

INSERT producto VALUES(1,2,'CARAMELOS SURTIDO DE FRUTAS','PAQUETE 450


GR',1.00,300,50,0)

INSERT producto VALUES(2,3,'YOGURT GLORIA FRESA','ENVASE 1


LT',2.00,450,240,0)

INSERT producto VALUES(3,4,'JAMONADA LAIVE','KILOGRAMO',12.50,80,75,0)

Añadir un registro a la tabla CATEGORIA


º
INSERT categoria (Categoria, Descripcion)
VALUES('GOLOSINAS','GALLETAS,CHOCOLATES,CARAMELOS,TOFFES')

INSERT categoria VALUES('LACTEOS','LECHES,YOGURES,QUESOS,MANTEQUILLAS')

INSERT categoria VALUES('EMBUTIDOS','JAMONADAS,JAMONES,SALCHICHAS,CHORIZOS')

Ejercicio01.. Llenar 1 registro más a la tabla PROVEEDOR, PRODUCTO Y


CATEGORIA

Modelamiento de datos 3 Prof. Elvira Fernández


UNSCH EFP.Ingeniería de Sistemas

1.3 INSERCIÓN DE LA FECHA DEL SISTEMA

La función getdate() entrega la fecha y hora del sistema. La puede utilizar para insertar la fecha
y hora del sistema en una columna de tipo fecha_hora.

Añadir un registro a la tabla ORDEN

INSERT orden (IdOrden,FechaOrden)

VALUES(1, getdate())

INSERT orden VALUES(2, getdate(), getdate() )

INSERT orden VALUES(3, getdate() - 10, getdate() - 8)

Realizar consulta la tabla Orden:

SELECT * FROM ORDEN

1.4 INSERCIÓN DE UN VALOR DE FECHA ESPECIFICO

Para enviar un dato fecha al servidor, la fecha se envía como una cadena con formato de fecha.
Por lo general, cuando la conexión es a un servidor SQL, no sabemos cuál es el formato de fecha
predeterminado que está utilizando el servidor, por lo que en ocasiones podemos tener
problemas con la manipulación de las fechas.

EJERCICIO:

1.4.1 Cree una tabla PRUEBA_FECHAS, con un campo Fecha de tipo Datetime que
no permita valores nulos, para hacer algunas pruebas con las fechas.
1.4.2 Ahora, inserte la fecha 20 de junio de 1998

INSERT INTO PRUEBA_FECHAS

VALUES(’20 Jun 1998’)

go

SELECT * FROM PRUEBA_FECHAS

1.4.3 Ahora inserte la fecha 3 de enero de 1979 (‘03/01/1979’) e inserte otro registro
con la fecha : (‘11/26/1980’)

NOTA: observe si la fechas se registró correctamente

Modelamiento de datos 4 Prof. Elvira Fernández


UNSCH EFP.Ingeniería de Sistemas

Cuando se envía fechas al servidor se recomienda informar al servidor en qué formato se le está
enviando las fechas para que las lea correctamente

1.4.4 Infórmale al servidor acerca del formato de sus fechas:

SET DATEFORMAT dmy


Go

Ahora inserte nuevamente la fecha usando el formato acostumbrado para nosotros(dmy)

1.2 INSERTAR MÚLTIPLES REGISTROS:

Además existe la posibilidad de agregar múltiples registros con ayuda del comando
SELECT .

Usar una subconsulta SELECT para agregar datos

Se puede usar una subconsulta SELECT dentro de un comando INSERT para agregar
datos a una tabla desde otra u otras tablas o vistas. Una subconsulta permite agregar más
de una fila a la vez.

NOTA: Una subconsulta SELECT en un comando INSERT se utiliza para agregar


subconjuntos de datos existentes a una tabla, mientras que la cláusula VALUES se usa
para guardar datos nuevos en una tabla.

Ejemplo :

o Agregar a la tabla PROVEEDOR 2 registros.

Ejecutar la siguiente instrucción SQL :

SELECT * FROM proveedor (Selecciona todos los campos de la tabla


PROVEEDORES)

o Crear una tabla nueva llamada COPIA_PROVEEDOR y que contenga los


mismos campos o columnas de la tabla PROVEEDOR.

Modelamiento de datos 5 Prof. Elvira Fernández


UNSCH EFP.Ingeniería de Sistemas

CREATE TABLE COPIA_PROVEEDOR (


IdProveedor int ,
Nombre varchar(40) NOT NULL,
Representante varchar(30) NULL,
Direccion varchar(60) NULL,
Ciudad varchar(15) NULL,
Departamento varchar(15) NULL,
CodigoPostal varchar(15) NULL,
Telefono varchar(15) NULL,
Fax varchar(15) NULL )

o Ahora nuestro objeto es trasladar todos los proveedores de la tabla PROVEEDOR


que tenga el campo ciudad =’LIMA’, a nuestra nueva tabla
COPIA_PROVEEDOR.

INSERT INTO COPIA_PROVEEDOR


SELECT IdProveedor ,
nombre,Representante,Direccion,Ciudad,Departamento,CodigoPostal,
Telefono,Fax
FROM PROVEEDOR

WHERE Ciudad = 'lima'

Como podemos observar es posible combinar nuestro comando INSERT con


consultas de selección, para agregar datos específicos sin tener la necesidad de
realizarlo uno por uno

2. UPDATE

La sentencia UPDATE se utiliza para cambiar el contenido de los registros de una


tabla de la base de datos. Su formato es:

UPDATE Nombre_tabla SET nombre_columna = expr,…


[WHERE {condición}]

Nombre_tabla es únicamente el nombre de la tabla donde se desea ingresar los nuevos datos
Nombre_columna es el nombre de columna o campo cuyo valor se desea cambiar. En una
misma sentencia UPDATE pueden actualizarse varios campos de cada registro de la tabla.

Expr es el nuevo valor que se desea asignar al campo que le precede. La expresión puede ser
un valor constante o una subconsulta. Las cadenas de caracteres deberán estar encerradas
entre comillas. Las subconsultas entre paréntesis.

La cláusula WHERE determina que registros se modificarán

EJEMPLO01: Subir el precio de los productos de la tabla producto a un 15% de


aquellos productos cuya categorìa sea igual a 1.

SP_HELP PRODUCTO
select * from PROVEEDOR
select * from dbo.PRODUCTO

Modelamiento de datos 6 Prof. Elvira Fernández


UNSCH EFP.Ingeniería de Sistemas

select * from dbo.CATEGORIA

INSERT proveedor VALUES('ANTOJITOS','MENDIETA AZPARRENT,BERTHA',


'AV. GRAU 125','AREQUIPA','AREQUIPA',NULL,NULL,NULL)
go
INSERT proveedor VALUES('DISTRIBUIDORA DE GOLOSINAS FENIX','FELICES ARSENIO,
JOSE',
'JR. RECUAY 347 BREÑA','LIMA','LIMA',NULL,NULL,NULL)
go

INSERT producto VALUES(1,9,'GALLETAS SURTIDAS BUTTER COOKIES','ENVASE 16


ONZAS',2.50,200,50,0)
go
INSERT producto VALUES(1,10,'CHOCOLATE LOVER CHIPS DELUXE','BARRA 16
ONZAS',1.30,230,100,0)
go
INSERT producto VALUES(3,5,'JAMONADA LAIVE','KILOGRAMO',12.50,80,75,0)
go

select * from dbo.PRODUCTO

UPDATE PRODUCTO
SET PrecioProveedor = PrecioProveedor*1.5
WHERE IdCategoria = 1

Ejemplo 02:fijar el campo FechaEntrada de Orden (en la tabla ORDEN) de todos aquellas
órdenes realizadas que tienen vacía (NULL)a la fecha de hoy, se pondría:

select * from dbo.ORDEN

UPDATE dbo.ORDEN
SET FechaEntrada = GETDATE()
WHERE FechaEntrada is NULL

1. Un ejemplo mas simple podría ser fijando un precio único para todos los productos, sin
utilizar la cláusula WHERE.

UPDATE PRODUCTO
SET PrecioProveedor = 200

3. DELETE

DELETE es especialmente útil cuando se desea eliminar varios registros. En una


instrucción DELETE con múltiple tablas, debe incluir el nombre de tabla (tabla*). Si se
especifica más de una tabla para eliminar registros, todas deben tener una relación de
muchos a uno. Si se desea eliminar todos los registros de una tabla, eliminar la propia
tabla es más eficiente que ejecutar una consulta de borrado.
EL FORMATO DE LA SENTENCIA ES:

DELETE FROM Nombre_tabla


[WHERE {condición}]

Modelamiento de datos 7 Prof. Elvira Fernández


UNSCH EFP.Ingeniería de Sistemas

Nombre_tabla es únicamente el nombre de la tabla donde se desea borrar los datos

La cláusula WHERE determina que registros se borrarán

Cada sentencia DELETE borra los registros que cumplen la condición impuesta o todos si
no se indica la cláusula WHERE

EJEMPLO 1:El ejemplo siguiente elimina todos los registros de la tabla ORDEN

DELETE ORDEN

EJEMPLO 1:El ejemplo siguiente elimina todos los registros de la tabla CATEGORIA

DELETE CATEGORIA

4. TRUNCATE TABLE

A diferencia de la instrucción DELETE, TRUNCATE TABLE no devuelve un mensaje


acerca de la cantidad de las filas afectadas. Tanto TRUNCATE TABLE como DELETE
quitan todas las filas de la tabla.. pero TRUNCATE TABLE es más rápida y utiliza menos
recursos de los registros de transacciones y del sistema.

EJEMPLO 01:
Elimine todos los registros de la tabla PRODUCTO

TRUNCATE TABLE PRODUCTO

EJERCICIOS PROPUESTOS;

SEGÚN LA BASE DE DATOS Controlinverntario:

WHERE SUE_VEN >800


1. Insertar 5 registros a la tabla ORDEN_DETALLE .

2. Realice una inserción de múltiples registros de la tabla producto, y que solo inserte los
registros a la nueva tabla creada, los productos cuyo PrecioProveedor sean mayores a 20
soles y menores que 30.
RE TIP_VEN = ‘1’
3. Actualice el campo FechaOrden y coloque la fecha actual del sistema de la tabla
ORDEN.

4. Crear 2 preguntas para realizar actualizaciones o cambios a una de las tablas de la bd.

5. Realizar una actualización en cascada.

Modelamiento de datos 8 Prof. Elvira Fernández


UNSCH EFP.Ingeniería de Sistemas

6. Eliminar los registros con la descripción del campo ciudad igual a ‘Lima’ de la tabla
PROVEDOR.

7. Eliminar los registros de la tabla PROVEEDOR en cascada.

PARA RECORDAR:

 La sentencia INSERT de una fila añade una fila de datos a una tabla. Los valores para
la nueva fila se especifican en la sentencia como constantes.

 UPDATE es especialmente útil cuando se desea cambiar un gran número de registros


o cuando éstos se encuentran en múltiples tablas. Puede cambiar varios campos a la
vez. Las filas a actualizar son especificadas mediante una condición de búsqueda.

 La sentencia DELETE suprime cero o mas filas de datos de una tabla. Las filas a
suprimir son especificadas mediante una condición de búsqueda.

 A diferencia de la sentencia SELECT, que puede operar sobre múltiples tablas, las
sentencias INSERT, DELETE y UPDATE funcionan solamente sobre una única tabla
cada vez.

Modelamiento de datos 9 Prof. Elvira Fernández