Resumen select oracle

RESUMEN:SENTENCIA SELECT

Sentencia Select

Dentro de SQL, la sentencia SELECT pertenece al categoría DML ( lenguaje de manipulación de tatos ), se utiliza para recuperar registros que cumplan unas condicionas determinadas.

Las sentencias SELCTs se pueden realizar sobre tablas, vistas, o sobre otras SELECT

Sintaxis

La sintaxis de una sentencia de este tipo es la siguiente:

        SELECT

             [alias].columna1, [alias].columna2,....

        FROM

             nombre_tabla1 [alias],nombre_tabla2 [alias],......

        [WHERE condición]

        [GROUP
BY [alias].columna1, [alias].columna2.... ]

        [HAVING condición-selección-grupos ]

    [ORDER
BY [alias].columna1 [DESC], [alias].columna2                 [DESC]... ]

Donde

CLAUSULA

DESCRIPCIÓN

SELECT [alias].columna1, [alias].columna2,.... En ella definimos las columnas que queremos obtener, también podemos incluir llamadas a funciones
FROM nombre_tabla1 [alias],nombre_tabla2 [alias],...
En esta clausula definimos las tablas o vistas de donde queremos obtener los datos. También podemos incluir otras SELECTs
[WHERE condición] Aquí especificaremos las condiciones de filtrado.
[GROUP
BY [alias].columna1, [alias].columna2.... ]
Se utiliza para agrupar resultados por una determinada columna
[HAVING condición-selección-grupos ] Se utiliza con la cláusula "GROUP BY", cuando se quiere poner condiciones al resultado de un grupo, es como una cláusula WHERE para el resultado del "GROUP BY".
[ORDER
BY [alias].columna1 [DESC], [alias].columna2 [DESC]... ]
Sirve para ordenar el resultado por las columnas que queramos, se utiliza DESC para ordenar de forma descendente.

Clausulas SELECT , FROM

Recuperar todos los registros de una tabla mostrando todas las columnas:

 

select *


from empleados;

"*" Indica que queremos mostrar todas las columnas de la tabla.

Recuperar todos los registros de una tabla mostrando algunas columnas:

Solo mostraremos las columna nombre y la "columna" "código"

 

select emp.nombre,

emp.codigo


from empleados emp;

"emp" es un alias de la tabla empleados, los alias se declaran después dela tabla (dejando un espacio) y se pueden utilizar delante de cada columna para identificar a que tabla pertenece.

Alias en columnas

También podemos utilizar alias para las columnas, si queremos por ejemplo que la columna "codigo" se muestre como "codigo_de_empleado":

 

select emp.nombre codigo_de_empleado,

emp.codigo


from empleados emp;

NOTA: Se pueden utilizar espacios en el nombre del alias si esté se define entre comillas dobles, aunque se desaconseja este uso:

 

select emp.nombre "código de empleado",

emp.codigo


from empleados emp;

Funciones en columnas

Podemos utilizar funciones en las columnas, estas pueden ser funciones estándar de Oracle o definidas por uno mismo:

 

select emp.nombre,

emp.codigo,

sysdate


from empleados emp;

Esta sentencia devolvería el nombre, el código, y una columna con la fecha del sistema de la tabla empleados.

 

Cláusula WHERE

Aquí especificaremos las condiciones de filtrado.

-Recuperar los registros de la tabla empleados (mostrando las columnas código y nombre ) donde el código portal (cp) sea igual a '30500':

 

select emp.codigo,

emp.nombre


from empleados emp

where emp.cp =
'30500'

'30500' se escribe entre comillas simples, ya que la columna CP es de tipo VARCHAR2.

-Recuperar los registros de la tabla empleados (mostrando las columnas código y nombre) donde el código portal (cp) sea igual a '30500' y el código de empresa (org_id) sea igual a 1:

 

select emp.codigo,

emp.nombre


from empleados emp


where emp.cp =
'30500'
and emp.org_id = 1;

-Recuperar los registros de la tabla empleados (mostrando las columnas código y nombre) donde el código portal (cp) sea igual a '30500' Ó el código portal (cp) sea igual a '30009':

 

select emp.codigo,

emp.nombre


from empleados emp


where emp.cp =
'30500'
or emp.cp =
'30009';

-Recuperar los registros de la tabla empleados (mostrando las columnas código y nombre) donde el código portal (cp) empiece por '30'

 

select emp.codigo,

emp.nombre


from empleados emp


where emp.cp LIKE
'30%';

Clausula GROUP BY

Se utiliza para agrupar resultados por una determinada columna. Se suele utilizar con funciones de agrupamiento

Funciones de agrupamiento

COUNT.

COUNT(*) o COUNT(DISTINCT columna)Indica el número de filas que cumplen una determinada condición, o el número de valores diferentes que posee una columna.SUM.

SUM(columna)Suma los valores de una columna.AVG

AVG(columna). Entrega la media de los valores de una columna.MIN.

MIN(columna)Entrega el valor mínimo de una columna.MAX.

MAX(columna)Entrega el valor máximo de una columna.

-Obtener la suma de la columna sueldo de la tabla empleados:

 

select
sum
(emp.sueldo)


from empleados emp

    Resultado:


-Obtener la media de la columna sueldo de la tabla empleados donde el código postal (CP) sea igual a '30500':

 

select
avg
(emp.sueldo)


from empleados emp


where emp.cp =
'30500'

    Resultado:


El resultado de estas últimas dos sentencias es siempre una sola fila, con el uso de GROUP BY podemos obtener más de una fila agrupando por las columnas que queramos.

-Obtener la suma de la columna sueldo de la tabla empleados agrupando por código postal (CP) donde el código de la organización (ORG_ID) sea igual a 1:

 

select emp.cp,


sum
(emp.sueldo)


from empleados emp


where emp.org_id = 1

group
by emp.cp

Resultado:


Clausula HAVING

Se utiliza con la cláusula "GROUP BY", cuando se quiere poner condiciones al resultado de un grupo, es como una cláusula WHERE para el resultado del "GROUP BY".

-Obtener la suma de la columna sueldo de la tabla empleados agrupando por código postal (CP) donde el código de la organización (ORG_ID) sea igual a 1, mostrando solo aquellos registros donde la suma del sueldo sea mayor que 2000:

 

select emp.cp,


sum
(emp.sueldo)


from empleados emp


where emp.org_id = 1

group
by emp.cp


having
sum
(emp.sueldo)
> 2000

Resultado:


Clausula ORDER BY

Sirve para ordenar el resultado por las columnas que queramos, se utiliza DESC para ordenar de forma descendente.

-Recuperar los registros de la tabla empleados (mostrando las columnas código y nombre, cp) donde el el código de la organización (ORG_ID) sea igual a 1, ordenando los registros por código postal y por nombre

 

select emp.codigo,

emp.nombre,

emp.cp


from empleados emp


where emp.org_id = 1

order
by emp.cp, emp.nombre

-Recuperar los registros de la tabla empleados (mostrando las columnas código y nombre, cp) donde el el código de la organización (ORG_ID) sea igual a 1, ordenando los registros por código postal (de forma descendente) y por nombre

 

select emp.codigo,

emp.nombre,

emp.cp


from empleados emp


where emp.org_id = 1

order
by emp.cp desc , emp.nombre

Consultas sobre otras consultas

Es posible ejecutar SELECTs sobre el resultado de otras SELECTs, por ejemplo, en la siguiente consulta:

 

select emp1.nombre


from
(select emp.codigo,

emp.nombre,

emp.cp,

emp.direccion


from empleados emp


where emp.org_id = 1) emp1


where emp1.cp =
'30500'

Primero se ejecutará la sentencia :

 

select emp.codigo,

emp.nombre,

emp.cp,

emp.direccion


from empleados emp


where emp.org_id = 1

Y sobre el resultado de esta se ejecutará la SELECT principal

Consultas en la cláusula SELECT

Es posible ejecutar SELECTs en la misma clusula SELECT, por ejemplo, en la siguiente consulta:

select emp.codigo,

emp.nombre,

emp.cp,

emp.direccion,


(select nombre


from empresas empre


where empre.org_id = emp.org_id) nombre_empresa


from empleados emp


where emp.org_id = 1

Para cada registro de la consulta principal se ejecutará la subconsulta:

select nombre


from empresas empre


where empre.org_id = emp.org_id

Consultas en la clausula FROM

Es posible ejecutar SELECTs en la misma clausula FROM, por ejemplo, en la siguiente consulta:

select emp.codigo,

emp.nombre,

emp.cp,

emp.direccion


from empleados emp


where emp.org_id =
(select org_id


from empresas empre


where empre.nombre =
'AKADEMO SL')

Primero se ejecutará la SELECT de la clausula FROM, una vez resuelta se ejecutará la SELECT principal

Consultas sobre varias tablas (JOIN)

Lo más habitual en SQL es realizar consultas sobre varias tablas a la vez, en este tipo de consultas se debe especificar las columnas de unión entre las tablas.

Por ejemplo: Obtener en una solo sentencia las columnas código y nombre del la tabla empleados y la columna nombre de la empresa a la que pertenece el empleado:

select emple.codigo,

emple.nombre,

empre.nombre nombre_empresa


from
empleados emple,
empresas empre


where empre.org_id = emple.org_id

La unión entre la table de empleados y empresas es la columna ORG_ID que es a la vez la clave foránea de empleados a empresas, en la mayoría de los casos las columnas de unión coinciden con las columnas de las claves foráneas.

DISTINCT

Recupera las filas de una tabla eliminando los valores de la columna duplicados. Para obtener los distintos valores de la columna CP de la tabla empleados:

select
distinct emple.cp


from
empleados emple

LIKE

LIKE sirve para hacer igualdades con comodines.

Para obtener todos los registros (mostrando la columna nombre) de la tabla empleados

Donde el código postal empiece por "30":

select emple.nombre


from
empleados emple


where emple.cp like
'30%';

Para obtener todos los registros (mostrando la columna nombre) de la tabla empleados

Donde el código postal termine por "500":

select emple.nombre


from
empleados emple


where emple.cp like
'%500';

Para obtener todos los registros (mostrando la columna nombre) de la tabla empleados

Donde el código postal contenga "5" independientemente de la posición donde se encuentre:

select emple.nombre


from
empleados emple


where emple.cp like
'%5%';

 

Últimas Noticias

Actualmente aumentar la  productividad y la competitividad empresarial es cada vez una tarea...
https://listacasas.com Uno de los portales inmobiliarios más conocidos de Guatemala...
Nuevo proyecto realizado por Infoacp, una web en prestashop : https://wiwi-pc.es En wiwi-pc...
More inNoticias  

Documentos Recientes

Categorías

Linkedin Twitter Facebook Youtube
Copyright (c) InfoAcp 2013. All rights reserved. Mantenimiento Informático
Infoacp Empresa de Informática, diseño gráfico, desarrollo de aplicaciones de gestión, Odoo, Contratos de mantenimiento informatico
Diseño y soluciones TIC Infoacp S.L.
Murcia Murcia 30007 España
Localización: 37.9956589, -1.1284899
868 70 76 94
informática, diseño gráfico, reparación de ordenadores, reparación de portatiles, reparación de móviles, programas de gestión para empresas, odoo, desarrollo odoo, programacion odoo, contratos de mantenimiento informatico