Anda di halaman 1dari 49

Copyright 2011 Accenture All Rights Reserved.

SQL Server - Introduccin


February 28
th
, 2011
Ignacio Carballal Alejo Miguel - Federico Marzullo
Agenda
Introduccin a sentencias SELECT
Uso de JOINS, ORDER BY, GROUP BY y funciones de
agregacin
Introduccin a DDL
Tablas, Stored Procedures, Views y Functions
Introduccin a DML
INSERT, UPDATE, DELETE
Control de transacciones
Transact SQL
Estructuras de control
Copyright 2011 Accenture All Rights Reserved.
Agenda
Copyright 2011 Accenture All Rights Reserved.
Introduccin a sentencias SELECT
Uso de JOINS, ORDER BY, GROUP BY y funciones de
agregacin
Introduccin a DDL
Tablas, Stored Procedures, Views y Functions
Introduccin a DML
INSERT, UPDATE, DELETE
Control de transacciones
Transact SQL
Estructuras de control
Introduccin a sentencias SELECT
Copyright 2011 Accenture All Rights Reserved.
SELECT {{ TOP { 10 | 10 PERCENT } | DISTINCT | {AVG | MAX | MIN | COUNT }} | T2.COL1 AS COLUMN1 [, T2.COL2,
T2.COLn] | *}
FROM dbo.TABLA2 AS T2 [, dbo.VIEWn AS Tn]
{{INNER | LEFT | RIGHT } { JOIN } dbo.TABLA1 AS T1 ON T1.COL1 = T2.COL1}
{ WHERE T1.COL2 = 'Carlos' { { AND | OR } T2.COL3 > 5 }}
{ GROUP BY T2.COL1 [, T2.COL2, T2.COLn] { HAVING T2.COL1 > 10 { { AND | OR } T2.COL3 > 5 }}}
{ ORDER BY T2.COL1 { ASC | DESC } [, T2.COL2 { ASC | DESC }, T2.COLn { ASC | DESC }] }
Cmo se ve una sentencia SQL?
Sintaxis y semntica
En otras palabras
SELECT

FROM dbo.TABLA
INNER

WHERE T1.COL2 =

GROUP BY T2.COL1

ORDER BY T2.COL1
Especificacin de datos a obtener (y su formato)
Especificacin del origen de datos
Especificacin de filtros
Especificacin de agrupacin (si utilizamos funciones de agregacin en el SELECT)
Especificacin de orden de los datos especificados en el SELECT
Temas complementarios:
In
Like
Between
Union
Agenda
Copyright 2011 Accenture All Rights Reserved.
Introduccin a sentencias SELECT
Uso de JOINS, ORDER BY, GROUP BY y funciones de
agregacin
Introduccin a DDL
Tablas, Stored Procedures, Views y Functions
Introduccin a DML
INSERT, UPDATE, DELETE
Control de transacciones
Transact SQL
Estructuras de control
Introduccin a sentencias SELECT
> Parte por parte Uso de JOINS
Copyright 2011 Accenture All Rights Reserved.
Cmo se relacionan tablas o vistas?
Qu tipos de JOIN existen?
La forma en la cual se relacionan distintas tablas o vistas se denomina
JOIN (unin). Existen asimismo 2 formas de formalizar un JOIN:
Explcito: Mediante la clusula JOIN
Implcito: Declarando la condicin en una clusula en el WHERE
INNER JOIN

LEFT JOIN

RIGHT JOIN
Devuelve aquellas filas que contienen datos coincidentes en ambas tablas en las
columnas especificadas.
Devuelve todas las filas de la tabla de la izquierda sin importar si existe en ambas tablas.
Devuelve todas las filas de la tabla de la derecha sin importar si existe en ambas tablas.
Introduccin a sentencias SELECT
> Parte por parte Uso de JOINS
Copyright 2011 Accenture All Rights Reserved.
Cmo se implementan?
Sintaxis y semntica (INNER JOIN)
SELECT columnas FROM dbo.table_name1 AS T1
INNER JOIN dbo.table_name2 AS T2 ON T1.column_name = T2.column_name
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15
Sean las siguientes tablas:
Personas
Orders
Introduccin a sentencias SELECT
> Parte por parte Uso de JOINS
Copyright 2011 Accenture All Rights Reserved.
Cmo se implementan?
Sintaxis y semntica (INNER JOIN)
SELECT P.LastName, P.FirstName, O.OrderNo
FROM dbo.Persons AS P
INNER JOIN dbo.Orders AS O ON P.P_Id = O.P_Id
ORDER BY P.LastName
Resultado
LastName FirstName OrderNo
Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
Introduccin a sentencias SELECT
> Parte por parte Uso de JOINS
Copyright 2011 Accenture All Rights Reserved.
Cmo se implementan?
Sintaxis y semntica (LEFT JOIN)
SELECT columnas FROM dbo.table_name1 AS T1
LEFT JOIN dbo.table_name2 AS T2 ON T1.column_name = T2.column_name
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15
Sean las siguientes tablas:
Personas
Orders
Introduccin a sentencias SELECT
> Parte por parte Uso de JOINS
Copyright 2011 Accenture All Rights Reserved.
Cmo se implementan?
Sintaxis y semntica (LEFT JOIN)
SELECT P.LastName, P.FirstName, O.OrderNo
FROM dbo.Persons AS P
LEFT JOIN dbo.Orders AS O ON P.P_Id = O.P_Id
ORDER BY P.LastName
Resultado
LastName FirstName OrderNo
Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
Svendson Tove
???
Introduccin a sentencias SELECT
> Parte por parte Uso de JOINS
Copyright 2011 Accenture All Rights Reserved.
Cmo se implementan?
Sintaxis y semntica (RIGHT JOIN)
SELECT columnas FROM dbo.table_name1 AS T1
RIGHT JOIN dbo.table_name2 AS T2 ON T1.column_name = T2.column_name
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15
Sean las siguientes tablas:
Personas
Orders
Introduccin a sentencias SELECT
> Parte por parte Uso de JOINS
Copyright 2011 Accenture All Rights Reserved.
Cmo se implementan?
Sintaxis y semntica (RIGHT JOIN)
SELECT P.LastName, P.FirstName, O.OrderNo
FROM dbo.Persons AS P
RIGHT JOIN dbo.Orders AS O ON P.P_Id = O.P_Id
ORDER BY P.LastName
Resultado
???
LastName FirstName OrderNo
Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
34764
Introduccin a sentencias SELECT
> Parte por parte Uso de ORDER BY
Copyright 2011 Accenture All Rights Reserved.
Cmo se implementa?
Sintaxis y semntica
SELECT Col1, Col2, Col3 FROM dbo.table_name
ORDER BY Col1, Col2 ASC, Col3 DESC
Qu resulta???
Un listado ordenado en forma
ascendente por las columnas
Col1 y Col2 y ordenado en forma
descendente por la columna
Col3.
Para qu sirve?
Su nica funcin es la de ordenar los resultados a mostrar.
Introduccin a sentencias SELECT
> Parte por parte Uso de GROUP BY
Copyright 2011 Accenture All Rights Reserved.
Cmo se implementa?
Sintaxis y semntica
Para qu sirve?
Su nica funcin es la de agrupar los resultados a mostrar.
Antes hay que definir otro
concepto!
?
Las Funciones de Agregacin!
Introduccin a sentencias SELECT
> Parte por parte Uso de GROUP BY
Copyright 2011 Accenture All Rights Reserved.
Cules son?
Para qu sirven?
Devuelven un nico valor, calculado por todos los valores en una
columna dada.
AVG(): Devuelve el valor promedio aritmtico
COUNT(): Devuelve la cantidad de filas
FIRST(): Devuelve el primer valor
LAST(): Devuelve el ltimo valor
MAX(): Devuelve el mayor valor
MIN(): Devuelve el menor valor
SUM(): Devuelve el valor de la suma de todos los valores
Aaaaaah! Ok Y?
Introduccin a sentencias SELECT
> Parte por parte Uso de GROUP BY
Copyright 2011 Accenture All Rights Reserved.
Cmo se implementan?
Sintaxis y semntica
SELECT <function>(E.Salary) AS VALUE
FROM dbo.Employees AS E
Resultado
VALUE
3500.00
Pero Y si quiero agregar el nombre
del empleado al resultado, puedo agregar
la columna al SELECT?
?
Introduccin a sentencias SELECT
> Parte por parte Uso de GROUP BY
Copyright 2011 Accenture All Rights Reserved.
Ahora s hablemos de GROUP BY!
Cmo se implementan?
Sintaxis y semntica
SELECT E.LastName, E.FirstName, <function>(E.Salary) AS VALUE
FROM dbo.Employees AS E
GROUP BY E.LastName, E.FirstName
Resultado
LastName FirstName VALUE
Perez John 3500.00
La clusula GROUP BY siempre va acompaada de
TODAS las columnas presentes en el SELECT excepto
aquellas que contienen funciones de agregacin.
Introduccin a sentencias SELECT
> Parte por parte Uso de GROUP BY
Copyright 2011 Accenture All Rights Reserved.
Veamos otro ejemplo
Sintaxis y semntica (usando GROUP BY)
SELECT Customer, SUM(OrderPrice) AS Total
FROM dbo.Orders GROUP BY Customer
_Id OrderDate OrderPrice Customer
1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen
Dada la siguiente tabla Orders:
Sintaxis y semntica (sin GROUP BY)
SELECT Customer, SUM(OrderPrice) AS Total
FROM dbo.Orders
Customer Total
Hansen 2000
Nilsen 1700
Jensen 2000
Resultado Resultado
Customer Total
Hansen 5700
Nilsen 5700
Hansen 5700
Hansen 5700
Jensen 5700
Nilsen 5700
Introduccin a sentencias SELECT
> Parte por parte Uso de GROUP BY
Copyright 2011 Accenture All Rights Reserved.
Y qu pasa si quiero filtrar dentro de los resultados?
Sintaxis y semntica (usando GROUP BY y HAVING)
SELECT Customer, SUM(OrderPrice) AS Total
FROM dbo.Orders GROUP BY Customer HAVING SUM(OrderPrice) > 2100
Suponiendo los siguientes resultados (continuando ejemplo anterior):
Customer Total
Hansen 2000
Nilsen 1700
Jensen 2500
Resultado
Customer Total
Jensen 2500
La clusula GROUP BY seguida de HAVING permite
realizar filtros de forma similar a como lo haramos con
la clusula WHERE.
Agenda
Copyright 2011 Accenture All Rights Reserved.
Introduccin a sentencias SELECT
Uso de JOINS, ORDER BY, GROUP BY y funciones de
agregacin
Introduccin a DDL
Tablas, Stored Procedures, Views y Functions
Introduccin a DML
INSERT, UPDATE, DELETE
Control de transacciones
Transact SQL
Estructuras de control
Introduccin a DDL
Copyright 2011 Accenture All Rights Reserved.
La sigla DDL significa Data Definition Language, no es ni ms ni
menos que el lenguaje utilizado para definir objetos tales como:
Tablas (fsicas y temporales)
Stored Procedures
Functions
Views
Cada vez que realizamos gestiones sobre cualquier de los objetos arriba
mencionados, incluyendo permisos y Jobs entre otros, el SQL
Management Studio utiliza este lenguaje por detrs de la IDE para darle
instrucciones al DBMS (DataBase Management System) de qu realizar.
Temas complementarios:
User Grants
Jobs
Schemas
Agenda
Copyright 2011 Accenture All Rights Reserved.
Introduccin a sentencias SELECT
Uso de JOINS, ORDER BY, GROUP BY y funciones de
agregacin
Introduccin a DDL
Tablas, Stored Procedures, Views y Functions
Introduccin a DML
INSERT, UPDATE, DELETE
Control de transacciones
Transact SQL
Estructuras de control
Introduccin a DDL
> Tablas
Copyright 2011 Accenture All Rights Reserved.
Qu tipos de tablas existen y en qu se diferencian?
Tablas fsicas de usuarios
Tablas fsicas del DBMS
Tablas fsicas temporales locales
Tablas fsicas temporales globales
Tablas de variable (table datatype)
CREATE TABLE <owner>.NombreTabla (
{NombreColumna1 datatype {NULL | NOT NULL} [PRIMARY KEY] [IDENTITY(<seed>, <increment>)]},
{NombreColumna2 datatype {NULL | NOT NULL} [PRIMARY KEY] [IDENTITY(<seed>, <increment>)]},

)
Sintaxis y semntica
Introduccin a DDL
> Tablas
Copyright 2011 Accenture All Rights Reserved.
Sintaxis y semntica (ejemplos)
CREATE TABLE dbo.Paises (
PaisID int NOT NULL PRIMARY KEY IDENTITY(1, 1),
Descripcion varchar(250) NOT NULL)

CREATE TABLE dbo.#Paises (
PaisID int NOT NULL PRIMARY KEY IDENTITY(1, 1),
Descripcion varchar(250) NOT NULL)

CREATE TABLE dbo.##Paises (
PaisID int NOT NULL PRIMARY KEY IDENTITY(1, 1),
Descripcion varchar(250) NOT NULL)

DECLARE @Paises table(PaisID int NOT NULL PRIMARY KEY IDENTITY(1, 1),
Descripcion varchar(250) NOT NULL)
Cmo se crea una tabla?
Tema complementario:
SQL Constraints
Por convencin del DBMS, ninguna tabla debe comenzar su nombre con
el prefijo sys.
Introduccin a DDL
> Tablas > Modificando su estructura
Copyright 2011 Accenture All Rights Reserved.
Sintaxis y semntica
ALTER TABLE dbo.Paises ADD [NombreColumna] datatype {NULL | NOT NULL}
Cmo se agrega una columna?
Sintaxis y semntica
ALTER TABLE dbo.Paises DROP COLUMN [NombreColumna]
Cmo se elimina una columna?
Sintaxis y semntica
ALTER TABLE dbo.Paises ALTER COLUMN [NombreColumna] datatype {NULL | NOT NULL}
Cmo se cambia el datatype de una columna?
Introduccin a DDL
> Stored Procedures
Copyright 2011 Accenture All Rights Reserved.
Los Stored Procedures son rutinas almacenadas en el DBMS,
admiten parmetros de entrada, de entrada-salida y de salida. Su
comportamiento es como el de cualquier rutina de procedimiento
slo que pueden retornar datos no slo en sus parmetros sino
tambin en forma de Record Set.
CREATE PROCEDURE <owner>.NombreProcedure (
{Parametro1 datatype {NULL | NOT NULL} [= DEFAULT VALUE]},
{Parametro2 datatype {NULL | NOT NULL} [= DEFAULT VALUE]},

)

AS

SELECT Col1, Col2 FROM dbo.Parametros WHERE Parametro2 = @Parametro2
Sintaxis y semntica
Por convencin del DBMS, ningn SP debe comenzar su nombre con el
prefijo sp_, ya que de esta manera l mismo nomencla sus propios SPs
y esto se traduce en mayores costos de localizacin de los SPs de
usuario.
Tema complementario:
Stored Procedures best
practices.
Introduccin a DDL
> Stored Procedures > Parmetros
Copyright 2011 Accenture All Rights Reserved.
Sintaxis y semntica
CREATE PROCEDURE dbo.uSPi_CrearUsuario (
@nombre varchar(50),
@apellido varchar(50),
@username varchar(50),
@observaciones varchar(250),
@usuarioid int OUTPUT)

AS

INSERT INTO dbo.Usuarios (nombre, apellido, usuario, observaciones)
VALUES (@nombre, @apellido, @username, @observaciones)

SET @usuarioid = scope_identity()
Cmo se especifica el sentido de un parmetro?
Por defecto, todos los parmetros son slo de entrada; en caso de necesitar un
parmetro de entrada-salida o de salida, debe especificarse como se muestra a
continuacin.
Tema complementario:
@@identity
Introduccin a DDL
> Stored Procedures > Parmetros
Copyright 2011 Accenture All Rights Reserved.
Sintaxis y semntica
CREATE PROCEDURE dbo.uSPi_CrearUsuario (
@nombre varchar(50),
@apellido varchar(50),
@username varchar(50),
@observaciones varchar(250) = NULL,
@activo bit = 1,
@usuarioid int OUTPUT)

AS

INSERT INTO dbo.Usuarios (nombre, apellido, usuario, activo, observaciones)
VALUES (@nombre, @apellido, @username, @activo, @observaciones)

SET @usuarioid = scope_identity()
Cmo se especifica el valor por defecto de un parmetro si es
nulo?
Introduccin a DDL
> Stored Procedures
Copyright 2011 Accenture All Rights Reserved.
Sintaxis y semntica
1) Ejecutar: sp_helptext uSPi_CrearUsuario
2) Copiar todo el resultado que devuelva el paso 1 y pegarlo en la parte superior de la ventana
3) Modificar el CREATE y poner en su lugar un ALTER como se muestra a continuacin:
ALTER PROCEDURE dbo.uSPi_CrearUsuario (
@nombre varchar(50),
@apellido varchar(50),
@username varchar(50)
4) Ejecutar
Cmo se edita un Stored Procedure?
Sintaxis y semntica
DROP PROCEDURE uSPi_CrearUsuario
Cmo se elimina un Stored Procedure?
Sintaxis y semntica
DECLARE @id int
EXEC uSPi_CrearUsuario juan, perez, jperez, NULL, 1, @usuarioid = @id OUTPUT
Cmo se ejecuta un Stored Procedure?
Introduccin a DDL
> Views
Copyright 2011 Accenture All Rights Reserved.
Las Vistas son tablas virtuales almacenadas en el DBMS,
compuestas de una o ms columnas. Podramos decir entonces
que son queries almacenadas como objetos.
CREATE VIEW <owner>.NombreVista

AS

SELECT Col1, Col2 FROM dbo.Parametros
Sintaxis y semntica
Introduccin a DDL
> Views
Copyright 2011 Accenture All Rights Reserved.
Sintaxis y semntica
1) Ejecutar: sp_helptext ListaUsuarios
2) Copiar todo el resultado que devuelva el paso 1 y pegarlo en la parte superior de la ventana
3) Modificar el CREATE y poner en su lugar un ALTER como se muestra a continuacin:
ALTER VIEW dbo.ListaUsuarios

4) Ejecutar
Cmo se edita una View?
Sintaxis y semntica
DROP VIEW ListaUsuarios
Cmo se elimina una View?
Sintaxis y semntica
SELECT Col1, Col2 FROM dbo.ListaUsuarios
Cmo se consulta una View?
Introduccin a DDL
> User defined Functions
Copyright 2011 Accenture All Rights Reserved.
Las User defined Functions son funciones creadas por el usuario y
almacenadas en el DBMS, como toda funcin aceptan parmetros
y retornan 1 valor nicamente (no record sets).
CREATE FUNCTION <owner>.NombreFuncion (
{Parametro1 datatype {NULL | NOT NULL} [= DEFAULT VALUE]},

) RETURNS [datatype]

AS

DECLARE @Resultado int
SELECT @Resultado = Valor FROM dbo.Parametros WHERE NombreParam = @Parametro1

RETURN @Resultado
Sintaxis y semntica
Tema complementario:
SQL functions
Introduccin a DDL
> User defined Functions
Copyright 2011 Accenture All Rights Reserved.
Sintaxis y semntica
1) Ejecutar: sp_helptext Fx_traerParametro
2) Copiar todo el resultado que devuelva el paso 1 y pegarlo en la parte superior de la ventana
3) Modificar el CREATE y poner en su lugar un ALTER como se muestra a continuacin:
ALTER FUNCTION dbo.Fx_traerParametro

4) Ejecutar
Cmo se edita una User defined Functions?
Sintaxis y semntica
DROP FUNCTION Fx_traerParametro
Cmo se elimina una User defined Function?
Sintaxis y semntica
dbo.Fx_traerParametro(HomeURL)
Cmo se ejecuta una User defined Function?
Agenda
Copyright 2011 Accenture All Rights Reserved.
Introduccin a sentencias SELECT
Uso de JOINS, ORDER BY, GROUP BY y funciones de
agregacin
Introduccin a DDL
Tablas, Stored Procedures, Views y Functions
Introduccin a DML
INSERT, UPDATE, DELETE
Control de transacciones
Transact SQL
Estructuras de control
Introduccin a DML
Copyright 2011 Accenture All Rights Reserved.
La sigla DML significa Data Manipulation Language, y es el
lenguaje que utiliza el DBMS para realizar las siguientes
operaciones:
Agregar datos a una tabla (INSERT)
Actualizar datos de una tabla (UPDATE)
Eliminar datos de una tabla (DELETE)
Agenda
Copyright 2011 Accenture All Rights Reserved.
Introduccin a sentencias SELECT
Uso de JOINS, ORDER BY, GROUP BY y funciones de
agregacin
Introduccin a DDL
Tablas, Stored Procedures, Views y Functions
Introduccin a DML
INSERT, UPDATE, DELETE
Control de transacciones
Transact SQL
Estructuras de control
Introduccin a DML
> Sentencia INSERT
Copyright 2011 Accenture All Rights Reserved.
Sintaxis y semntica (ejemplo)
Sea la siguiente tabla:
dbo.Usuarios (ID int PK IDENTITY, Nombre varchar(50), Apellido varchar(50), UserName
varchar(50), Password varchar(50), Activo bit, FechaAlta datetime)

INSERT INTO dbo.Usuarios (Nombre, Apellido, UserName, Password, Activo, FechaAlta)
VALUES(Juan, Perez, jperez, jp1984, 1, getdate())
Cmo se insertan rows en una tabla?
Tema complementario:
INSERT from SELECT
(SELECT INTO)
Si no se especifica la lista de columnas en las cuales se deben insertar los
datos el DBMS interpreta que se utilizarn todas ya que no distingue
columnas que admitan valores NULL. Siempre es recomendable definir
todas las columnas afectadas y siempre respetar el orden tal cual fueron
especificadas.
Introduccin a DML
> Sentencia UPDATE
Copyright 2011 Accenture All Rights Reserved.
Sintaxis y semntica (ejemplo)
Sea la siguiente tabla:
dbo.Usuarios (ID int PK IDENTITY, Nombre varchar(50), Apellido varchar(50), UserName
varchar(50), Password varchar(50), Activo bit, FechaAlta datetime)

UPDATE dbo.Usuarios
SET Password = xxxxx,
Activo = 0
WHERE ID = 5
Cmo se modifican rows en una tabla?
Introduccin a DML
> Sentencia DELETE
Copyright 2011 Accenture All Rights Reserved.
Sintaxis y semntica (ejemplo)
Sea la siguiente tabla:
dbo.Usuarios (ID int PK IDENTITY, Nombre varchar(50), Apellido varchar(50), UserName
varchar(50), Password varchar(50), Activo bit, FechaAlta datetime)

DELETE dbo.Usuarios WHERE ID = 5
Cmo se eliminan rows en una tabla?
Si no se especifica clusula WHERE, el DELETE proceder a vaciar por
completo la tabla en cuestin.
Agenda
Copyright 2011 Accenture All Rights Reserved.
Introduccin a sentencias SELECT
Uso de JOINS, ORDER BY, GROUP BY y funciones de
agregacin
Introduccin a DDL
Tablas, Stored Procedures, Views y Functions
Introduccin a DML
INSERT, UPDATE, DELETE
Control de transacciones
Transact SQL
Estructuras de control
Introduccin a DML
> Control de transacciones
Copyright 2011 Accenture All Rights Reserved.
Sintaxis y semntica (ejemplo)
BEGIN TRAN

DELETE dbo.Usuarios WHERE ID = 5

IF @@ROWCOUNT > 1
ROLLBACK TRAN
ELSE
COMMIT TRAN
Cmo se implementan?
Toda transaccin debe responder a 4 propiedades fundamentales
denominadas ACID: Atomic, Consistent, Isolated, Durable. Atmica porque se
realiza una sola a la vez, Consistente porque una vez realizada la transaccin la
DB permanece estable internamente, Aislada porque sin importar que 2 o ms
transacciones se ejecuten simultneamente, una de las 2 deber esperar a que
una finalice para comenzar y por ltimo Durable porque debe asegurar que los
datos sern persistidos una vez finalizada.
Por qu controlamos transacciones y qu son?
Toda transaccin comienza con BEGIN TRAN. Luego de
establecida la transaccin la server variable
@@ROWCOUNT contiene la cantidad de rows
afectados por la transaccin realizada y dependiendo
de dicho nmero evaluamos con COMMIT TRAN el
confirmar la transaccin o con ROLLBACK TRAN el
cancelarla.
Introduccin a DML
> Control de transacciones
Copyright 2011 Accenture All Rights Reserved.
Sintaxis y semntica (ejemplo)
BEGIN TRAN

DELETE dbo.Usuarios WHERE ID = 5

IF @@ERROR <> 0
ROLLBACK TRAN
ELSE
COMMIT TRAN
Si durante una transaccin se da un error, puedo cancelar
tambin la misma?
En este caso, la server variable @@ERROR contiene el
cdigo de error de SQL y dependiendo de dicho
nmero evaluamos con COMMIT TRAN el confirmar la
transaccin o con ROLLBACK TRAN el cancelarla.
Tema complementario:
SQL Errors
TRY-CATCH
Si no se cierra la transaccin el objeto quedar en LOCK hasta que se
libere el recurso. Cuando varios objetos en ejecucin dependen del
objeto anterior bloqueado se producen otros LOCKS que conllevan a un
DEAD LOCK, provocando el bloqueo total de la DB hasta tanto alguien
con DBO grants efecte un kill de todos los procesos en conflicto.
Agenda
Copyright 2011 Accenture All Rights Reserved.
Introduccin a sentencias SELECT
Uso de JOINS, ORDER BY, GROUP BY y funciones de
agregacin
Introduccin a DDL
Tablas, Stored Procedures, Views y Functions
Introduccin a DML
INSERT, UPDATE, DELETE
Control de transacciones
Transact SQL
Estructuras de control
Transact SQL
Copyright 2011 Accenture All Rights Reserved.
Transact SQL es el lenguaje de bases de datos de Microsoft. Si bien basa sus
lenguajes DDL y DML en ANSI standard SQL, tiene un lenguaje de
programacin propio que incluye declaracin y uso de variables, funciones
matemticas, de strings y fechas y algunas estructuras de control que veremos
a continuacin.
Agenda
Copyright 2011 Accenture All Rights Reserved.
Introduccin a sentencias SELECT
Uso de JOINS, ORDER BY, GROUP BY y funciones de
agregacin
Introduccin a DDL
Tablas, Stored Procedures, Views y Functions
Introduccin a DML
INSERT, UPDATE, DELETE
Control de transacciones
Transact SQL
Estructuras de control
Transact SQL
> Estructuras de Control
Copyright 2011 Accenture All Rights Reserved.
Sintaxis y semntica (ejemplo)
DECLARE @num int
SET @num = 2
IF @num = 0 BEGIN
print vale 0
END
ELSE BEGIN
print distinto de 0
END
Estructura IF - THEN
Sintaxis y semntica (ejemplo)
DECLARE @i int
SET @i = 0
WHILE @i < 10 BEGIN
print vale: + cast(@i AS varchar(2))
SET @i = @i + 1
END
Estructura WHILE
Esta estructura tambin admite que si el cdigo dentro
de s es de una sola lnea, se pueda omitir el BEGIN y
el END.
Links de inters
Copyright 2011 Accenture All Rights Reserved.


http://www.w3schools.com


http://msdn.microsoft.com/es-es/sqlserver/default.aspx


http://www.sqlservercentral.com/
Copyright 2011 Accenture All Rights Reserved.
Preguntas?
Copyright 2011 Accenture All Rights Reserved.
Muchas gracias!

Anda mungkin juga menyukai