Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Usted puede utilizar las funciones CAST y CONVERT para cambiar el tipo
de datos.
Cuando el nmero de caracteres no est especificado para CAST/
CONVERT el valor por defecto es 30.
CAST o CONVERT slo deben utilizarse cuando SQL Server no puede
convertir implcitamente los tipos de datos CONVERT tiene una
capacidad de formato adicional para los datos de fecha y hora. CONVERT
acepta un tercer parmetro para los tipos de datos date y time, que le
permite especificar un formato de cadena.
T-SQL le permite concatenar dos valores utilizando el signo ms +,
Si desea devolver el nmero de filas de una tabla, puede utilizar la
funcin COUNT,
Si usted necesita devolver condicionalmente un valor en un conjunto de
resultados, puede utilizar la funcin CASE.
El reordenamiento de la expresin CASE, para mover el condicional para
A.Datum al inicio de la funcin CASE, causar que Mensajero
Contoso y Consolidado no aparezca en los resultados.
Cuando hay superposicin de los condicionales en una funcin CASE, lo
nico que tendra que hacer es cambiar el orden dentro de la
declaracin CASE y con ello podra romper una aplicacin.
Ordenando Resultados
Cuando usted necesita ordenar los resultados devueltos, utilice la
clusula ORDER BY. ORDER BY no permite
columnas que sean de los tipos de datos TEXT, NTEXT, IMAGE, o XML.
Las columnas de la clusula ORDER BY no tienen por qu incluirse en la
lista SELECT
Filtrado de datos
La clusula WHERE se utiliza para limitar los resultados devueltos. Los criterios
de filtrado aplicados a una consulta se conocen como un argumento de
bsqueda (Search-Argument SARG).
T-SQL proporciona una alternativa a >= y <=, esta es BETWEEN, que
har sus consultas ms legibles.
T-SQL no reconoce o permite el uso de una matriz, pero se puede
especificar una lista de valores utilizando la palabra clave IN.
Con frecuencia las aplicaciones buscarn datos de carcter basados en
un fragmento de una cadena. Los
Operadores de desigualdad no proporcionan el tipo de funcin de
bsqueda para manejar fragmentos de cadena. El operador LIKE en
conjunto con los caracteres comodn, permite buscar filas basndose en
un fragmento de cadena. T-SQL tiene dos caracteres comodines
Percent (%)Usado para especificar cualquier cantidad de caracteres
Underscore (_)Usado para especificar un nico carcter
Los comodines se pueden utilizar en cualquier lugar dentro de la cadena
de bsqueda
La primera tarea al escribir cualquier aplicacin es producir cdigo que
cumpla con los requerimientos del negocio (es decir, que produzca los
resultados deseados). La segunda tarea es hacer que el cdigo se
ejecute lo ms rpido que sea posible.
Los ndices slo pueden utilizarse para buscar, cuando SQL Server
puede coincidir un valor especfico contra una clave de ndice.
Los ndices slo se pueden utilizar si el SARG comienza con un valor
discreto. Las tres primeras consultas en el ejemplo anterior pueden
utilizar un ndice en la columna Nombre, porque el SARG comienza con
un valor discreto. La cuarta consulta es muy ineficiente y muy
desalentadora, ya que requiere de SQL Server para escanear todas las
filas de una tabla.
Un valor NULL no es igual a otro NULL y un valor NULL no es igual a un
valor. Por lo tanto, cuando se crea una consulta con "= NULL," usted est
pidindole a SQL Server que encuentre las filas que son equivalentes a
un NULL. Dado que es imposible que algo sea equivalente a la
inexistencia de un valor, la consulta no devuelve ninguna fila.
Tambin puede utilizar la palabra clave NOT para obtener la
comparacin negativa. Si slo quera regresar las primeras filas
en un conjunto de resultados, puede utilizar el operador TOP.
Agregacin de datos
Las funciones de agregacin ms comunes son:
COUNT (nmero de tems)
MIN (valor mnimo)
MAX (valor mximo)
AVG (valor promedio)
SUM (total de todos los valores)
Filtrado de agrupaciones
As que, cuando sus requerimientos son filtrar una agrupacin, usted
podra asumir que todo lo que tendra que hacer es especificar la
clusula WHERE apropiada.
SQL Server primero aplica la clusula WHERE y filtra todas las lneas
menos de $ 30.000. Despus de que el filtro haya sido aplicado,
La clusula HAVING se utiliza para aplicar un filtro despus que se ha
producido una agregacin.
Ejecutando agregados
Mediante la combinacin de agregados con joins de desigualdad, se
puede calcular una variedad de agregados acumulados.
Las tablas derivadas se utilizan para combinar todos los pedidos juntos
por vendedor, quienes tienen ms de una orden en un solo da.
El clculo de las tablas dinmicas (pivot)
Algunas aplicaciones necesitan girar filas de datos en columnas, por lo
general, mientras realiza un agregado. Las tablas pivote se pueden
calcular mediante el operador PIVOT.
Dentro de la clusula FROM, se especifica el origen de su pivote, as
como la consulta general. El operador PIVOT permite especificar el
conjunto a calcular cuando los datos son pivotados.
Clasificacin de datos
La funcin ROW_NUMBER () numera secuencialmente el conjunto de
resultados del 1 a n basado en un orden especificado por el usuario.
Usted puede partir los resultados en grupos y el nmero de las filas
dentro de un grupo mediante la aplicacin de la clusula PARTITION BY
La funcin ROW_NUMBER no siempre devuelve los mismos resultados si
hay valores duplicados dentro de la clusula ORDER BY especificada.
Con el fin de manejar las relaciones como un conjunto de resultados
rankeados, se puede utilizar la funcin RANK. Los valores duplicados
recibirn el valor mismo de rango, pero se producirn huecos en la
secuencia cuando existan vnculos.
La funcin DENSE_RANK nmera un conjunto de resultados, dando
valores duplicados del mismo rango. Sin embargo, ninguno de los
huecos en la secuencia de rango son eliminados.
NTILE se utiliza para dividir un conjunto de resultados en N cubos de
tamao aproximadamente igual.
Manipulacin de datos
Lo bsico para la capacidad de manipular los datos es gestionar las
operaciones y el bloqueo dentro de una base de datos.
Insertando datos
En esta seccin, usted aprender cmo construir una instruccin INSERT
bsica que especifica los datos que se introducen en una tabla.
La lista de columnas para una declaracin INSERT es opcional, siempre y
cuando se especifique un valor para todas las columnas en la tabla.
Antes de SQL Server 2008, slo se poda insertar una fila a la vez en una
tabla cuando se utiliza la clusula VALUES. Ahora se pueden realizar
inserciones de varias filas repitiendo el conjunto de valores de datos.
Mediante la sustitucin de la clusula VALUES con cualquiera declaracin
SELECT vlida, puede insertar datos en una tabla basados en datos que
ya existen en una o ms tablas.
SELECT INTO
La declaracin SELECT INTO combina SELECT, INSERT, y CREATE TABLE
en una sola declaracin. En base a los nombres de Columna y los tipos de
datos, SQL Server crea una nueva tabla con el nombre definido por la clusula
INTO
Un valor esttico
El resultado de un clculo
Una variable
Una columna de una tabla o una funcin
Eliminacin de datos
Si usted necesita eliminar los datos de una tabla, puede ejecutar una
declaracin DELETE.
La forma ms simple de una declaracin DELETE slo requiere un
nombre de tabla con la palabra clave FROM opcional.
Al igual que se vio con la declaracin UPDATE, si no restringe las filas
afectadas por la declaracin DELETE utilizando una clusula WHERE o
FROM, usted har DELETE a todas las filas de una tabla.
TRUNCAR
Si tiene que eliminar todas las filas de una tabla mediante una forma
rpida y eficiente, TRUNCATE proporciona un mejor rendimiento que el
uso de un DELETE sin una clusula WHERE
TRUNCATE TABLE slo se puede utilizar para eliminar todas las filas de
una tabla. No se puede eliminar slo una parte de las filas. TRUNCATE
TABLE slo se puede ejecutar en tablas que no son referenciadas por
una FOREIGN KEY.
Sentencia MERGE
MERGE le permite realizar mltiples INSERT, UPDATE y DELETE en una
sola sentencia.
La clusula INTO especifica la tabla destino para las operaciones INSERT,
UPDATE y DELETE. La clusula USING ... ON especifica la tabla o consulta
para aplicar como condicin de bsqueda para los criterios de
coincidencia (matching). Las clusulas WHEN especifican las acciones a
realizar en funcin de si hubo o no coincidencia en los criterios de
bsqueda.
Clusula OUTPUT
Es posible que necesite recuperar el estado de las filas que estn siendo
modificadas. En el marco de las operaciones de DML, SQL Server ofrece
dos tablas especiales denominadas inserted y deleted. Estas tablas son
creadas automticamente
Las tablas inserted y deleted estn en el mbito de una conexin y no
pueden ser accedidas por cualquier otro usuario. Estas tablas existen
siempre que una modificacin de datos est en curso, la transaccin
est abierta, y adems son vlidas slo para la modificacin de los datos
que actualmente est siendo ejecutada.
La tabla inserted contiene el estado de la(s) fila(s) modificada(s)
despus que ya se producido la modificacin, denominado como la
imagen despus. La tabla deleted contiene el estado de la(s) fila(s)
modificada(s) antes de la modificacin de los datos, conocida como la
imagen antes.
La tabla deleted siempre estar vaca. Cuando se ejecuta una
instruccin DELETE, las filas se eliminan de la tabla, y la tabla inserted
siempre estar vaca.
slo se poda acceder a las tablas inserted y deleted desde dentro un
trigger. Ahora puede acceder a estas dos tablas directamente en el
mbito de una declaracin INSERT, UPDATE, DELETE, o MERGE mediante
la utilizacin de la clusula OUTPUT.
La clusula OUTPUT se puede utilizar de dos maneras dentro de una
operacin DML:
1. Para devolver como resultado el contenido de las tablas insertadas o
eliminados directamente a una aplicacin.
2. Para insertar el contenido de las tablas inserted y/o deleted en una
tabla o variable de tabla.
Gestin de Transaccin
Una caracterstica fundamental de cualquier motor de base de datos es
garantizar la consistencia de datos al tiempo que permite el mximo
acceso simultneo a los mismos.
Cada vez que un usuario realiza un cambio a los datos, puede decidir ya
sea guardarlos, COMMIT, o descartarlos, ROLLBACK.
Cada unidad de trabajo que usted enve a SQL Server es una
transaccin. Cada transaccin est delimitada ya sea implcita o
explcitamente.
Una transaccin se construye con BEGIN TRAN, seguido por uno o ms
comandos a ejecutar. La operacin es finalizada por un COMMIT TRAN o
ROLLBACK TRAN. Una transaccin explcita se produce cuando usted
escribe el cdigo BEGIN TRAN. . . COMMIT TRAN / ROLLBACK TRAN. Una
transaccin implcita se produce cuando slo hay que ejecutar un
comando tal como un INSERT, UPDATE, o DELETE y deja en manos de
SQL Server anteponer el o los comando(s) con un BEGIN TRAN y finalizar
el lote con un COMMIT TRAN.
BEGIN TRAN iniciar una nueva transaccin. COMMIT TRAN guarda la
transaccin ms interna.
ROLLBACK TRAN revertir todas las transacciones para la conexin,
deshaciendo cualquier cambio que se haya hecho, y liberando todos los
bloqueos.
BEGIN TRAN y COMMIT TRAN delimitan una transaccin.
Los tipos de bloqueo utilizados por SQL Server son:
Compartido (shared)
Exclusivo (exclusive)
Actualizacin (update)
El tipo de bloqueo que se asigna depende de la operacin que se realiza.
Usted slo puede tener un tipo de bloqueo asignado a un recurso a la
vez.
Un bloqueo compartido se asigna para una sentencia SELECT. Dado que
una declaracin SELECT no modifica ningn dato, puede tener varios
bloqueos compartidos sobre un solo recurso en cualquier momento. Un
bloqueo compartido evitar que ocurra un bloqueo exclusivo.
El bloqueo exclusivo evitar que cualquier otra conexin acceda al
recurso bloqueado hasta que la transaccin se haya completado
Fila
Pgina
Tabla
SQL Server administra automticamente el nivel de recursos para un
bloqueo, en base a la minimizacin de los recursos requeridos para
mantener un bloqueo.
SQL Server realiza una suposicin sobre el nivel de bloqueo necesario,
basndose en las estadsticas proporcionadas por el optimizador.
La granularidad de un bloqueo es muy importante para la concurrencia
en una aplicacin.
La extensin de bloqueo en SQL Server est diseada para adquirir
bloqueos por el menor tiempo posible.
Cuando un recurso se bloquea y otra conexin necesita adquirir un
bloqueo en el mismo recurso, pero con un bloqueo que compite, la
segunda conexin tendr que esperar a que el anterior bloqueo sea
liberado.
La pieza final del rompecabezas de la gestin de transacciones es el
nivel de aislamiento. Los niveles de aislamiento determinan qu tipos de
bloqueos se realizan y cuando estos bloqueos pueden ser liberados
durante la transaccin. Niveles de aislamiento:
Lectura no confirmada (Read Uncommitted)
Lectura confirmada (Read Committed)
Lectura repetible (Repeatable read)
Serializable
Instantnea (Snapshot
Seguimiento de cambios
SQL Server 2008 incluye dos nuevas caractersticas para realizar un
seguimiento automtico del cambio de datos: seguimiento de cambios
(change tracking) y captura de datos modificados (change data capture).
El seguimiento de cambios captura el hecho de que una fila se ha
cambiado en una tabla, pero no registra el dato real que se ha
cambiado. La captura de datos capta el hecho de que una fila se cambi
en una tabla, as como los datos reales que se cambiaron.
Vistas
SQL Server tiene un objeto llamado vista view, que le permite
almacenar declaraciones SELECT complejas en su base de datos.
Sustitucin de consultas
Las consultas que hacen referencia a la vista indexada no sustituyen a la
definicin de la vista, sino que devuelven los resultados directamente
desde la vista indexada. Los resultados pueden ser devueltos
directamente, porque en trminos de almacenamiento, la vista indexada
es de hecho una tabla que mantiene el motor de almacenamiento.
la sustitucin de consulta va un paso ms all cuando est presente una
vista indexada. Normalmente, el optimizador seleccionar los ndices
creados sobre las tablas referenciadas en una consulta si se determina
que un determinado ndice mejorar el rendimiento de la consulta.