Sie sind auf Seite 1von 17

Modulo 7

Usando Insert, Update y Delete


para Modificar los Datos
Descripción General del Módulo

• Agregar datos a tablas


• Modificar y eliminar datos
• Generando Números
Lección 1: Agregar datos a las tablas

• Usar INSERT para agregar datos


• Usar INSERT con SELECT y EXEC
• Usando SELECT INTO
• Demostración: inserción de datos en tablas
Usar INSERT para agregar datos

• La instrucción INSERT ... VALUES inserta una


sola fila por defecto
INSERT INTO Sales.OrderDetails(
orderid, productid, unitprice, qty, discount)
VALUES(12000,39,18,2,0.05);

• Los constructores de tablas y filas agregan


capacidad de múltiples filas para
INSERT...VALUES
INSERT INTO Sales.OrderDetails(
orderid, productid, unitprice, qty, discount)
VALUES
(12001,39,18,2,0.05),
(12002,39,18,5,0.10);
Usar INSERT con SELECT y EXEC

• INSERT...SELECT se usa para insertar el conjunto de


resultados de una consulta en una tabla existente
INSERT INTO Sales.OrderHist(
orderid,custid,empid,orderdate)
SELECT orderid,custid,empid,orderdate
FROM Sales.Orders
WHERE orderdate < '20080101';

• INSERT...EXEC se usa para insertar el resultado de un


procedimiento almacenado o expresión SQL dinámica
en una tabla existente
INSERT INTO dbo.T1 (productid, productname, unitprice)
EXEC Production.ProdsByCategory
@numrows = 5, @catid=1;
Usando SELECT INTO

• SELECT...INTO es similar a INSERT...SELECT


pero SELECT...INTO crea una nueva tabla cada
vez que se ejecuta la instrucción
• Copia los nombres de las columnas, los tipos
de datos y la nulabilidad
• No copia constraints o indexes

SELECT orderid, custid, empid, orderdate, shippeddate


INTO Sales.OrderArchive
FROM Sales.Orders
WHERE orderdate < '20080101';
Demostración: Insertar datos en las Tablas

En esta demostración, verás cómo:


Insertar filas en tablas
Lección 2: Modificar y eliminar datos

• Usando UPDATE para modificar datos


• Usar MERGE para modificar datos
• Usar DELETE para eliminar datos
• Usar TRUNCATE TABLE para eliminar datos
• Demostración: modificación y eliminación de
datos de tablas
Usando UPDATE para modificar datos

• Actualiza todas las filas en una tabla o vista


• El conjunto se puede filtrar con una cláusula WHERE
• Se puede definir con una cláusula JOIN

• Solo las columnas especificadas en la cláusula


SET se modifican

UPDATE Production.Products
SET unitprice = (unitprice * 1.04)
WHERE categoryid = 1 AND discontinued = 0;
Usar MERGE para modificar datos

• MERGE modifica los datos según una


condición
• Cuando la fuente coincide con el objetivo
• Cuando la fuente no tiene coincidencias en el
objetivo
• Cuando el objetivo no coincide en la fuente

MERGE INTO schema_name.table_name AS TargetTbl


USING (SELECT <select_list>) AS SourceTbl
ON (TargetTbl.col1 = SourceTbl.col1)
WHEN MATCHED THEN
UPDATE SET col2 = SourceTbl.col2
WHEN NOT MATCHED THEN
INSERT (<column_list>)
VALUES (<value_list>);
Usar DELETE para eliminar datos

• DELETE sin una clausula WHERE elimina todas las filas

DELETE FROM dbo.Nums;

• Usando la clausula WHERE para especificar las filas


borradas

DELETE FROM Sales.OrderDetails


WHERE orderid = 10248;
Usar TRUNCATE TABLE para eliminar datos

• TRUNCATE TABLE Borra toda la tabla


• Almacenamiento desasignado físicamente, filas no eliminadas
individualmente
• Minimanente Registrado
• Se puede revertir si TRUNCATE se emite dentro de una
transacción
• TRUNCATE TABLE fallará si la tabla está referenciada
por una restricción de clave externa en otra tabla

TRUNCATE TABLE dbo.Nums;


Demostración: modificación y eliminación de
datos de tablas

En esta demostración, verás cómo:


Actualizar y eliminar datos en una tabla
Lección 3: Generando Números

• Usando IDENTITY
• Usando Sequences
Usando IDENTITY

• La propiedad de IDENTITY de una columna genera


automáticamente números secuenciales para su
inserción en una tabla
• Puede especificar valores de iniciales e incremento opcionales
• Solo una columna en una tabla puede tener definida
la propiedad IDENTITY
• IDENTITY column omitted in INSERT statements
• Funciones proporcionadas para devolver los últimos
valores generados
CREATE TABLE Production.Products(
productid int IDENTITY(1,1) NOT NULL,
productname nvarchar(40) NOT NULL,
categoryid int NOT NULL,
unitprice money NOT NULL)
Usando Sequences

• Objetos independientes en la base de datos


• Más flexible que la propiedad IDENTITY
• Se puede usar como valor predeterminado para una columna
• Administrar con instrucciones CREATE / ALTER /
DROP
• Recuperar valor con la clausula NEXT VALUE FOR

-- Define a sequence
CREATE SEQUENCE dbo.InvoiceSeq AS INT START WITH 1
INCREMENT BY 1;
-- Retrieve next available value from sequence
SELECT NEXT VALUE FOR dbo.InvoiceSeq;
Revisión del Módulo

• Preguntas de Revisión

Das könnte Ihnen auch gefallen