Está en la página 1de 15

El comando SELECT

● Se usa para la consulta de datos en las BBDD relacionales.


● La sintaxis del comando puede ser muy compleja, una primera forma simple de la misma
podría ser:
SELECT * | [DISTINCT] columna [[AS] alias] | expresion [[AS] alias] , …
FROM nombre_tabla;

● *. El asterisco significa que se seleccionan todas las columnas.


● DISTINCT. Hace que no se muestren los valores duplicados.
● columna. Es el nombre de una columna de la tabla que se desea mostrar.
● expresión. Una expresión válida SQL.
● alias. Es un nombre que se le da a la cabecera de la columna en el resultado de esta
instrucción.

Javier Jiménez Castillo - Bases de Datos - 1º DAW 6


El comando SELECT
Además, podemos definir expresiones que modifiquen los resultados a mostrar por la consulta,
concretamente podremos utilizar:
● Funciones, que más adelante veremos las que existen y su uso.
● Operaciones aritméticas, utilizando los operadores + (suma), - (resta), * (multiplicación) y /
(división). Estos operadores modifican el resultado que se va a mostrar, pero no modifican
en ningún caso los datos almacenados.
● Concatenaciones, para ello haremos uso del operador ||.

Javier Jiménez Castillo - Bases de Datos - 1º DAW 10


AUNQUE TENGAMOS VARIAS CONDICIONES, SOLO SE UTILIZA UNA CLÁUSULA WHERE Y SE
ANIDAN CON LOS OPERADORES LÓGICOS.

El comando SELECT
Una vez que hemos visto las opciones básicas de la selección, vamos a introducir condiciones en
los datos mostrados. Las condiciones permiten FILTRAR el resultado obtenido.
SELECT * | [DISTINCT] columna [[AS] alias] | expresion [[AS] alias] , …
FROM nombre_tabla
WHERE condición;
Dicha condición se puede modelar mediante:
● Operadores de comparación: < (menor), > (mayor), >= (mayor o igual), <= (menor o igual), =
(igual), <> (distinto), != (distinto).
● Operadores lógicos:
○ AND (Debe cumplir ambas condiciones), OR (Debe cumplir alguna condición), NOT (invierte
la lógica).
● BETWEEN: comprueba si un valor está o no en un rango y se usa junto a AND.
● IN: Comprueba si un valor está o no dentro de una lista de valores.
● LIKE: Permite comparar con cadenas de texto.
● IS NULL: identifica los valores nulos en una columna.

Javier Jiménez Castillo - Bases de Datos - 1º DAW 15


El comando SELECT
El orden inicial del resultado de una consulta SELECT es el mismo que el orden en el que se
encuentran los registros en la tabla. Para ordenar en base a criterios más interesantes, se utiliza la
cláusula ORDER BY.
SELECT * | [DISTINCT] columna [[AS] alias] | expresion [[AS] alias] , …
FROM nombre_tabla
WHERE condición
[ORDER BY] columna [ASC | DESC], columna [ASC | DESC]...;

Se colocan una lista de campos que indica la forma de ordenar. Se ordena primero por el primer
campo de la lista, si hay coincidencias por el segundo, si ahí también las hay por el tercero, y así
sucesivamente. Se puede colocar las palabras ASC O DESC (por defecto se toma ASC).

Javier Jiménez Castillo - Bases de Datos - 1º DAW 19


En este apartado, solo veremos las primeras. Más adelante se estudiarán las que
operan sobre varias filas.

Funciones del lenguaje SQL.


Permiten realizar cálculos avanzados, o bien facilitar la escritura de ciertas expresiones.

( )
Devuelve un valor que

Función Argumentos es usado en el mismo


Separados por comas lugar dónde está la
invocación de la
función.

Las funciones pueden ser de dos tipos:


● Funciones que operan con una sola fila.
● Funciones que operan con varias filas.

Javier Jiménez Castillo - Bases de Datos - 1º DAW 25


FUNCIONES DE CARACTERES:

Funciones del lenguaje SQL.


○ LOWER(texto): Convierte a minúsculas.
○ UPPER(texto): Convierte a mayúsculas.
○ INITCAP(texto): La primera letra de cada palabra a mayúsculas.
○ RTRIM(texto): Elimina espacios en blanco a la derecha.
○ LTRIM(texto): Elimina espacios en blanco a la izquierda.
○ TRIM(texto): Elimina espacios en blanco a derecha e izquierda y los espacios dobles del interior.
○ TRIM(caracter FROM texto): Elimina las apariciones de caracter.
○ SUBSTR(texto, n [,m]): Obtiene los m caracteres a partir de n o hasta el final si no se indica m.
○ LENGTH(texto): Obtiene el tamaño.
○ INSTR(texto, textoBuscado [,posInicial [,nAparicion]]): Obtiene la posición de textoBuscado en
texto, se puede indicar a partir de donde empezar a buscar y el número de aparición que
queremos identificar, si no lo encuentra devuelve 0.
○ REPLACE(texto, textoABuscar [,textoReemplazo]) Reemplaza el textoABuscar por el
textoReemplazo, si no se indica solo se elimina textoABuscar.
○ LPAD/RPAD(texto, anchuraMaxima [, caracterRelleno]): Rellena a izquierda o derecha con el
caracter de relleno hasta ocupar la anchura máxima, si no se indica se rellena con espacios y si el
texto es mayor que la anchura máxima se corta.
○ REVERSE(texto): Invierte el texto.

Javier Jiménez Castillo - Bases de Datos - 1º DAW 32


FUNCIONES NUMÉRICAS:

Funciones del lenguaje SQL.


○ ROUND(n, decimales): Redondea n con el número de decimales indicado.
○ TRUNC(n, decimales): Corta n con el número de decimales indicados.
○ MOD(n1, n2): Resultado de dividir n1 entre n2.
○ POWER(valor, exponente): Eleva valor al exponente indicado.
○ SQRT(n): Raíz cuadrada de n.
○ SIGN(n): Devuelve 1 si n es positivo, 0 si es cero y -1 si es negativo.
○ ABS(n): Valor absoluto de n.
○ EXP(n): Eleva e a n.
○ LN(n): Logaritmo neperiano de n.
○ LOG(n): Logaritmo en base 10 de n.
○ SIN(n): Seno de n.
○ COS(n): Coseno de n.
○ TAN(n): Tangente de n.
○ ACOS(n): Arco coseno de n.
○ ASIN(n): Arco seno de n.
○ ATAN(n): Arco tangente de n.
○ SINH(n): Seno hiperbólico de n.
○ COSH(n): Coseno hiperbólico de n.
○ TANH(n): Tangente hiperbólica de n.
Javier Jiménez Castillo - Bases de Datos - 1º DAW 36
FUNCIONES DE FECHA:

Funciones del lenguaje SQL.


○ SYSDATE: Fecha y hora actuales.
○ SYSTIMESTAMP: Fecha y hora actuales en formato TIMESTAMP.
○ ADD_MONTHS(fecha, n): Añade a la fecha el número de meses indicados por n.
○ MONTHS_BETWEEN(fecha1, fecha2): Número de meses entre fecha1 y fecha2.
○ NEXT_DAY(fecha, dia): Indica el día de la semana de la fecha sumándole el dia del parámetro (1, 2,
3… 7).
○ LAST_DAY(fecha): Obtiene el último día del mes al que pertenece la fecha. Devuelve un valor
DATE.
○ EXTRACT(valor FROM fecha): Extra un valor de una fecha concreta, puede ser day, month o year.
○ GREATEST(fecha1, fecha2, …): Devuelve la mayor fecha de todas.
○ LEAST(fecha1, fecha2, …): Devuelve la menor fecha de todas.
○ ROUND(fecha [,formato]): Redondea la fecha al valor del formato:
■ ‘YEAR’: Año completo más cercano a la fecha.
■ ‘MONTH’: Mes completo más cercano a la fecha.
■ ‘HH24’: Redondea la hora a las 00:00 más cercana.
■ ‘DAY’: Redondea al día más cercano.
○ TRUNC(fecha [,formato]): Igual que el anterior pero en vez de redondear trunca.

Javier Jiménez Castillo - Bases de Datos - 1º DAW 42


FUNCIONES DE CONVERSIÓN:

Funciones del lenguaje SQL.


● Oracle es capaz de convertir datos automáticamente a fin de que la expresión final tenga sentido. En ese
sentido son fáciles las conversiones de texto a número y viceversa.
● En determinadas ocasiones queremos realizar conversiones explícitas. Para hacerlo utilizaremos las
funciones:
○ TO_CHAR(fecha, formato): Obtiene un texto a partir de un número o una fecha utilizando una
cadena de formato.
○ TO_DATE(texto, formato): Obtiene una fecha a partir de un texto.

Las cadenas de formato se modelan de acuerdo a la tabla siguiente:

Javier Jiménez Castillo - Bases de Datos - 1º DAW 47


FUNCIONES DE CONVERSIÓN:

Funciones del lenguaje SQL.


● Oracle es capaz de convertir datos automáticamente a fin de que la expresión final tenga sentido. En ese
sentido son fáciles las conversiones de texto a número y viceversa.
● En determinadas ocasiones queremos realizar conversiones explícitas. Para hacerlo utilizaremos las
funciones:
○ TO_CHAR(fecha, formato): Obtiene un texto a partir de un número o una fecha utilizando una
cadena de formato.
○ TO_DATE(texto, formato): Obtiene una fecha a partir de un texto.

Las cadenas de formato se modelan de acuerdo a la tabla siguiente:

SELECT TO_CHAR(SYSDATE, 'DD/MONTH/YYYY, DAY HH:MI:SS')


FROM DEPARTAMENTOS;

01/ENERO/2023, DOMINGO 14:15:03

Javier Jiménez Castillo - Bases de Datos - 1º DAW 50


Agrupaciones de registros
Una agrupación es un conjunto de filas que se unen de acuerdo a uno o varios valores de
columnas y permiten obtener resultados verticales.

Javier Jiménez Castillo - Bases de Datos - 1º DAW 54


Agrupaciones de registros
La agrupación se incluye dentro de la consulta SELECT vista anteriormente de la siguiente forma:
SELECT * | [DISTINCT] columna [[AS] alias] | expresion [[AS] alias] , …
FROM nombre_tabla
WHERE condición
[GROUP BY] columna1, columna2 …
[ORDER BY] columna [ASC | DESC], columna [ASC | DESC]...;
La selección de columnas solo puede incluir aquellas que tengan valores únicos para la fila
agrupada, esto es MUY IMPORTANTE.

Javier Jiménez Castillo - Bases de Datos - 1º DAW 57


Si agrupo por DeptID ¿Qué columnas podré incluir en el SELECT?
AQUELLAS CUYO VALOR SEA ÚNICO EN CADA AGRUPACIÓN

Agrupaciones de registros
La agrupación se incluye dentro de la consulta SELECT vista anteriormente de la siguiente forma:
SELECT * | [DISTINCT] columna [[AS] alias] | expresion [[AS] alias] , …
FROM nombre_tabla
WHERE condición
[GROUP BY] columna1, columna2 …
[ORDER BY] columna [ASC | DESC], columna [ASC | DESC]...;
La selección de columnas solo puede incluir aquellas que tengan valores únicos para la fila
agrupada, esto es MUY IMPORTANTE.

Javier Jiménez Castillo - Bases de Datos - 1º DAW 61


Agrupaciones de registros
Como ya hemos dicho anteriormente, la gran utilidad de las agrupaciones es la posibilidad de
hacer cálculos verticales, es decir, utilizar varias filas para obtener resultados. Esto es posible
gracias a las funciones de varias filas:
● COUNT(*): Cuenta la cantidad de filas de un grupo.
● SUM(expresión): Suma los valores de la expresión.
● AVG(expresión): Calcula la media aritmética de la expresión.
● MIN(expresión): Obtiene el menor de los valores de la expresión.
● MAX(expresión): Obtiene el mayor de los valores de la expresión.
● STDDEV(expresión): Calcula la desviación estándar de los elementos de la expresión.
● VARIANCE(expresión): Calcula la varianza de los elementos de la expresión.
Estas funciones se pueden usar tanto en los datos a mostrar (SELECT) como a la hora de filtrar las
agrupaciones, cosa que veremos a continuación.

Javier Jiménez Castillo - Bases de Datos - 1º DAW 64


Las condiciones de fila (WHERE) se aplican antes de agrupar (GROUP BY) y las de grupo (HAVING) después de llevar a cabo
la agrupación.

Agrupaciones de registros
Puede darse la situación en que no sean interesantes todas las agrupaciones generadas, para ello
a la hora de agrupar también podemos aplicar condiciones sobre los grupos mediante la cláusula
HAVING.
SELECT * | [DISTINCT] columna [[AS] alias] | expresion [[AS] alias] , …
FROM nombre_tabla
WHERE condición
[GROUP BY] columna1, columna2 …
[HAVING] condicionesDeGrupo
[ORDER BY] columna [ASC | DESC], columna [ASC | DESC]...;

Las condiciones de grupo funcionan igual que las aplicadas a cada fila mediante la cláusula
where.

Javier Jiménez Castillo - Bases de Datos - 1º DAW 69

También podría gustarte