RECOMENDACIONES CONSULTAS EN SQL SERVER
RECOMENDACIONES DE LAS CONSULTAS SQL
1.- AL TRABAJAR CON MAS DE 1 TABLA, ES NECESARIO COMBINARLAS A
TRAVES DE UNA COLUMNA COMUN, ESTO SE PUEDE HACER A TRAVES DE LA
INSTRUCCION WHERE O INNER JOIN.
SELECT <LISTA_COL_TABLA1>, <LISTA_COL_TABLA2>
Sintaxis
FROM TABLA1 AS T1, TABLA2 AS T2 Antigua
WHERE T1.COLUMNA=T2.COLUMNA AND .....
GO
Sintaxis
SELECT <LISTA_COL_TABLA1>, <LISTA_COL_TABLA2> Nueva
FROM TABLA1 AS T1 INNER JOIN TABLA2 AS T2
ON T1.COLUMNA=T2.COLUMNA
WHERE .....
GO
2.- SI EN LA LISTA DE SELECCION DE CAMPOS DE UNA CONSULTA "SELECT", SE
UTILIZAN COLUMNAS y/o EXPRESIONES CON COLUMNAS (Columnas
calculadas o afectadas por alguna función de SQL diferente a la Función de
Agregado) Y FUNCIONES DE AGREGADO, ES OBLIGATORIO UTILIZAR LA
CLAUSULA GROUP BY EN AQUELLAS COLUMNAS DEL SELECT QUE NO SE
ENCUENTREN DENTRO DE UNA FUNCION DE AGREGADO.
SELECT COL1_TABLA1, ALIAS_1=FUNCION_SQL(COL2_TABLA1),
ALIAS_2=FUNCION_AGREGADO(COLUMNA_TABLA1)
FROM TABLA1
WHERE .....
GROUP BY COL1_TABLA1, FUNCION_SQL(COL2_TABLA1)
3.- LA CLAÚSULA WHERE NO ACEPTA:
- ALIAS DE COLUMNA
- FUNCIONES DE AGREGADO
SÓLO ACEPTA EL NOMBRE DE COLUMNAS VÁLIDAS. (COLUMNAS QUE
EXISTAN EN LAS TABLAS) O EXPRESIONES CON COLUMNAS.
Por ejemplo la siguiente consulta está mal definida:
SELECT COL1_TABLA1, ALIAS_1=FUNCION_SQL(COL2_TABLA1),
ALIAS_2=FUNCION_AGREGADO(COLUMNA_TABLA1)
FROM TABLA1
WHERE FUNCION_AGREGADO(COLUMNA_TABLA1)>100
GROUP BY COL1_TABLA1, FUNCION_SQL(COL2_TABLA1)
PROFESOR: LIÑÁN RODRÍGUEZ, Julio César Página 1
RECOMENDACIONES CONSULTAS EN SQL SERVER
4.- SI SE DEBE UTILIZAR UNA FUNCIÓN DE AGREGADO (SU RESULTADO) PARA
REALIZAR UN FILTRO DE LAS FILAS DE UNA CONSULTA, SERA NECESARIO
COLOCAR LA FUNCION DE AGREGADO EN LA CLAÚSULA HAVING CON LA
RESPECTIVA EXPRESION DE EVALUACION.
SELECT COL1_TABLA1,
ALIAS_1=FUNCION_SQL(COL2_TABLA1),
ALIAS_2=FUNCION_AGREGADO(COLUMNA_TABLA1)
FROM TABLA1
WHERE .....
GROUP BY COL1_TABLA1, FUNCION_SQL(COL2_TABLA1)
HAVING FUNCION_AGREGADO(COLUMNA_TABLA1)>100
GO
5.- LA CLAUSULA ORDER BY ACEPTA PARA SU USO:
* NOMBRES DE COLUMNA
* ALIAS DE COLUMNA
* EXPRESION CON COLUMNA
* FUNCION DE AGREGADO
* POSICION DE COLUMNA
SELECT COL1_TABLA1,
ALIAS_1=FUNCION_SQL(COL2_TABLA1),
ALIAS_2=FUNCION_AGREGADO(COLUMNA_TABLA1)
FROM TABLA1
WHERE .....
GROUP BY COL1_TABLA1, FUNCION_SQL(COL2_TABLA1)
HAVING FUNCION_AGREGADO(COLUMNA_TABLA1)>100
ORDER BY COL1_TABLA1, 2, FUNCION_AGREGADO(COLUMNA_TABLA1)
GO
PROFESOR: LIÑÁN RODRÍGUEZ, Julio César Página 4
RECOMENDACIONES CONSULTAS EN SQL SERVER
6.- SI UTILIZAMOS LAS CLAUSULAS:
* UNION, UNION ALL, INTERSECT O EXCEPT
LAS CONSULTAS 1 Y 2 DEBERAN COINCIDIR EN LA CANTIDAD
DE COLUMNAS Y EN SU TIPO DE DATOS EN CADA COLUMNA.
NO SE PERMITE EL USO DE LA CLAUSULA ORDER BY EN LA PRIMERA
CONSULTA, SOLO EN LA SEGUNDA.
SELECT COL1, COL2, COL3 FROM TABLA1 WHERE ….. La sintaxis es similar
UNION ALL -- INTERSECT -- EXCEPT para estas
instrucciones
SELECT COL1, COL2, COL3 FROM TABLA2 WHERE …..
ORDER BY …..
DONDE COL1 DE TABLA1 DEBE SER DEL MISMO TIPO DE COL1 DE TABLA2 Y
ASI SUCESIVAMENTE.
• UNION: DEVUELVE EL RESULTADO DE LAS 2 CONSULTAS, NO
PERMITIENDO FILAS REPETIDAS.
• UNION ALL: DEVUELVE EL RESULTADO DE LAS 2 CONSULTAS,
PERMITIENDO LAS FILAS REPETIDAS.
• INTERSECT: DEVUELVE LAS FILAS QUE EXISTAN EN AMBAS CONSULTAS.
• EXCEPT: DEVUELVE LAS FILAS QUE SE ENCUENTRAN SOLO EN LA
PRIMERA CONSULTA Y NO EN LA SEGUNDA.
PROFESOR: LIÑÁN RODRÍGUEZ, Julio César Página 4