Capitulo 2 – Lección 1: Modificación de datos

Presentación del Capitulo:


Una de las funciones básicas necesarias para cualquier base de datos es la capacidad de añadir, eliminar y modificar datos. En el lenguaje de programación SQL, el lenguaje de manipulación de datos (DML) sirve para este propósito.
Los comandos INSERT, UPDATE, y DELETE le proporcionarán la posibilidad de manipular los datos basados ​​en la información proporcionada o sobre la base de información que se encuentra en otras partes de la base de datos.

En Microsoft SQL Server 2005, la cláusula OUTPUT se introdujo para que pueda devolver la información de cada fila afectada por una instrucción INSERT, UPDATE,o DELETE. En SQL Server 2008, la instrucción MERGE se introdujo para mejorar la capacidad de realizar INSERT, UPDATE, y DELETE en una tabla basada en los resultados de una consulta a una tabla combinada. Estas dos características añaden flexibilidad al DML.

Para garantizar la coherencia y la fiabilidad de los datos, SQL Server proporciona la capacidad de ejecutar sentencias, como parte de una transacción. Una transacción es un grupo de comandos que tiene éxito o fracasa en su conjunto. Uno de los ejemplos más referenciados de una transacción es la transferencia de fondos desde una cuenta de ahorros para una cuenta de cheques. Como mínimo, dos pasos tienen que ocurrir:
un débito de ahorros y un crédito al corriente. Una transacción se aseguraría de que si sólo una parte de la transacción se completó cuando el sistema fallo, toda la transacción volverá a su estado inicial.

Los objetivos en este capítulo:
  • Modificar datos mediante el uso de INSERT, UPDATE y DELETE.
  • Retorno de datos mediante el uso de la cláusula OUTPUT.
  • Modificar datos mediante el uso de las instrucciones MERGE.
  • Administración de las transacciones.
Lección 1: Las sentencia INSERT, UPDATE, DELETE, y MERGE:


Las sentencias INSERT, DELETE, y UPDATE le permiten añadir, eliminar y modificar los datos en bases de datos. Estas declaraciones se puede utilizar en una variedad de formas que le permite especificar valores fijos. El esquema de la tabla(también conocida como la definición de la tabla) afecta a los valores que pueden o no pueden ser definidos, modificados y eliminados en INSERT, DELETE y UPDATE.
Por ejemplo, la propiedad IDENTITY se utiliza para crear una columna de identidad que asigna de forma automática valores incrementales en la columna de identidad cada vez que se inserta una nueva fila. Debido a esto, en circunstancias normales, no se puede introducir un valor para una columna de identidad cuando se ejecuta una instrucción INSERT o UPDATE. Se puede superar esta limitación mediante la emisión de la SET IDENTITY_INSERT ON comando en la conexión actual. Las definiciones NULL y las restricciones también tienen un efecto en las instrucciones DML.

La Instrucción INSERT (Para mas información clic AQUI)
La instrucción INSERT le ofrece la posibilidad de añadir nuevas filas a una tabla.Dependiendo del esquema de la tabla, puede ser necesario proporcionar los datos para todos o sólo para una parte de las columnas de la tabla. Las restricciones DEFAULT, propiedades IDENTITY , y la configuración de NULL de cada columna, pueden afectar los requerimientos de datos de sus declaraciones INSERT.
Sintaxis INSERT estándar:
image
Cuando se insertan datos, puede incluir datos de todas las columnas o una lista parcial de las columnas. Cuando se insertan datos en todas las columnas, usted no tiene que especificar los nombres de columna en la instrucción INSERT, como en la muestra aquí:

INSERT INTO Sales.SalesReason
VALUES ('Item Closeout', 'Other', getdate());

En este comando, SalesReasonID no se ha introducido debido a que es una columna de identidad y se inserta de forma automática por el motor de SQL Server.
La columna ModifiedDate de la tabla SalesReason tiene una restricción DEFAULT asociada con el que especifica la función GETDATE (). Debido a esto, el siguiente comando produce los mismos resultados que el comando anterior:

INSERT INTO Sales.SalesReason
VALUES ('Item Closeout', 'Other', DEFAULT);

Si una columna admite valores NULL, puede utilizar la palabra clave NULL para insertar una fila con datos faltantes en una o más columnas, como se muestra en negrita en el siguiente ejemplo:
INSERT INTO Sales.SpecialOffer
VALUES ('Temporary Holiday Discount', .10, 'Seasonal Discount'
, 'Reseller', GETDATE(), DATEADD(dd, 30, getdate())
, 1, NULL, DEFAULT, DEFAULT);

Si desea especificar sólo ciertas columnas, puede hacer referencia a los nombres de columna al escribir la sentencia INSERT, como en el ejemplo siguiente:

INSERT INTO Sales.SpecialOffer
(Description, DiscountPct, Type, Category, StartDate
, EndDate, MinQty)
VALUES ('Temporary Holiday Discount', .10, 'Seasonal Discount'
, 'Reseller', GETDATE(), DATEADD(dd, 30, getdate()), 1);

Por último, la instrucción SELECT INTO permite crear una nueva tabla temporal o permanente con los resultados de la instrucción definida SELECT. El siguiente comando crea una tabla temporal denominada #EmployeeDepartment que incluye el nombre de cada empleado, título del trabajo, e información del departamento:

SELECT IDENTITY (int, 1,1) AS EmpID, FirstName, LastName, JobTitle
, Name AS 'Department', GroupName as 'Division'
INTO #EmployeeDepartment
FROM HumanResources.Employee JOIN Person.Person
ON HumanResources.Employee.BusinessEntityID = Person.Person.BusinessEntityID
JOIN HumanResources.EmployeeDepartmentHistory
ON HumanResources.Employee.BusinessEntityID =
HumanResources.EmployeeDepartmentHistory.BusinessEntityID
JOIN HumanResources.Department
ON HumanResources.Department.DepartmentID =
HumanResources.EmployeeDepartmentHistory.DepartmentID
WHERE HumanResources.EmployeeDepartmentHistory.EndDate IS NULL
ORDER BY Department, Division

La Instrucción UPDATE (Para mas información clic AQUI)
Con el tiempo, los datos existentes en la base de datos cambia y requiere alguna modificación. El comando UPDATE permite cambiar el valor de una o más columnas en una o más filas de una tabla. Al agregar un valor a una columna que se encuentra actualmente NULL y la eliminación de un valor de una columna son considerados UPDATE,no INSERT o DELETE. Es importante recordar que una sentencia INSERT agrega una fila completamente nuevo a la mesa y que un comando DELETE elimina una fila completa de la mesa.
Sintaxis UPDATE estándar:

image

En su forma más simple, la instrucción UPDATE requiere sólo el nombre del objeto(tabla o vista) que se actualiza y el valor que se establece. La cláusula WHERE define las filas que se actualizan por el comando. Debido a que una sola instrucción UPDATE tiene la capacidad de actualizar todas las filas de una tabla con un solo comando, las técnicas de programación, tales como procedimientos almacenados y triggers deben ser diseñados para detectar y manejar múltiples registros de actualizaciones.

El siguiente comando actualiza cada fila de la tabla CurrencyRate y añade 0,005 a la tasa actual al final del día:

UPDATE Sales.CurrencyRate
SET EndOfDayRate = EndOfDayRate + .005;

Si usted necesita para actualizar sólo las filas específicas, se debe definir una cláusula WHERE para restringir el conjunto de filas. El siguiente comando establece el nombre de la razón de ventas a "N / A", donde SalesReasonID  es igual a 10 en tabla SalesReason:

UPDATE Sales.SalesReason
SET Name = 'N/A'
WHERE SalesReasonID = 10;

También puede actualizar la información en una tabla de destino sobre la base de la información de una tabla con la tabla de destino mediante el uso de la cláusula FROM. Por ejemplo, el siguiente comando aumenta el precio unitario de todos los productos de color rojo en un 5 por ciento:

UPDATE Sales.SalesOrderDetail
SET UnitPrice = UnitPrice * 1.05
FROM SALES.SalesOrderDetail JOIN Production.Product
ON SALES.SalesOrderDetail.ProductID = Production.Product.ProductID
WHERE Production.Product.Color = 'Red'


La Instrucción DELETE (Para mas información clic AQUI)
La instrucción DELETE permite eliminar de las filas de la base de datos que ya no son necesarios.
Con la instrucción DELETE, filas completas de datos se eliminan de la tabla. Si desea eliminar un simple valor de una columna en una fila determinada, debe utilizar una instrucción UPDATE.
Sintaxis DELETE estándar:
image
CURRENT OF, cursor_name GLOBAL, y cursor_variable_name son opciones sólo aplicables cuando se utilizan cursores.

La sintaxis de la instrucción DELETE es el más simple de las tres sentencias DML.Al igual que la instrucción UPDATE, es importante tener en cuenta para incluir la cláusula WHERE cuando se escribe una instrucción DELETE. Si se ejecuta una instrucción DELETE sin una cláusula WHERE, todas las filas de la tabla se eliminan.
Para eliminar todas las filas de una tabla, la sintaxis es simplemente:

DELETE FROM <tablename>

Para limitar las filas eliminadas, agregue una cláusula WHERE a la instrucción DELETE. El ejemplo siguiente elimina todas las filas de la tabla de empleados para el empleado que tiene un ID de empleado igual a 7:


DELETE FROM EMPLOYEES
WHERE EmployeeID = 7

Al igual que los comandos INSERT y UPDATE, el comando DELETE puede eliminar filas de una tabla basada en la información regresada de una tabla unida. Para lograr esto, se define una segunda cláusula FROM .
El siguiente comando elimina las filas de la tabla Detalles de pedidos, donde se hizo el pedido antes de 10 de julio 1996, y se ha enviando (o entregado):


DELETE FROM [Order Details]
FROM ORDERS JOIN [Order Details]
ON Orders.OrderID = [Order Details].OrderID
WHERE OrderDate < '07-10-1996' AND ShippedDate IS NOT NULL

Uso de la instrucción TRUNCATE TABLE (Para mas información clic AQUI)
Como una instrucción DELETE sin una cláusula WHERE, la instrucción TRUNCATE TABLE también se puede utilizar para eliminar todos los datos de una tabla. La instrucción TRUNCATE TABLE difiere de la sentencia DELETE de varias maneras.En primer lugar, en la sentencia DELETE los registros y la información sobre cada fila es eliminada, mientras que la instrucción TRUNCATE TABLE sólo crea entradas para la cancelación de la asignación de las páginas de datos. En segundo lugar, debido al registro mínimo, la instrucción TRUNCATE TABLE se ejecuta más rápido y requiere menos recursos en el servidor. Por último, si una de las columna es identity en la tabla, el comando TRUNCATE TABLE restablece el valor de identidad.
La sintaxis de la instrucción TRUNCATE TABLE es simplemente:

TRUNCATE TABLE <tablename>

Ni la instrucción DELETE sin una cláusula WHERE, ni la instrucción TRUNCATE TABLE afectan a la estructura del esquema de la tabla o los objetos relacionados.

Resumen de la lección
  • La sentencia INSERT permite agregar nuevas filas a una tabla.
  • La instrucción UPDATE permite hacer cambios en los datos existentes en una tabla. Que le permite no sólo modificar el valor de una columna, sino que también le permite agregar o quitar un valor de una sola columna de la tabla sin afectar al resto de la fila que se modificó.
  • La instrucción DELETE permite eliminar uno o más filas de una tabla.

No hay comentarios:

Publicar un comentario