Comandos SQL
Order By
ORDENAR REGISTROS
DEFINICIÓN
Hasta ahora, se ha trabajado la obtención
de datos de una tabla utilizando los
comandos SELECT y WHERE. Con
frecuencia, sin embargo, se necesita
enumerar el resultado en un orden
particular. Esto podría ser en orden
ascendente, en orden descendente, o
podría basarse en valores numéricos o de
texto. En tales casos, se puede utilizar la
palabra clave ORDER BY para conseguir
ésta meta.
CARACTERÍSTICAS Y
ESTRUCTURA
La sintaxis para una instrucción ORDER BY
es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
[WHERE "condición"]
ORDER BY
"nombre_columna" [ASC, DESC];
[ ] significa que la instrucción WHERE es
opcional.
CARACTERÍSTICAS Y
ESTRUCTURA
Es posible ordenar por más de una columna. En
este caso, la cláusula ORDER BY anterior se
convierte en
ORDER BY "nombre1_columna" [ASC,
DESC], "nombre2_columna" [ASC, DESC]
Suponiendo que se elige un orden ascendente
para ambas columnas, el resultado se clasificará
en orden ascendente según la columna 1. Si hay
una relación para el valor de la columna 1, se
clasificará en orden ascendente según la
columna 2.
APLICACIÓN
APLICACIÓN
Se ingresa:
SELECT Store_Name, Sales,
Txn_Date
FROM Store_Information
ORDER BY Sales DESC;
APLICACIÓN
Resultado
:
Group By
AGRUPAR REGISTROS
DEFINICIÓN
La cláusula GROUP BY unida a un SELECT
permite agrupar filas según las
columnas que se indiquen como
parámetros, y se suele utilizar en
conjunto con las funciones de agrupación,
para obtener datos resumidos y
agrupados por las columnas que se
necesiten.
CARACTERÍSTICAS Y
ESTRUCTURA
La sintaxis SQL correspondiente a GROUP
BY es la siguiente:
SELECT "nombre1_columna",
SUM("nombre2_columna")
FROM "nombre_tabla"
GROUP BY "nombre1-columna";
APLICACIÓN
APLICACIÓN
Se desea saber las ventas totales para
cada negocio. Para hacerlo, se ingresa:
SELECT Store_Name,
SUM(Sales)
FROM Store_Information
GROUP BY Store_Name;
APLICACIÓN
Resultado:
APLICACIÓN
La palabra clave GROUP BY se utiliza
cuando se seleccionan columnas múltiples
desde una tabla (o tablas) y aparece al
menos un operador aritmético en la
instrucción SELECT. Cuando esto sucede,
se necesita GROUP BY todas las otras
columnas seleccionadas, es decir, todas las
columnas excepto aquella(s) que se operan
por un operador aritmético.
Having
SELECCIONAR GRUPOS
DEFINICIÓN
Así como la cláusula "where" permite
seleccionar (o rechazar) registros
individuales; la cláusula "having" permite
seleccionar (o rechazar) un grupo de
registros.
CARACTERÍSTICAS Y
ESTRUCTURA
La cláusula HAVING se coloca generalmente
cerca del fin de la instrucción SQL, y la
instrucción SQL con la cláusula HAVING.
Puede o no incluir la cláusula GROUP BY. La
sintaxis para HAVING es:
SELECT "nombre1_columna",
SUM("nombre2_columna")
FROM "nombre_tabla"
GROUP BY "nombre1_columna"
HAVING (condición de función
aritmética);
APLICACIÓN
APLICACIÓN
Se ingresaría:
SELECT Store_Name,
SUM(Sales)
FROM Store_Information
GROUP BY Store_Name
HAVING SUM(Sales) > 1500;
Resultado:
Like
BÚSQUEDA DE PATRONES
DEFINICIÓN
LIKE es otra palabra clave que se utiliza en
la cláusula WHERE. Básicamente, LIKE le
permite hacer una búsqueda basada en un
patrón en vez de especificar exactamente
lo que se desea (como en IN) o determinar
un rango (como en BETWEEN).
CARACTERÍSTICAS Y
ESTRUCTURA
La sintaxis es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" LIKE
{patrón};
CARACTERÍSTICAS Y
ESTRUCTURA
{patrón} generalmente consiste en comodines. Aquí
hay algunos ejemplos:
• 'A_Z': Toda línea que comience con 'A', otro carácter y
termine con 'Z'. Por ejemplo, 'ABZ' y 'A2Z' deberían
satisfacer la condición, mientras 'AKKZ' no debería (debido a
que hay dos caracteres entre A y Z en vez de uno).
• 'ABC%': Todas las líneas que comienzan con 'ABC'. Por
ejemplo, 'ABCD' y 'ABCABC' ambas deberían satisfacer la
condición.
• '%XYZ': Todas las líneas que terminan con 'XYZ'. Por ejemplo,
'WXYZ' y 'ZZXYZ' ambas deberían satisfacer la condición.
• '%AN%': : Todas las líneas que contienen el patrón 'AN' en
cualquier lado. Por ejemplo, 'LOS ANGELES' y 'SAN
FRANCISCO' ambos deberían satisfacer la condición.
APLICACIÓN
APLICACIÓN
Se desea encontrar todos los negocios
cuyos nombres contengan ‘AN’. Para
hacerlo, se ingresa:
SELECT *
FROM Store_Information
WHERE Store_Name LIKE
'%AN%';
APLICACIÓN
Resultado:
Distinct
REGISTROS DUPLICADOS
DEFINICIÓN
La palabra clave SELECT nos permite
tomar toda la información de una columna
(o columnas) en una tabla. Esto,
obviamente, significa necesariamente que
habrá redundancias. ¿Qué sucedería si sólo
se desea seleccionar cada elemento
DISTINCT? Esto es fácil de realizar en SQL.
Todo lo que se debe hacer es agregar
DISTINCT luego de SELECT.
CARACTERÍSTICAS Y
ESTRUCTURA
La sintaxis es la siguiente:
SELECT DISTINCT
"nombre_columna"
FROM "nombre_tabla";
APLICACIÓN
APLICACIÓN
Ingresamos,
SELECT DISTINCT store_name FROM
Store_Information;
Resultado:
In
OPERADOR RELACIONAL
DEFINICIÓN
Cuando se utiliza en el contexto
relacionado con la cláusula WHERE, se
sabe exactamente el valor de los valores
regresados que se desea ver para al menos
una de las columnas.
CARACTERÍSTICAS Y
ESTRUCTURA
La sintaxis para el uso de la palabra clave IN es la
siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" IN (''valor1',
''valor2', ...);
El número de valores en los paréntesis pueden ser
uno o más, con cada valor separado por comas. Los
valores pueden ser números o caracteres. Si hay sólo
un valor dentro del paréntesis, este comando es
equivalente a
WHERE "nombre_columna" = 'valor1'
APLICACIÓN
Por ejemplo, se podría desear seleccionar todos los registros para
los negocios de Los Ángeles y San Diego en la Tabla
Store_Information:
APLICACIÓN
Se Ingresa:
SELECT *
FROM Store_Information
WHERE Store_Name IN ('Los Angeles', 'San
Diego');
Resultado:
Between
OPERADOR RELACIONAL
DEFINICIÓN
Mientras que la palabra clave IN ayuda a
limitar el criterio de selección para uno o
más valores discretos, la palabra clave
BETWEEN permite la selección de un
rango.
CARACTERÍSTICAS Y
ESTRUCTURA
La sintaxis para la cláusula BETWEEN es la
siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" BETWEEN 'valor1'
AND 'valor2';
Esto seleccionará todas las filas cuya columna
tenga un valor entre 'valor1' y 'valor2'.
Por ejemplo, se desea seleccionar la visualización
de toda la información de ventas entre el 06 de
enero de 1999, y el 10 de enero de 1999, en la
Tabla Store_Information.
APLICACIÓN
APLICACIÓN
Se Ingresa:
SELECT *
FROM Store_Information
WHERE Txn_Date BETWEEN '06-Jan-1999'
AND '10-Jan-1999';
Se debe en cuenta que la fecha puede
almacenarse en diferentes formatos según las
diferentes bases de datos. Esta guía de
referencia simplemente elige uno de los
formatos.
APLICACIÓN
Resultado:
Any-All
SUBCONSULTAS
DEFINICIÓN ANY
"any" y "some" son sinónimos. Chequean si
alguna fila de la lista resultado de una
subconsulta se encuentra el valor
especificado en la condición.
Compara un valor escalar con los valores
de un campo y devuelven "true" si la
comparación con cada valor de la lista de
la subconsulta es verdadera, sino "false".
CARACTERÍSTICAS Y
ESTRUCTURA
El tipo de datos que se comparan deben
ser compatibles.
La sintaxis básica es:
...VALORESCALAR
OPERADORDECOMPARACION any
(SUBCONSULTA);
APLICACIÓN
Se desea saber los títulos de los libros de
"Borges" que pertenecen a editoriales que han
publicado también libros de "Richard Bach",
es decir, si los libros de "Borges" coinciden
con ALGUNA de las editoriales que publicó
libros de "Richard Bach":
select titulo from libros where
autor='Borges' and codigoeditorial = any
(select [Link] from editoriales e join
libros l on codigoeditorial=[Link]
where [Link]='Richard Bach');
APLICACIÓN
La consulta interna (subconsulta) retorna
una lista de valores de un solo campo
(puede ejecutar la subconsulta como una
consulta para probarla), luego, la consulta
externa compara cada valor de
"codigoeditorial" con cada valor de la lista
devolviendo los títulos de "Borges" que
coinciden.
DEFINICIÓN - ALL
"all" también compara un valor escalar con
una serie de valores. Chequea si TODOS
los valores de la lista de la consulta
externa se encuentran en la lista de
valores devuelta por la consulta interna.
Sintaxis:
VALORESCALAR
OPERADORDECOMPARACION all
(SUBCONSULTA);
APLICACIÓN
Se desea saber si TODAS las editoriales
que publicaron libros de "Borges" coinciden
con TODAS las editoriales que publicaron
libros de "Richard Bach":
select titulo from libros where
autor='Borges' and codigoeditorial =
all (select [Link] from editoriales e
join libros l on
codigoeditorial=[Link] where
[Link]='Richard Bach');
APLICACIÓN
La consulta interna (subconsulta) retorna
una lista de valores de un solo campo
(puede ejecutar la subconsulta como una
consulta para probarla), luego, la consulta
externa compara cada valor de
"codigoeditorial" con cada valor de la lista,
si TODOS coinciden, devuelve los títulos.
BIBLIOGRAFÍA
• [1] [Link]
[Link]
• [2] http
://[Link]/ora
cleya/[Link]?inicio=
50