Está en la página 1de 28

Mdulo 2: Introduccin a T-SQL Consulta

Contenido:
Leccin 1:
Leccin 2:
Leccin 3:
Leccin 4:
Laboratorio:

Mdulo de Informacin general


Presentacin de T-SQL
Entender Juegos
La comprensin de la lgica de predicados
Comprender el orden lgico de las operaciones en sentencias SE
Introduccin a T-SQL Consulta
Revisin del mdulo y comida para llevar

Mdulo de Informacin general


Transact-SQL, o T-SQL, es el idioma en el que escribir consultas de
Microsoft SQL Server 2014. En este mdulo, usted aprender que los
elementos hasMany T-SQL en comn con otros lenguajes de
programacin, tales como comandos, variables, funciones y
operadores. Usted tambin aprender que T-SQLcontains algunos
elementos nicos que pueden requerir un ajuste si su fondo incluye
experiencia con lenguas de procedimiento. Para hacer themost de su
esfuerzo en escribir consultas T-SQL, usted tambin aprender el
proceso por el que SQL Server evala sus consultas. Comprender el
logicalorder de las operaciones de los comandos SELECT ser vital
para aprender a escribir consultas eficaces.

Objetivos
Despus de completar este mdulo, el alumno ser capaz de
describir:
Los elementos de T-SQL y su papel en escribir consultas.
El uso de juegos en SQL Server.
El uso de la lgica de predicados en SQL Server.
El orden lgico de las operaciones en las sentencias SELECT.

Leccin 1: Introduccin a T-SQL


En esta leccin, aprender el papel de T-SQL por escrito instrucciones
SELECT. Usted aprender acerca de muchos de los elementos y
whichones lenguaje T-SQL ser til para escribir consultas.

Objetivos de la leccin
Despus de completar esta leccin, el alumno ser capaz de:
Describir la implementacin de Microsoft del lenguaje SQL estndar.
Clasificar sentencias SQL en sus dialectos.

Identificar los elementos de T-SQL, incluyendo predicados, operadores, expresione

Acerca de T-SQL
T-SQL es la implementacin de Microsoft del estndar de la industria
Structured Query Language. Originalmente desarrollado para apoyar
el nuevo modelo de datos relacional en International Business
Machines (IBM) a principios de 1970, SQL ha sido ampliamente
adoptado en la industria. SQL se convirti en un estndar del Instituto
Nacional theAmerican Normas (ANSI) y la Organizacin Internacional
de Normalizacin (ISO) en la dcada de 1980.

El estndar ANSI ha pasado por varias revisiones, incluyendo SQL-89


y SQL-92, cuyas especificaciones son total o parcialmente apoyado
elT-SQL. SQL Server 2014 tambin implementa caractersticas de
normas posteriores, como ANSI SQL-2008. Microsoft, como muchos
vendedores, tiene tambin extendedthe lenguaje para incluir
caractersticas y funciones especficas del servidor SQL.
Adems de la implementacin de Microsoft como T-SQL en SQL
Server, Oracle tiene PL / SQL, IBM cuenta con SQL PL, y Sybase
mantiene su propia operacin de T-SQL.
Un concepto importante de entender cuando se trabaja con T-SQL es
que es un lenguaje basado en conjuntos y declarativa, no un
procedimiento. Cuando youwrite una consulta para recuperar datos
de SQL Server, usted describe los datos que desea mostrar, no se lo
digas SQL Server exactamente cmo recuperar it.Instead de
proporcionar una lista de procedimiento de los pasos a seguir, usted
proporciona los atributos de los datos tu buscas.
Por ejemplo, si desea recuperar una lista de clientes que se
encuentran en Portland, un mtodo de procedimiento podra tener
este aspecto:

Mtodo Procesal
Abrir un cursor para consumir filas, uno a la vez.
Obtener el primer registro del cursor.
Examine primera fila.
Si la ciudad es Portland, devuelva la fila.
Mover a la siguiente fila.
Si la ciudad es Portland, devuelva la fila.
Fetch el siguiente registro.
(Repita hasta que se alcance final de la tabla).
Su cdigo de procedimiento no slo debe contener la lgica para
seleccionar los datos que se ajuste a sus necesidades, pero tambin
se debe determinar y ejecutar una trayectoria de buen rendimiento a
travs de l.
Nota: Este curso menciona cursores para fines comparativos, pero no
proporciona formacin sobre la escritura de cdigo con ellos.
Ir a los libros en pantalla (BOL) para las definiciones y las
preocupaciones con respecto al uso de los cursores:
Cursores
http://go.microsoft.com/fwlink/?LinkID=402710
Con un lenguaje declarativo como T-SQL, se le proporcionar los
atributos y valores que describen el conjunto que desea recuperar.
Por ejemplo, consulte el siguiente pseudo-cdigo:
Declarativa Idioma
Mostrar todos los clientes cuyos ciudad es Portland.
Con T-SQL, el motor de base de datos del servidor SQL 2014
determinar la ruta ptima para acceder a los datos y devolver un
conjunto a juego. Su papel es tolearn escribir cdigo T-SQL eficiente y

precisa para que pueda describir adecuadamente el conjunto que


desea recuperar.
Si usted tiene experiencia en otros entornos de programacin, la
adopcin de un nuevo modo de pensar puede presentar un desafo.
Este curso ha sido destinadaa ayuda a salvar la brecha entre el
procedimiento y en base configuracin declarativa de T-SQL.
Nota: Los conjuntos se discutirn ms adelante en este mdulo.

Categoras de instrucciones T-SQL


Instrucciones T-SQL se pueden organizar en varias categoras:

Data Manipulation Language, o DML, es el conjunto de instrucciones T-SQL que se centra en la c

modificacin de datos. Esto incluye SELECT, enfoque theprimary de este curso, as como las declara

de modificacin como INSERT, UPDATE y DELETE. Usted aprender acerca de SELECT statementsthr

Data Definition Language, o DDL, es el conjunto de instrucciones T-SQL que maneja el ciclo de de

los objetos de base de datos, como tablas, vistas y procedimientos. Esto incluye declaraciones como
CREATE, ALTER y DROP.

Lenguaje de control de datos, o DCL, es el conjunto de instrucciones T-SQL que se utilizan para a

los permisos de seguridad para los usuarios y objetos. Includesstatements DCL como GRANT, REVOK

Nota: Los comandos DCL estn ms all del alcance de este curso.
Para obtener ms informacin acerca de SQL Server 2014 de
seguridad, incluyendo 20462C DCL, seeMicrosoft Curso Oficial: La
administracin de una base de datos Microsoft SQL Server.
Informacin adicional sobre DML, DDL, y los comandos DCL se puede
encontrar en los libros en lnea en:
Transact-SQL (Motor de base de datos)
http://go.microsoft.com/fwlink/?LinkID=402711

T-SQL Elementos del lenguaje


Como muchos lenguajes de programacin, T-SQL contiene elementos
que va a utilizar en las consultas. Que va a utilizar predicados para
filtrar filas, comparaciones operadores toperform, funciones y
expresiones para manipular datos o recuperar la informacin del
sistema, y comentarios para documentar el cdigo. Ifyou tiene que ir

ms all de escribir sentencias SELECT para crear procedimientos


almacenados, disparadores y otros objetos, se pueden utilizar
elementos tales declaraciones ascontrol-de-flujo, las variables para
almacenar temporalmente los valores, y separadores de lotes. Los
siguientes temas en esta leccin se presentarles tomany de estos
elementos.

Nota: El propsito de esta leccin es introducir muchos elementos


del lenguaje T-SQL, que se presenta aqu en un alto conceptuallevel.
Mdulos posteriores en este curso proporcionar explicaciones ms
detalladas.

T-SQL Elementos Idioma: predicados y


operadores
El lenguaje T-SQL proporciona elementos para especificar y evaluar
expresiones lgicas. En declaraciones SELECT, puede utilizar
expresiones lgicas filtros todefine para WHERE y HAVING clusulas.

Va a escribir estas expresiones utilizando predicados y operadores.


Los predicados con el apoyo de T-SQL se incluyen las siguientes:

IN, usado para determinar si un valor coincide con cualquier valor en una lista o su
ENTRE, usada para especificar un rango de valores.
LIKE, utilizado para que coincida con caracteres en contra de un patrn.
Los operadores incluyen varias categoras comunes:

Comparacin de las pruebas de igualdad y desigualdad:!!!!!!. =, <,>,> =, <=, =,>

(Tenga en cuenta que>, <y = no son estndar ISO Es mejor prctica para usestand
cuando existen).
Lgico, para probar la validez de una condicin: AND, OR, NOT
Aritmtica, para realizar operaciones matemticas: +, -, *, /,% (mdulo)
Concatenacin, para la combinacin de cadenas de caracteres: +
Asignacin, para el establecimiento de un valor: =

Al igual que con otros ambientes matemticos, los operadores estn


sujetos a las normas que rigen la precedencia. La siguiente tabla
describe el orden en que se evalan los operadores T-SQL:
Orden de
Evaluacin

Operadores

() Los parntesis

*, /,% (Multiplicar, Dividir, Modulo)

+, - (Aadir / Positiva / Concatenate, Restar / Negativo)

=, <,>,> =, <=,! =,>, <(Comparacin)

NO

ENTRE, IN, LIKE, OR

= (Asignacin)

Informacin sobre otras categoras de operadores, incluyendo bit a


bit, unario, y la asignacin de su alcance, se puede encontrar en los
libros en lnea en:
Operadores (Transact-SQL)
http://go.microsoft.com/fwlink/?LinkID=402714

T-SQL Elementos del lenguaje: Funciones


SQL Server 2014 ofrece una amplia variedad de funciones
disponibles para sus consultas T-SQL. Van desde funciones escalares
como SYSDATETIME, que devuelven un solo valor consecuencia, a los
dems que operan sobre y devuelven conjuntos enteros, como las
funciones de ventanas que usted aprender ms adelante eneste
supuesto.

Al igual que con los operadores, funciones de SQL Server se pueden


organizar en categoras. Estas son algunas de las categoras comunes
de escalar (valor individual) functionsavailable a usted para escribir
consultas:
Funciones de cadena
o SUBSTRING, IZQUIERDA, DERECHA, LEN, DATALENGTH

o REEMPLAZAR, replique
o Superior, inferior, RTRIM, LTRIM
Funciones de fecha y hora
o GETDATE, SYSDATETIME, GETUTCDATE
o DATEADD, DATEDIFF
o AO MES DIA
Las funciones de agregacin
o SUM, MIN, MAX, AVG
o CONTAR, COUNTBIG
Funciones matemticas
o RAND, REDONDO, asistida, ABS

Techo, suelo
Nota: El propsito de esta leccin es introducir muchos elementos del lenguaje
o Mdulos posteriores en este curso proporcionar explicaciones ms detalladas.
Informacin adicional sobre estas funciones, con el cdigo de
ejemplo, se puede encontrar en los libros en lnea en:
Funciones incorporadas (Transact-SQL)
http://go.microsoft.com/fwlink/?LinkID=402712

T-SQL Elementos del lenguaje: Variables


Como muchos lenguajes de programacin, T-SQL proporciona un
medio de almacenamiento temporal de un valor de un tipo de datos
especfico. Sin embargo, a diferencia de los entornos
otherprogramming, todas las variables creadas por el usuario son
locales al lote de T-SQL que los cre, y son visibles slo a ese lote.
Hay ARENO variables globales o pblicos disponibles para los usuarios
de SQL Server.

Para crear una variable local en T-SQL, debe proporcionar un nombre,


tipo de datos, y el valor inicial. El nombre debe comenzar con un solo
smbolo @ (arroba), y thedata tipo debe ser proporcionado por el
sistema o y se almacena en la base de datos de su cdigo se
ejecutar contra definida por el usuario.

Nota: es posible encontrar referencias en la literatura de SQL Server,


sitios web, etc., a los llamados "variables del sistema", cuyo nombre
es un doble@@, como@@ERROR. Es ms exacto referirse a estos
como las funciones del sistema, ya que los usuarios no pueden
asignar un valor a los mismos. Este curso variables de usuario
willdifferentiate prefijados con un solo @ de las funciones del sistema
con el prefijo@@.
Si la variable no se ha inicializado en el instruccin DECLARE, que se
crear con un valor de NULL y que, posteriormente, puede asignar un
valor a la declaracin Theset. SQL Server 2008 introduce la
capacidad de nombrar e inicializar una variable en el mismo
comunicado.
El ejemplo siguiente crea una variable entera local llamado MiVar y le
asigna un valor inicial de 30:
Variable entera
DECLARARMyVar int = 30;
El ejemplo siguiente crea una variable de fecha local llamado
MiFecha y por separado le asigna un valor inicial de 15 de febrero
2012:
Fecha variable
DECLARAR la fechaMyDate;
SETMyDate = '20120215';
Usted aprender ms sobre los tipos de datos, incluyendo las fechas,
y acerca de las variables T-SQL, ms adelante en este curso.
Si se necesita almacenamiento persistente o la visibilidad global para
un valor, considerar la creacin de una tabla en una base de datos
para tal fin. SQL Server proporciona bothsession-temporal y el
almacenamiento permanente en bases de datos. Para ms
informacin sobre las tablas y objetos temporales, vaya a:
Tipos de tablas especiales
http://go.microsoft.com/fwlink/?LinkID=402715

T-SQL Elementos del lenguaje: Expresiones

T-SQL proporciona el uso de combinaciones de identificadores,


smbolos y operadores que son evaluados por SQL Server para
devolver un nico resultado.

Estas combinaciones se conocen como expresiones, proporcionando


una herramienta til y poderosa para sus consultas. En declaraciones
SELECT, es posible que useexpressions:
En la clusula SELECT para operar en y / o manipular columnas.

Como expresiones CASE para reemplazar los valores que coincidan con una expre
En la clusula WHERE para construir predicados para las filas de filtrado.

Como expresiones de tabla para crear conjuntos temporales utilizados para su pos
Nota: El propsito de esta leccin es introducir muchos elementos del lenguaje T Mdulos posteriores en este curso proporcionar explicaciones ms detalladas.
Expresiones pueden basarse en una funcin escalar (valor individual),
en un valor constante, o en variables. Mltiples expresiones se
pueden unir usingoperators si tienen el mismo tipo de datos o si el
tipo de datos se pueden convertir de una precedencia inferior a una
prioridad ms alta (por ejemplo, intto dinero).
El siguiente ejemplo de una expresin opera sobre una columna para
aadir un nmero entero a los resultados de la funcin AO en una
columna de fecha y hora:
Expresin
AO SELECT (FechaPedido) AS currentyear, AO (FechaPedido) + 1
AS nextYear
DESDE Sales.Orders;
Nota: El ejemplo anterior utiliza tcnicas de T-SQL, como los alias de
columna y funciones de fecha, que se tratarn ms adelante en este
curso.

T-SQL Elementos del lenguaje: Control de flujo,


errores y Transacciones
Mientras que T-SQL es ante todo un lenguaje de recuperacin de
datos y no un lenguaje de procedimientos, que es compatible con un

conjunto limitado de declaraciones que proporcionan somecontrol de


flujo durante la ejecucin.

Algunas de las declaraciones de uso comn de control de flujo


incluyen:

SI. . . ELSE, para proporcionar el control de ramificacin


sobre la base de una prueba lgica.

MIENTRAS, para repetir una declaracin o bloque de instrucciones mientras una con

COMENZAR . . . FIN, para definir la extensin de un


bloque de instrucciones T-SQL.

PROBAR . . . CATCH, para la definicin de la estructura de gestin de excepciones

(manejo de errores).

BEGIN TRANSACTION, para marcar un bloque de instrucciones como parte de una tr

explcita. Termin por COMMIT TRANSACTION o RollbackTransaction.


Nota: Los operadores de control-de-flujo no se utilizan en consultas independiente
principal es como un escritor de informe, por ejemplo, es unlikelythat tendr que ut
Sin embargo, si sus responsabilidades incluyen la creacin de objetos, tales como pr
almacenados y disparadores, que willfind estos elementos tiles.

T-SQL Elementos del lenguaje: Comentarios


T-SQL proporciona dos mecanismos para documentar cdigo o
instrucciones al motor de base de ignorar ciertas declaraciones. El
mtodo que usewill normalmente depende de la cantidad de lneas de
cdigo que desea ignorado:

Para las lneas individuales, o muy pocas lneas de cdigo, utilice el - (doble guin)
comentario. Cualquier texto siguiente thedashes ser ignorado por SQL Server.

Para bloques de cdigo ms largos, encierre el texto entre / * y * / caracteres. Cua


Server.
El siguiente ejemplo utiliza el mtodo - (doble guin) para marcar los
comentarios:

- Toda esta lnea de texto se ignorar.


DECLARARMyVar int = 30; --only se tendr en cuenta el siguiente
texto los guiones.
El siguiente ejemplo utiliza el / * comentario de bloque * / mtodo
para marcar comentarios:
*/
Este es el texto del comentario que se hizo caso omiso.
*/
Muchas herramientas de edicin de consulta, como SSMS o SQLCMD,
tendrn un cdigo de colores comentado texto en un color diferente
al del cdigo T-SQL circundante. InSSMS, utilizar las herramientas,
cuadro de dilogo Opciones para personalizar los colores y fuentes en
el editor de secuencia de comandos T-SQL.

T-SQL Elementos del lenguaje: Separadores de


lotes
Herramientas de cliente de SQL Server, como SSMS, enviar
comandos al motor de base de datos en conjuntos llamados lotes. Si
est ejecutando manualmente el cdigo, tal asin un editor de
consultas, puede elegir si desea enviar todo el texto en una secuencia
de comandos como un lote. Tambin puede optar por insertar
separadores entre certainsections de cdigo.

La especificacin de un separador de lotes es manejado por su


herramienta de cliente. Por ejemplo, el GO palabra clave es el
separador de lotes por defecto en SSMS. Usted canchange esto para
la consulta actual en Query | Opciones de consulta o globalmente en
Herramientas | Opciones | Ejecucin de la consulta.
Para la mayora de los propsitos de consulta simples, no se utilizan
separadores de lotes, ya que estar presentando una sola consulta a
la vez. Sin embargo, cuando se necesita tocreate y manipular
objetos, puede que tenga que separar declaraciones en lotes

distintos. Por ejemplo, una sentencia CREATE VIEW no puede


beincluded en el mismo lote que otras declaraciones.
El siguiente es un ejemplo de una sentencia CREATE TABLE y CREATE
VIEW en el mismo lote:
Cdigo que requiere varios lotes
CREATE TABLE t1 (col1 int);
CREATE VIEW v1 como SELECT * FROM t1;
El ejemplo anterior devuelve el siguiente error:
Msj 111, nivel 15, estado 1, lnea 2
"CREATE VIEW" debe ser la primera instruccin de un lote de
consultas.
Tenga en cuenta que las variables declaradas por el usuario se
consideran local para el lote en el que se declaran. Si una variable se
declara en un lote y referencedin otra, el segundo lote sera un
fracaso.
Por ejemplo, las siguientes afirmaciones envan juntos como un solo
trabajo por lotes correctamente:
Variable Local
DECLARARcust int = 5;

Custid SELECT, companyname, ContactName


DESDE Sales.Customers
DONDE custid =custid;
Sin embargo, si se insert un separador de lotes entre la declaracin
de variables y la consulta en el que se utiliza la variable, se producira
un error.
El siguiente ejemplo separa la declaracin de variables de su uso en
una consulta:

Variable Separados por lotes


DECLARARcust int = 5;
GO
Custid SELECT, companyname, ContactName
DESDE Sales.Customers
DONDE custid =custid;
El ejemplo anterior devuelve el siguiente error:
Msj 137, nivel 15, estado 2, lnea 3
Debe declarar el escalar "custid" variable.
Nota: Las variables se tratarn con mayor profundidad ms adelante
en este curso.

Demostracin: T-SQL Elementos del lenguaje


En esta demostracin, ver cmo:
Utilizar los elementos del lenguaje T-SQL.
Tenga en cuenta que algunos elementos sern cubiertos con mayor
profundidad en los mdulos posteriores.

Pasos de demostracin
Utilice T-SQL Elementos del lenguaje

Asegrese de que las mquinas virtuales del 20461C-MIA-CC y 20461C-MIA-SQL


son a la vez en marcha, y luego conectarse a 20461C-MIA-SQL como
AdventureWorks \ Estudiante con la contrasea Pa $$ w0rd.
2.

Ejecutar D: \ Demofiles \ Mod02 \ Setup.cmd como administrador.

Inicie SQL Server Management Studio y conctese a la instancia de motor de ba


3.

MIA-SQL.

4.

Abra la solucin Demo.ssmssln en la carpeta D: \ Demofiles \ Mod02 \ demo.

5.

En el men Ver, haga clic en el Explorador de soluciones.

6.

Abrir el 11 - archivo de script A.sql demostracin.

7.

Siga las instrucciones contenidas en los comentarios del archivo de comandos.

8.

Mantenga abierta para la prxima manifestacin SQL Server Management Studi

Leccin 2: Conjuntos de Comprensin


El propsito de esta leccin es introducir los conceptos de la teora de
conjuntos, uno de los fundamentos matemticos de bases de datos
relacionales y tohelp que aplicarlo a la forma de pensar acerca de la
consulta de SQL Server.

Objetivos de la leccin
Despus de completar esta leccin, el alumno ser capaz de:
Describir la funcin de los conjuntos en una base de datos relacional.
Comprender el impacto de lances sobre sus consultas T-SQL.

Describir los atributos de los conjuntos que pueden requerir un tratamiento especi

Teora de conjuntos y SQL Server


La teora de conjuntos es uno de los fundamentos matemticos del
modelo relacional y as es fundamental para trabajar con SQL Server
2014.

Mientras que usted puede ser capaz de hacer la escritura consultas


de progreso en T-SQL sin una apreciacin de conjuntos, es posible que
con el tiempo tiene dificultad expressingsome de ellos en una sola
declaracin de buen rendimiento.
Esta leccin ser el escenario para que usted comience "pensar en
sets" y comprender su naturaleza. A su vez, esto har que sea ms
fcil para usted para:
Aproveche declaraciones basadas configuracin en T-SQL.
Entender por qu usted todava tiene que resolver su salida de la consulta.

Entender por qu un enfoque declarativo basado en la configuracin, en lugar de u


procedimiento, funciona mejor con SQL Server 2014.
Para nuestros propsitos, sin ahondar en las matemticas que
apoyan la teora de conjuntos, podemos definir un conjunto como
"una coleccin de clara, objectsconsidered distinta en su conjunto."
En trminos aplicados a bases de datos SQL Server, podemos pensar
en un conjunto como una sola unidad (como una mesa) que contiene
cero o moremembers del mismo tipo. Por ejemplo, una tabla de

clientes representa un conjunto, especialmente el conjunto de todos


los clientes. Tambin ver que el resultadosde una sentencia SELECT
tambin forman un conjunto, lo que tendr consecuencias
importantes al aprender acerca de subconsultas y expresiones de
tabla, por ejemplo.
A medida que aprenda ms sobre ciertas instrucciones de consulta TSQL, ser importante pensar de todo el conjunto, en lugar de
miembros individuales, en todo times.This ser mejor que dotar a
escribir cdigo basado configuracin, en lugar de pensar en una fila
un momento. Trabajar con conjuntos requiere pensar en trminos
ofoperations que ocurren "de una vez" en lugar de a uno por vez.
Esto puede requerir un ajuste para usted, dependiendo de sus
antecedentes.
Despus de "coleccin", el prximo perodo crtico en nuestra
definicin es "distinta", o nico. Todos los miembros de un conjunto
deben ser nicos. En SQL Server, singularidad implementado
istypically utilizando las teclas, como una columna de clave principal.
Sin embargo, una vez que comience a trabajar con subconjuntos de
datos, es importante ser consciente de cmo se puede abordar de
forma nica cada miembro de un conjunto.
Esto nos lleva de nuevo a la consideracin del conjunto como un
"todo". Lenguaje SQL Conocido autor Joe Celko sugiere mentalmente
aadir la frase "setof todo ..." delante de los nombres de objetos de
SQL que representan conjuntos ("conjunto de todos los clientes", por
ejemplo). Esto le ayudar a recordar que areaddressing una coleccin
de elementos cuando se escribe cdigo T-SQL, no slo un elemento a
la vez.
Una consideracin importante es lo que se omite de la teora de
conjuntos - cualquier requisito relativo a la orden de los elementos de
un conjunto. En resumen, no isno orden predefinido en un set. Los
elementos pueden ser abordados (y recuperar) en cualquier orden.
Aplicado a sus consultas, esto significa que si usted necesita toreturn
resultados en un cierto orden, debe utilizar la clusula ORDER BY en

sus sentencias SELECT. Usted aprender ms sobre ORDER BY


adelante en thiscourse.
Lectura adicional: Ms informacin sobre la teora de conjuntos y su
aplicacin a las consultas de SQL Server se puede encontrar en el
captulo 1 de la Itzik Ben-Gan Dentro de Microsoft SQL Server
2008: T-SQL Consulta (Microsoft Press, 2009) y en el captulo 2 de Itzik
Ben-Gan Microsoft SQL Server 2008: T-SQL Fundamentals (Microsoft
Press, 2008). Para obtener ms informacin sobre el uso de "Conjunto
de todo ..." ver Pensamiento de Joe Celko en Sets (Morgan Kaufman,
2008).

Establecer Teora Aplicada a consultas de SQL


Server
Teniendo en cuenta el fundamento basado en conjuntos de bases de
datos, hay algunas consideraciones y recomendaciones a tener en
cuenta al escribir T-SQLqueries eficientes:

Ley sobre todo el conjunto a la vez. Esto se traduce en la consulta de toda la tabla

en lugar de procesamiento basado en cursor o iterativo.

Utilice procesamiento declarativa, basada en la configuracin. Dile a SQL Server lo

recuperar mediante la descripcin de sus atributos, y no por la navegacin a su pos

Asegrese de que usted se dirige a travs de sus elementos identificadores nicos,

llaves, cuando sea posible. Por ejemplo, escribir clusulas JOIN teclas referencingun

Proporcione a sus propias instrucciones de clasificacin debido a los conjuntos de re

no estn garantizados para ser devueltos en cualquier orden.

Leccin 3: Entender la lgica de


predicados
Junto con la teora de conjuntos, la lgica de predicados es otro
fundamento matemtico para el modelo de base de datos relacional,
y con ella, SQL Server 2014. Unlikethe la teora de conjuntos, es
probable que tenga una buena cantidad de experiencia con la lgica
de predicados, incluso si usted nunca ha utilizado el trmino para

describirla. Este lessonwill introducir la lgica de predicados y


examinar su aplicacin a la consulta de SQL Server.

Objetivos de la leccin
Despus de completar esta leccin, el alumno ser capaz de:
Describir el papel de la lgica de predicados en una base de datos relacional.
Entender el uso de la lgica de predicados en sus consultas T-SQL.

Predicado Lgica y SQL Server


En teora, la lgica de predicados es un marco para expresar pruebas
lgicas que devuelven verdadero o falso. Un predicado es una
propiedad o expresin que es cierto o falso. Usted puede haber odo
esto referido como una expresin booleana.

Tomados por s mismos, los predicados hacen comparaciones y


expresan los resultados como verdadero o falso. Sin embargo, en TSQL, predicados no estn solos. Theyare generalmente incrustado en
un comunicado que hace algo con el resultado verdadero o falso,
como una clusula WHERE para filtrar filas, una expresin CASE para
coincidir con un valor, o incluso una restriccin de campo que rige el
rango de valores aceptables para esa columna en la definicin de una
tabla .
Hay una omisin importante en la definicin formal de un predicadocmo manejar valores desconocidos, o que faltan,. Si una base de
datos est configurado de modo que no se permiten los valores
faltantes o desonocidos (a travs de las limitaciones CONSTRAINTS, o
asignaciones de valores por defecto), entonces tal vez esto no es una
omisin importante. En la mayora de los entornos del mundo real,
sin embargo, tendr que dar cuenta de los valores que faltan o
desconocidas, lo que requiere que usted ample su comprensin de
predicados de dos posibles resultados (verdadero o falso) a tres
verdadera, falsa o desconocida.
El uso de valores NULL como marca para los datos que faltan se
discutir en el siguiente tema, as como ms adelante en este curso.

Lgica de Predicados Aplicada a consultas de


SQL Server
Como usted ha estado aprendiendo, la capacidad de utilizar los
predicados de expresar comparaciones en trminos de la verdadera,
falsa o desconocida es vital para escribir querys efectivos en SQL
Server. Aunque hemos estado discutiendo por separado, predicados
no estn solos, sintcticamente hablando. Usted tpicamente usa
predicados en cualquiera de las siguientes funciones dentro de sus
consultas:

Filtrado de datos (en WHERE y clusulas HAVING).


Proporcionar lgica condicional a las expresiones CASE.
Junto a las tablas (en el filtro ON).
Definicin de subconsultas (EXISTS en pruebas, por ejemplo).
Adems, predicados tienen usos fuera de los comandos SELECT,
como en restricciones CHECK para limitar los valores permitidos en
una columna, y en los elementos de control de flujo, como una
instruccin IF.
En matemticas, slo tenemos que considerar los valores que estn
presentes, por lo que los predicados pueden resultar slo en valores
verdaderos o falsos (conocido en la lgica de predicados como ley del
medio excluido). En las bases de datos, sin embargo, es probable que
tenga para dar cuenta de los valores perdidos, y la interaccin de TSQL predicados con los valores faltantes da como resultado un
desconocido. Asegrese de que ha representado para los tres
posibles resultados-verdaderas, falsas, o desconocidos cuando hizo el
diseo de su lgica de consulta. Usted aprender cmo usar lgica
trivalente en las clusulas WHERE ms adelante en este curso.
Nota: El propsito de esta leccin es introducir muchos elementos
del lenguaje T-SQL, que se presenta aqu en un alto conceptuallevel.
Mdulos posteriores en este curso proporcionar explicaciones ms
detalladas.

Leccin 4: Entender el orden lgico de las


operaciones en sentencias SELECT

T-SQL es inusual como un lenguaje de programacin en un aspecto


clave. El orden en el que se escribe una declaracin no es
necesariamente aquel en el que thedatabase motor evaluar y
procesarla. Motores de base de datos pueden optimizar su ejecucin
de una consulta, siempre y cuando la exactitud del resultado
(asdetermined por el orden lgico) es retenido. Como resultado, a
menos que se aprende el orden lgico de las operaciones, es posible
que ambos obstculos andpractical conceptuales a escribir sus
consultas. Esta leccin introducir los elementos de una sentencia
SELECT, delinear el orden en que los elementos son evaluado, y luego
aplicar este conocimiento para un enfoque prctico para escribir
consultas.

Objetivos de la leccin
Despus de completar esta leccin, el alumno ser capaz de:
Describir los elementos de una sentencia SELECT.
Entender el orden en que las clusulas de una instruccin SELECT se evalan.

Aplicar su comprensin del orden lgico de operaciones para escribir sentencias S

Elementos de una instruccin SELECT


Para lograr nuestro objetivo de entender el orden lgico de
operaciones, tenemos que mirar a una sentencia SELECT en su
conjunto, incluyendo a numberof elementos opcionales. Sin embargo,
esta leccin no ha sido diseado para proporcionar informacin
detallada sobre estos elementos. Cada parte de un SELECT
statementwill ser discutido en los mdulos siguientes.

La comprensin de los detalles de una clusula WHERE, por ejemplo,


no se requiere con el fin de entender su lugar en la secuencia de los
acontecimientos.
Una instruccin SELECT se compone de elementos obligatorios y
opcionales. En sentido estricto, SQL Server slo requiere una clusula
SELECT con el fin toexecute sin error. Una clusula SELECT sin
clusula FROM opera como si estuviera seleccionando de una tabla
imaginaria que contiene uno row.You ver este comportamiento ms

adelante en este curso al probar las variables. Sin embargo, como


una clusula SELECT sin clusula FROM no puede recuperar datos de
una tabla, vamos a tratar independiente clusulas SELECT como un
caso especial que no sea directamente relevante para esta leccin.
Vamos a examinar los elementos, funcin de nivel theirhigh en una
sentencia SELECT, y el orden en el que se evalan por SQL Server.
No todos los elementos estarn presentes en cada consulta SELECT.
Sin embargo, cuando un elemento est presente, siempre ser
evaluada en el mismo orden withrespect a los dems presentes. Por
ejemplo, una clusula WHERE siempre ser evaluado despus de la
clusula FROM y antes de una clusula GROUP BY, existe ifone.
Vamos a pasar a discutir el orden de estas operaciones en el siguiente
tema.
Nota: A los efectos de esta leccin, los elementos opcionales
adicionales tales como DISTINCT, OVER, y TOP se omiten. Sern
introducedand su orden discutido en los mdulos posteriores.

Procesamiento Lgico de Consultas


El orden en el que se escribe una sentencia SELECT no es aquel en el
que el motor de base de datos SQL Server evala y procesa la
declaracin.

Considere la siguiente consulta:


Procesamiento de Consultas Lgico
USO TSQL;
Empid SELECT, AO (FechaPedido) AS orderyear
DESDE Sales.Orders
DONDE custid = 71
GROUP BY empid, AO (FechaPedido)
TENER COUNT (*)> 1
ORDER BY empid, orderyear;

Antes de examinar el orden de tiempo de ejecucin de las


operaciones, vamos a examinar brevemente lo que hace la consulta,
aunque los detalles sobre muchas clusulas debern WaitUntil el
mdulo correspondiente. La primera lnea se asegura de que estamos
conectados a la base de datos correcta para la consulta. Esta lnea no
ha sido sometido para la orden a tiempo itsrun.
Si es necesario, tenemos que esta se complete antes de ejecuta la
principal consulta SELECT:
Cambiar conexin
USO TSQL; - Contexto de conexin a base de datos de cambio de la
muestra.
La siguiente lnea es el comienzo de la instruccin SELECT como lo
escribimos, pero como veremos, no va a ser la primera lnea
evaluado.
La clusula SELECT devuelve la columna empid y extrae slo el ao a
partir de la columna OrderDate:
Inicio de SELECT
Empid SELECT, AO (FechaPedido) AS orderyear
La clusula FROM identifica qu tabla es la fuente de las filas de la
consulta:
Clusula FROM
DESDE Sales.Orders
La clusula WHERE filtra las filas de la tabla Sales.Orders,
manteniendo slo aquellos que satisfacen el predicado:
Dnde clusula
DONDE custid = 71
El GRUPO POR clusula grupos juntos las filas restantes por empid, y
luego por el ao de la orden:
Clusula GROUP BY

GROUP BY empid, AO (FechaPedido)


Despus se establecen los grupos, la clusula HAVING las filtra en
funcin de su predicado. Slo los empleados con ms de una venta
por ina cliente determinado ao pasarn este filtro:
Clusula HAVING
TENER COUNT (*)> 1
La clusula final, a los efectos de la vista previa de esta consulta, es
el ORDER BY, que ordena la salida por empid y luego por ao:
Clusula ORDER BY
ORDER BY empid, orderyear;
Ahora que hemos establecido lo que cada clusula no, vamos a ver el
orden en que SQL Server debe evaluarlos:
1
.

La clusula FROM se evala primero, ofrecer las filas de origen para el resto de la d
virtual se crea y se pasa al siguiente paso.

2 La clusula WHERE se encuentra junto a evaluar, filtrar las filas de la tabla de orige
.

GROUP BY est al lado, la organizacin de las filas de la tabla virtual de acuerdo a l

grupos, y se pasa al siguiente paso.


3 Nota: A partir de este punto en el flujo de operaciones, slo las columnas de la list
. en la lista SELECT.
4 La clusula HAVING se evala siguiente, el filtrado de grupos enteros en base a su
.

5 La clusula SELECT finalmente ejecuta, determinar qu columnas aparecern en lo


Nota: Debido a la clusula SELECT se evala despus de los otros pasos, los alias d
.
En nuestro ejemplo, la clusula ORDER BY es la ltima para ejecutar,
ordenar las filas segn lo determinado en su lista de columnas.
Para aplicar esto a nuestra consulta de ejemplo, aqu es el orden
lgico en tiempo de ejecucin, con la declaracin USO omitido para
mayor claridad:

Orden logico
5. empid SELECT, AO (FechaPedido) AS orderyear
1. DE Sales.Orders
2. DONDE custid = 71
3. GRUPO POR empid, AO (FechaPedido)
4. CUENTA QUE TIENE (*)> 1
6. ORDER BY empid, orderyear;
Como hemos visto, no escribimos consultas T-SQL en el mismo orden
en el que se evalan lgicamente. Desde la orden de ejecucin de
evaluationdetermines lo que se dispone de datos a las clusulas
posteriores el uno del otro, es importante entender el verdadero
orden lgico al escribir sus queries.

Aplicando el orden lgico de las operaciones a los


Estados Escritura SELECT
Ahora que ha aprendido el orden lgico de las operaciones cuando se
evala y procesa una consulta SELECT, tenga en cuenta lo siguiente
considerationswhen escribir una consulta. Tenga en cuenta que
algunos de estos pueden referirse a los detalles que usted aprender
en los mdulos siguientes:

Decidir qu tablas de consulta en primer lugar, as como los alias de tabla va a aplic

Decida qu establecer o subconjunto de filas se recupera de la tabla (s) en la clusu

Si tiene intencin de agrupar filas, decidir qu columnas se agrupan sucesivamente

Si tiene que filtrar los grupos, decidir sobre su predicado y construir una clusula HA

Si no est utilizando GROUP BY, determinar qu columnas de la tabla (s) fuente que

seleccione una de las columnas del GRUPO BYclause, y aadir cualquier agregados a

Por ltimo, recuerde que los conjuntos no incluyen ningn pedido. Como resultado, u

Demostracin: Procesamiento de Consultas


Lgico
En esta demostracin, ver cmo:
Ver resultado de la consulta que ilustre orden de procesamiento lgico.

Pasos de demostracin
Ver salida de consultas que ilustre Orden de procesamiento lgico

Asegrese de que ha completado la demostracin previa en este mdulo. Altern

20461C-MIA-DC y, ingrese a 20461C-MIA-SQL como AdventureWorks \ Estudiante


1.

Mod02 \ Setup.cmd como administrador.

Si SQL Server Management Studio no est abierto, iniciarlo y conectarlo a la MIA


2.

WindowsAuthentication, y abra la Demo.ssmssln solucin en la carpeta D: \ De

3.

En la Vista de men, haga clic en el Explorador de soluciones. A continuacin

4.

Siga las instrucciones contenidas en los comentarios del archivo de comandos.

Laboratorio: Introduccin a T-SQL


Consulta
Escenario
Usted es un analista de negocios para la aventura de Trabajo, que se
escriba informes en contra de las bases de datos corporativos
almacenados en SQL Server 2014. Para usted tobecome ms cmodo
con consultas SQL Server, el Adventure Works departamento de TI le
ha proporcionado una seleccin de plazo queriesto comn en contra
de su bases de datos. Va a revisar y ejecutar estas consultas.

Objetivos
Despus de completar esta prctica de laboratorio, usted ser capaz
de:
Ejecutar sentencias SELECT bsicos.

Ejecutar consultas que los datos de filtro.


Ejecutar consultas ese tipo de datos.
Tiempo estimado: 30 minutos
Mquina virtual: 20461C-MIA-SQL
Nombre de usuario: AdventureWorks \ Estudiante
Contrasea: Pa $$ w0rd

Ejercicio 1: Ejecutar sentencias bsico SELECT


Escenario
El script T-SQL proporcionada por el departamento de TI incluye una
sentencia SELECT que recupera todas las filas de la tabla
hr.employees, que includesthe nombre, apellido, ciudad y columnas
pas. Va a ejecutar el script T-SQL contra la base de datos de T-SQL.
Las principales tareas de este ejercicio son los siguientes:
1.

Preparar el entorno de laboratorio

2.

Ejecutar el T-SQL Script

3. Ejecutar una parte de la T-SQL Script


Tarea 1: Preparar el entorno de laboratorio
1.

Asegrese de que el 20461C-MIA-DC y

Mquinas virtuales 20461C-MIA-SQL se ejecutan tanto, y luego


ingrese a
20461C-MIA-SQL como AdventureWorks \ Estudiante con la
contrasea Pa $$ w0rd.
Ejecutar Setup.cmd en el D: \ Labfiles \ Lab02 \ carpeta de inicio como
administrador.
Tarea 2: Ejecutar el T-SQL Script
a.

Usando SSMS, conectarse a MIA-SQL mediante la autenticacin de Windows.

b.

Abra el archivo de proyecto D: \ Labfiles \ Lab02 \ arranque \ Project \ Project.ssm

c.

Abra la secuencia de comandos T-SQL 51 - 1.sql Ejercicio prctico.

Ejecutar la secuencia de comandos haciendo clic en Ejecutar en la barra de her


d.

todo el guin.

e.

Observar el resultado y el contexto de base de datos.

f. Qu base de datos se selecciona en la bases de datos Disponible caja?


Tarea 3: Ejecutar una parte de la T-SQL Script
1.

Resalte la instruccin SELECT en el script T-SQL bajo la descripcin de la tarea 2

2. Observa el resultado. Usted debe obtener el mismo resultado que en la tarea 2.


Reader Ayuda: Una forma de resaltar una parte del cdigo es
mantener pulsada la tecla Alt mientras dibuja un rectngulo alrededor
de ella con el ratn. Se seleccionar TheCode dentro del rectngulo
dibujado. Intentalo.
Resultados: Despus de este ejercicio, usted debe saber cmo abrir la
secuencia de comandos T-SQL y ejecutar todo el guin o simplemente
una declaracin especfica en su interior.

Ejercicio 2: Ejecutar consultas que filtran datos


mediante predicados
Escenario
La siguiente secuencia de comandos T-SQL es muy similar a la
primera. La sentencia SELECT recupera las mismas columnas de la
tabla hr.employees, pero utiliza apredicate en la clusula WHERE para
recuperar slo filas con el valor "EE.UU." en la columna del pas.
Las principales tareas de este ejercicio son los siguientes:
1.

Ejecutar el T-SQL Script

2.

Aplicar cambios necesarios y ejecutar el T-SQL Script

3. Elimine la Declaracin USO


Tarea 1: Ejecutar el T-SQL Script
1.

Cierre todos los archivos de script abiertos.

Abra el archivo de proyecto D: \ Labfiles \ Lab02 \ arranque \ Project \ Project.ssm


2.

el guin.

3. Usted obtiene un error. Cul es el mensaje de error? Por qu crees que sucedi
Tarea 2: Aplicar cambios necesarios y ejecutar el T-SQL Script

Aplicar los cambios necesarios en la secuencia de comandos para que se ejecute


1.

problema Mira lo IsSelected en el. Las bases de datos disponibles caja.) Prue

2. Observa el resultado. Observe que el resultado tiene un menor nmero de filas q


Tarea 3: Elimine la Declaracin USO

Los comentarios en las secuencias de comandos T-SQL se pueden escribir dentro d


1 especifica un comentario como un bloque que empieza por / * y terminando con * /

.
2 Elimine la TSQL USO; comunicado.
.

3 Guarde y cierre el script T-SQL. Abra la secuencia de comandos T-SQL 61 - Ejercicio


.
4 Por qu el guin ejecutar sin errores?
.

5 Observar el resultado y notar el contexto de base de datos en la bases de datos D


.
Resultados: Despus de este ejercicio, usted debe tener una
comprensin bsica de contexto de base de datos y cmo cambiarlo.

Ejercicio 3: Ejecucin de Consultas ese tipo de datos


Uso de ORDER BY
Escenario
El guin ltima T-SQL proporcionada por el departamento de TI tiene
un comentario: "Esta sentencia SELECT devuelve el nombre, apellido,
ciudad y pas / regioninformation para todos los empleados de los
EE.UU., ordenada por apellido."
Las principales tareas de este ejercicio son los siguientes:
1.

Ejecutar el T-SQL Script

2. Elimine las instrucciones T-SQL necesarios y ejecutarlos


Tarea 1: Ejecutar el T-SQL Script

Abra el archivo de proyecto D: \ Labfiles \ Lab02 \ arranque \ Project \ Project.ssm


1.

el guin.

2. Observe los resultados. Por qu es la ventana de resultados vaco?


Tarea 2: Elimine las instrucciones T-SQL necesarios y ejecutarlos

Observe que, antes de la declaracin de USO, estn los personajes - que signific
1.

un comentario de bloque alsoa alrededor de toda la instruccin T-SQL SELECT. El

2.

Primero ejecute el comando USE y luego ejecutarlo, a partir de la clusula SELEC

Observe los resultados. Tenga en cuenta que los resultados tienen las mismas fil
3.

por la columna de apellido.

Resultados: Despus de este ejercicio, usted debe tener una


comprensin de cmo los comentarios se pueden especificar dentro
de secuencias de comandos T-SQL.

Revisin del mdulo y comida para llevar


Revisin Pregunta (s)
Pregunta: Qu categora de instrucciones T-SQL preocupaciones
consultar y modificar datos?
Pregunta: Cules son algunos ejemplos de las funciones de agregado
con el apoyo de T-SQ