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)
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)
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.sqlservercentral.com/ Copyright 2011 Accenture All Rights Reserved. Preguntas? Copyright 2011 Accenture All Rights Reserved. Muchas gracias!