Este documento describe varios tipos de datos y funciones en SQL Server. Explica los tipos de datos como enteros, decimales, caracteres y fechas. También describe funciones de agregación, fecha y hora, cadenas de caracteres y el manejo de valores nulos.
4. Tipos De Datos TRANSACT – SQL
Tipo de Dato Descripción
Enteros:
Bit Ente o con alo ce o (0) o no (1)Bit Entero con valor cero (0) o uno (1)
Int entero entre (2 31) y –2 31 (-1)
smallint entero entre 2 15 (32,768) y –2 15 (-1)s a t e te o e t e (3 , 68) y ( )
Tinyint entero entre 0 y 255
Binary(n) Binario
Decimales y numéricos de precisión fija:
decimal Precisión fija, de –10 38 (-1) a 10 38 (-1)
N i i ó i d d i lNumeric sinónimo de decimal
Moneda:
63 63Money valores monetarios. Desde -2 63 a 2 63
Smallmoney desde -214,748.3648 hasta +214,748.3647
5. TRANSACT – SQL
Tipos De Datos
Tipo de Dato Descripción
Numéricos aproximados:
float Punto flotante, desde -1.79 E308 a 1.79 E308
real Punto flotante, desde –3.40 E38 a 3.40 E38
Int entero entre (2 31) y –2 31 (-1)
Caracteres:
Char longitud fija de hasta 8,000 caracteresg j ,
varchar longitud variable de hasta 8,000 caracteres
Text longitud variable de hasta 231 -1 caracteres
(2 147 483 647)(2,147,483,647)
6. TRANSACT – SQL
Tipos De Datos
Tipo de Dato Descripción
Binarios:
binary data binaria de longitud fija de hasta 8,000
bytesbytes
varbinary data binaria de longitud variable de hasta
8,000 bytes
Image longitud variable de hasta 231 - 1 bytes
(2,147,483,647).
Fecha y hora:
datetime desde 01/01/1753 al 31/12/9999./ / / /
Smalldatetime desde 01/01/1900 al 31/12/2079.
7. Funciones de Agregación
TRANSACT – SQL
Función de agregación Resultado
SUM([ALL | DISTINCT] ió ) T t l d l l l
g g
SUM([ALL | DISTINCT] expresión) Total de los valores en la
expresión numérica
AVG([ALL | DISTINCT] expresión) Promedio de valores en la([ | ] p )
expresión numérica
COUNT([ALL | DISTINCT] expresión) Cantidad de valores en la
expresiónexpresión
COUNT(*) Cantidad de filas seleccionadas
MAX(expresión) El valor máximo en la
ióexpresión
MIN(expresión) El valor mínimo en la expresión
COUNT(*) es el único que NO ignora los valores nulos
8. Funciones de Agregación
TRANSACT – SQL
g g
Cláusulas COMPUTE y COMPUTE BY
Genera totales que se muestran al final de un grupo de filas
resultantes.
Cuando se emplea con BY genera subtotales por quiebre delCuando se emplea con BY genera subtotales por quiebre del
valor del grupo
SELECT expresión_A, expresión_B, ....., expresión_N
.............................
.............................
[ORDER BY expresión N][ORDER BY expresión_N]
COMPUTE
{ { AVG | COUNT | MAX | MIN | SUM } (expression_i) }
[ BY expression_N ]
9. Funciones de Agregación
TRANSACT – SQL
COMPUTE BY - Ejemplo
titleid price type
BU1032 19.9900 business
SELECT title_id, price, type
FROM titles
BU1032 19.9900 business
BU1111 11.9500 business
BU2075 2.9900 business
BU7832 19 9900 business
ORDER BY type
COMPUTE SUM(price) BY type
BU7832 19.9900 business
sum
54.9200
MC2222 19 9900 mod cookMC2222 19.9900 mod_cook
MC3021 2.9900 mod_cook
sum
22 980022.9800
10. Uso de Funciones
TRANSACT – SQL
Funciones de Fecha y Hora
Realizan operaciones sobre valores de fecha y
hora, retornando un valor string, numérico o de
fecha y hora.
DATEADD DAY
DATEDIFF GETDATE
DATENAME MONTHDATENAME MONTH
DATEPART YEAR
11. TRANSACT – SQL
Funciones de Fecha y Hora
SQL Server reconoce los datos de fecha y hora
encerrados entre apóstrofes, en los siguientesencerrados entre apóstrofes, en los siguientes
formatos:
Formatos de fecha alfabéticos (‘April 15, 1998’)( p , )
Formatos de fecha numéricos (‘4/15/1998’, ‘April 15,
1998’))
Cadenas de caracteres (‘19981207’, ‘December 12,
1998’)
12. Funciones de Fecha y Hora
Elemento de fecha Datepart Abreviatura Valores
Año year yy, yyyy 1753-9999
Trimestre quarter qq, q 1-4
Mes month mm, m 1-12
Día del año dayofyear dy, y 1-366
Día day dd, d 1-31
Semana del año week wk, ww 1-53
Día de la semana weekday dw 1-7 (dom-sab)
Hora hour hh 1-23
Minuto minute mi, n 0-59
Segundo second ss, s 0-59
13. Funciones de Fecha y Hora
TRANSACT – SQL
y
DATEADD
Devuelve un nuevo valor de tipo datetime agregando un
intervalo a la fecha especificada.
DATEADD(datepart, numero, fecha)
Donde
Datepart es el parámetro que especifica en qué unidad se
expresa al valor a adicionar.
l i tnumero es el incremento
fecha es una expresión de tipo datetime, o un string en
formato de fecha, a la que se aplicará el incrementoformato de fecha, a la que se aplicará el incremento
14. Funciones de Fecha y Hora
TRANSACT – SQL
y
DATEADD
Ejemplo:
Sumar 21 días a la fecha de publicación (pubdate) ySumar 21 días a la fecha de publicación (pubdate) y
mostrarlo con el encabezado plazo
USE pubsp
GO
SELECT DATEADD(day, 21, pubdate) AS plazoSELECT DATEADD(day, 21, pubdate) AS plazo
FROM titles
GOGO
15. Funciones de Fecha y Hora
TRANSACT – SQL
y
DATEDIFF
Devuelve el período comprendido entre dos fechas
específicas.específicas.
DATEDIFF(datepart, fechainicial, fechafinal)
DondeDonde
Datepart es el parámetro que especifica en qué unidad se
expresará la diferencia entre las fechas
fechainicial fecha inicial de la comparación
fechafinal fecha final contra la cual se compara
16. Funciones de Fecha y Hora
TRANSACT – SQL
y
DATEDIFF
Ejemplo:
Determinar la diferencia en días entre la fecha actual yDeterminar la diferencia en días entre la fecha actual y
la fecha de publicación (pubdate).
USE pubsp
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS
cantidad_de_dias
FROM titles
GOGO
17. Funciones de Fecha y Hora
TRANSACT – SQL
DATENAME
D l d d t t lDevuelve una cadena de caracteres que representa la
parte especificada de la fecha dada.
DATENAME(datepart fecha)DATENAME(datepart, fecha)
Donde
D t t l á t ifi é tDatepart es el parámetro que especifica a qué parte
de la fecha se aplicará la función.
18. Funciones de Fecha y Hora
TRANSACT – SQL
DATENAME
Ejemplo:
Extrae el nombre del mes desde la fecha del
sistema (el valor de retorno de GETDATE).( )
SELECT DATENAME(month, getdate()) AS
‘Nombre de mes'Nombre_de_mes
19. Funciones de Fecha y Hora
TRANSACT – SQL
DATEPART
Devuelve un valor entero que representa la parte
especificada de la fecha dada.
DATEPART(datepart, fecha)
La función GETDATE devuelve la fecha y hora del sistemaLa función GETDATE devuelve la fecha y hora del sistema
SELECT GETDATE() AS ‘Fecha_Actual'
Devuelve 2005-01-06 13:05:13.877
SELECT DATEPART(month, GETDATE()) AS ‘Mes'
Devuelve 1
20. Funciones de Fecha y Hora
TRANSACT – SQL
DAY, YEAR, MONTH, ,
Devuelve un valor entero que representa la parte
especificada de la fecha dada.
DAY( fecha)
YEAR(fecha)( )
MONTH(fecha)
SELECT DAY(‘06/01/2005') AS ‘N d Dí 'SELECT DAY(‘06/01/2005') AS ‘Numero de Día'
SELECT “Numero de Año" = YEAR(‘06/01/2005')
SELECT “Nú d M " MONTH(‘06/01/200 ')SELECT “Número de Mes" = MONTH(‘06/01/2005')
21. Uso de Funciones
TRANSACT – SQL
Funciones Matemáticas
Uso de Funciones
Funciones Matemáticas
Realizan operaciones trigonométricas, geométricas, y
otras retornando un valor numéricootras, retornando un valor numérico.
Ejemplos: ABS, ACOS, ASIN, ATAN, SQUARE,
POWER SIN DEGREESPOWER, SIN, DEGREES.
22. Uso de Funciones
TRANSACT – SQL
Uso de Funciones
Funciones de Metadata
Devuelven información de la base de datos y sus
objetos.
Ejemplos: COL_NAME, DB_NAME, COL_LENGH
Funciones de seguridad
Devuelven información relativa a los usuarios y losDevuelven información relativa a los usuarios y los
roles.
Ejemplos: IS MEMBER SUSER NAME USER IDEjemplos: IS_MEMBER, SUSER_NAME, USER_ID
23. Uso de Funciones
TRANSACT – SQL
Uso de Funciones
Funciones del Sistema
Devuelven información relativa a los valores, objetos, j
y configuración de SQL Server
Ejemplos: CURRENT_USER, ISDATE, ISNULL.
Funciones de cadenas de caracteres
Operan sobre cadenas de caracteres y devuelven unap y
cadena o un número. Ejemplos: LEFT, LEN,
LOWER, REPLACE, RTRIM, LTRIM.
24. TRANSACT – SQL
Funciones de Cadenas de Caracteres
Las comparaciones de cadena de caracteres no
Funciones de Cadenas de Caracteres
Las comparaciones de cadena de caracteres no
hacen distinción entre mayúsculas y minúsculas.
Caracter comodín Significado
_ Un único caracter cualquiera
% Cero o más caracteres cualquiera
[A-Z] Un rango de caracteres
[A,B,C] Un carácter de la lista
^ Negación
Para comprobar la existencia de los caracteres
dí d b á d fi i t d
[ , , ]
comodín, se deberá definir un caracter de escape
25. Funciones de Cadenas de Caracteres
TRANSACT – SQL
Funciones de Cadenas de Caracteres
Recuperar una porción de una cadena:
SUBSTRING(expresión, inicio, longitud)
LEFT(expresión valor entero)LEFT(expresión, valor entero)
RIGHT(expresión, valor entero)
LTRIM (e p esión) elimina espacios a la i q ie daLTRIM (expresión) – elimina espacios a la izquierda
RTRIM (expresión) – elimina espacios a la derecha
26. Funciones de Cadenas de Caracteres
TRANSACT – SQL
Funciones de Cadenas de Caracteres
Encontrar la posición inicial de una cadena dentro de
una columna o expresión:p
CHARINDEX(expresión1, expresión2 [, posicion inicial])( p , p [, p ])
expresión1 es la expresión a buscar
expresión2 es la columna o expresión en la cual se buscaexpresión2 es la columna o expresión en la cual se busca
posición inicial es la posición a partir de la cual se inicia la
búsqueda.
27. Funciones de Cadenas de Caracteres
TRANSACT – SQL
Funciones de Cadenas de Caracteres
Concatenar o combinar cadenas en una sola,
empleando el operador de concatenación (+)p p ( )
expresión + expresión
ió l i ió d ti á texpresión es cualquier expresión de tipo carácter o
binario, con excepción de los tipos text o image
SELECT (au_lname + ', ' + au_fname) AS Nombre
FROM thFROM authors
28. Funciones de Cadenas de Caracteres
TRANSACT – SQL
Funciones de Cadenas de Caracteres
Insertar una cadena dentro de otra existente,
sustituyendo una parte de ésta.y p
STUFF(expresión de caracteres, inicio, longitud,
expresión de caracteres)
Este ejemplo devuelve una cadena resultado de eliminar tres
caracteres de la primera cadena (abcdef) a partir de la posición
2 (desde b) e insertar la segunda cadena desde dicha posición2 (desde b) e insertar la segunda cadena desde dicha posición
SELECT STUFF('abcdef', 2, 3, 'ijklmn')
R lt d ijkl fResultado: aijklmnef
29. Funciones de Cadenas de Caracteres
TRANSACT – SQL
Funciones de Cadenas de Caracteres
Reemplazar todas las ocurrencias de una cadena
dentro de otra existente, con una tercera cadena.dentro de otra existente, con una tercera cadena.
REPLACE(cadena1, cadena2, cadena3)
Este ejemplo reemplaza la cadena cde en abcdefgicde con la
cadena xxx.
SELECT REPLACE('abcdefghicde','cde','xxx')
Resultado: abxxxfghixxx
30. TRANSACT – SQL
Manejo de valores nulos
Un valor nulo es un valor no disponible, sin
signo no conocido inaplicablesigno, no conocido, inaplicable.
No es lo mismo que cero ni blanco.
U l l d i l i úUn valor nulo no puede ser igual a ningún
otro valor, ni siquiera a otro nulo.
31. Manejo de Valores Nulos
TRANSACT – SQL
Manejo de Valores Nulos
Algunas funciones relativas al manejo de nulos:
NULLIF(expresión1, expresión2)( p , p )
Retorna un valor nulo si ambas expresiones son
equivalentes.
expresión IS [NOT] NULL
Retorna un valor booleano TRUE o FALSE como
resultado de evaluar la expresión.
NOTA: Si se emplean los operadores de comparación = o !=
el resultado será UNKNOWN
32. Manejo de Valores Nulos
TRANSACT – SQL
Manejo de Valores Nulos
Para manipular los valores nulos se debe usar la
función:
ISNULL( ió l d l )ISNULL(expresión, valor de reemplazo)
D dDonde
Expresión es la expresión que se comprobará como
nulo Puede ser de cualquier tiponulo. Puede ser de cualquier tipo.
Valor de reemplazo es el valor de retorno si la
expresión es nula. Debe ser del mismo tipo quep p q
expresión.
33. Manejo de Valores Nulos
TRANSACT – SQL
Manejo de Valores Nulos
Ejemplo:
Encontrar el precio promedio de todos los librosEncontrar el precio promedio de todos los libros
en existencia, asumiendo el valor de $10.00 en
los casos en que el campo PRECIO sea nulllos casos en que el campo PRECIO sea null
SELECT AVG(ISNULL(price $10 00))SELECT AVG(ISNULL(price, $10.00))
FROM titles
34. Manejo de Valores Nulos
TRANSACT – SQL
Ejemplo:
Manejo de Valores Nulos
Mostrar el título, el tipo y el precio de todos los libros de
la tabla TITLES.
SELECT Title type AS Tipo priceSELECT Title, type AS Tipo, price
FROM titles
Title Tipo PriceTitle Tipo Price
The Busy Executive's business 19.9900
Cooking with Compute business 11 9500Cooking with Compute business 11.9500
The Gourmet Microwave mod_cook 2.9900
The Psychology of Compute UNDECIDED NULLy gy p
35. Manejo de Valores Nulos
TRANSACT – SQL
Ejemplo:
Manejo de Valores Nulos
Mostrar el título, el tipo y el precio de todos los libros de
la tabla TITLES. En los casos en que el precio sea NULL,
mostrar el valor 0.00
SELECT title, type, ISNULL(price, 0.00) AS Precio
FROM titles
Title Type Precio
The Busy Executive's business 19.9900
Cooking with Compute business 11 9500Cooking with Compute business 11.9500
The Gourmet Microwave mod_cook 2.9900
The Psychology of Compute UNDECIDED 0.0000
37. SENTENCIAS DDL
Indices
El diseño y creación de índices (indexes) es muy
importante cuando se quiere mejorar la
performance del Servidor de Base de datos.
Los índices no son considerados como parte del
diseño lógico de la base de datos,por eso, pueden
se adicionados, removidos y cambiado sin afectar
el esquema de la BDel esquema de la BD.
38. SENTENCIAS DDL
Indices - Tipos de:
Indice Clustered
Es un índice en el cual el orden físico de lasEs un índice en el cual el orden físico de las
filas corresponde al orden de las filas en el
índice Sólo se puede tener un índiceíndice.Sólo se puede tener un índice
clustered por tabla. Las operaciones de
UPDATE y DELETE son mas rápidas con elUPDATE y DELETE son mas rápidas con el
uso de estos índices.
39. SENTENCIAS DDL
Indices - Tipos de:
Indices Non-Clustered
En este índice se especifica el orden lógicoEn este índice, se especifica el orden lógico
de una tabla para poder acceder a los
datos de forma eficiente El orden físico dedatos de forma eficiente. El orden físico de
una tabla no corresponde al orden de estos
índices Se puede definir múltiplesíndices. Se puede definir múltiples
nonclustered indexes por tabla.
41. SENTENCIAS DDL
CREATE INDEX
Indice: Es el nombre del índice que se va a
crear.crear.
Tabla: Es el nombre de la tabla existente
que contendrá el índiceque contendrá el índice.
Campo: Es el nombre del campo o de los
campos que se van a indexarcampos que se van a indexar.
42. SENTENCIAS DDL
CREATE INDEX
Para crear un índice de único campo, escriba el
nombre del campo entre paréntesis a
continuación del nombre de la tabla.
Para crear un índice de múltiples campos,
enumere el nombre de cada campo que se va a
incluir en el índice.
P í di d d ili l l bPara crear índices descendentes, utilice la palabra
reservada DESC; de lo contrario, se supone que
los índices son ascendenteslos índices son ascendentes.
43. SENTENCIAS DDL
CREATE INDEX
Para no permitir valores duplicados en el campo o
campos de índice de diferentes registros, utilice la
palabra reservada UNIQUE.
Designar el campo o los campos de índice como
la clave principal utilizando la palabra reservada
PRIMARY. Esto significa que la clave es única, por
lo que puede omitir la palabra reservada UNIQUElo que puede omitir la palabra reservada UNIQUE.
44. SENTENCIAS DDL
Ejemplos: CREATE INDEX
En el ejemplo siguiente se crea un índice, que
consta de los campos TeléfonoParticular yp y
Extensión, en la tabla Empleados:
CREATE INDEX ÍndiceNuevo ON Empleados
(TelDomicilio Extensión);(TelDomicilio, Extensión);
45. SENTENCIAS DDL
Ejemplos: CREATE INDEX
En el ejemplo siguiente se crea un índice en la
tabla Clientes con el campo IdCliente. Dosp
registros no pueden tener los mismos datos en
el campo IdCliente y no se permiten los valoresp y p
Nulos.
CREATE UNIQUE INDEX IdClien ON Clientes
(IdCliente) WITH DISALLOW NULL;(IdCliente) WITH DISALLOW NULL;