Sentencia select

30
LA SENTENCIA SELECT REALIZADO POR: Marcos Anthony León Ruiz Paola Bazán García

Transcript of Sentencia select

Page 1: Sentencia select

LA SENTENCIA SELECT

REALIZADO POR: Marcos Anthony León Ruiz

Paola Bazán García

Page 2: Sentencia select

DEFINICION:Un lenguaje de manipulación de datos (Data Manipulation Language, o DML en inglés) es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado.El lenguaje de manipulación de datos más popular hoy día es SQL, usado para recuperar y manipular datos en una base de datos relacional.

 

LA SENTENCIA SELECT

Page 3: Sentencia select

Clausulas (from, where, group by, having, order by, etc.), operadores (lógicos y de relación), funciones agregadas (sum, avg, Max, min). 

Page 4: Sentencia select

Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el caso de que exista más de una tabla se denomina a la consulta "consulta combinada" o "join". En las consultas combinadas es necesario aplicar una condición de combinación a través de una cláusula WHERE.

FROMEspecifica una condición que debe cumplirse para que los datos sean devueltos por la consulta. Su funcionamiento es similar al de WHERE pero aplicado al conjunto de resultados devueltos por la consulta. Debe aplicarse siempre junto a GROUP BY y la condición debe estar referida a los campos contenidos en ella.

HAVING

Page 5: Sentencia select

Especifica una condición que debe cumplirse para que los datos sean devueltos por la consulta. Admiten los operadores lógicos AND y OR.

WHERE

Especifica la agrupación que se da a los datos. Se usa siempre en combinación con funciones agregadas.

GROUP BY

Presenta el resultado ordenado por las columnas indicadas. El orden puede expresarse con ASC (orden ascendente) y DESC (orden descendente). El valor predeterminado es ASC

ORDER BY

Page 6: Sentencia select

 Operadores lógicos de SQL

Para probar estos operadores usaremos la misma tabla de ejemplo vista cuando hablamos de operadores de comparación. El nombre de la tabla es CASAS_EN_VENTA y tiene las siguientes filas:

Page 7: Sentencia select

Registros de la tabla

EJEMPLO CON ALLConsulte las casas que tienen un código menor que el código de todas las casas cuyo precio sea inferior a $100.000 dolares.SELECT * FROM CASAS_EN_VENTAWHERE ID < ALL(SELECT ID FROM CASAS_EN_VENTA WHERE PRECIO > 100000); 

Ejemplo 1, operadores lógicos en SQL

Page 8: Sentencia select

Ejemplo con AND

Consulte las casas cuyo código sea menor a 1005 y el precio sea menor a $70.000 dolares.

SELECT * FROM CASAS_EN_VENTA WHERE ID < 1005 AND PRECIO < 60000;

Ejemplo 2, operadores lógicos en SQL

Page 9: Sentencia select

Ejemplo ANY

Consulte las casas que tienen un código menor que el código de cualquier casa cuyo precio sea inferior a $100.000 dolares.SELECT * FROM CASAS_EN_VENTA WHERE ID < ANY(SELECT ID FROM CASAS_EN_VENTA WHERE PRECIO > 100000); 

Ejemplo 3, operadores lógicos en SQL

Page 10: Sentencia select

Ejemplo BETWEENConsulte las casas que tengan un precio entre $40.000 y $70.000 dolares.SELECT * FROM CASAS_EN_VENTA WHERE PRECIO BETWEEN 40000 AND70000;

Ejemplo 4, operadores lógicos en SQL

Page 11: Sentencia select

Ejemplo INConsulte las casas que tengan un precio igual a $100.000 y $200.000 dolaresSELECT * FROM CASAS_EN_VENTA WHERE PRECIO IN (100000 , 200000); 

Ejemplo 6, operadores lógicos en SQL

Page 12: Sentencia select

Ejemplo LIKEPara poder filtrar las cadenas mediante el operador LIKE debemos conocer los siguientes caracteres:

Page 13: Sentencia select

Ejemplo NOT e IS NULLConsulte las casas que no tienen en su dirección un valor NULL:

SELECT * FROM CASAS_EN_VENTA WHERE DIRECCION IS NOT NULL;

Ejemplo 8, operadores lógicos en SQL

Page 14: Sentencia select

Ejemplo ORConsulte las casas que tengan un código menor a 1003 o que tengan un precio mayor a 80.000 dolares:SELECT * FROM CASAS_EN_VENTA WHERE ID < 103 OR PRECIO > 80000

Page 15: Sentencia select

Funciones agregadas

La función SUMSUM ([ALL|DISTINCT] expresion )Devuelve la suma de los valores devueltos por la expresión.Sólo puede utilizarse con columnas numéricas. El resultado será del mismo tipo aunque puede tener una precisión mayor. SELECT SUM(importe) FROM pedidos; Obtiene el importe total vendido en todos los pedidos.SELECT SUM(ventas) AS VentasTotales, MAX(objetivo) AS MayorObjetivo FROM oficinas; Devuelve la suma de las ventas de todas las oficinas y de los objetivos de todas las oficinas, el de mayor importe.

Page 16: Sentencia select

Funciones agregadas

La función AVGAVG ([ALL|DISTINCT] expresion ) Devuelve el promedio de los valores de un grupo, para calcular el

promedio se omiten los valores nulos.El grupo de valores lo determina el resultado de la expresión que será

un nombre de columna o una expresión basada en una columna o varias del origen de datos.La función se aplica también a campos numéricos, y en este caso el tipo de dato del resultado puede cambiar según las necesidades del sistema para representar el valor del resultado.

Page 17: Sentencia select

Funciones agregadas

La función AVGAVG ([ALL|DISTINCT] expresion ) Devuelve el promedio de los valores de un grupo, para calcular el

promedio se omiten los valores nulos.El grupo de valores lo determina el resultado de la expresión que será

un nombre de columna o una expresión basada en una columna o varias del origen de datos.La función se aplica también a campos numéricos, y en este caso el tipo de dato del resultado puede cambiar según las necesidades del sistema para representar el valor del resultado.

Page 18: Sentencia select

Funciones agregadasLa función MAXMAX ([ALL|DISTINCT] expression)  Devuelve el valor máximo de la expresión sin considerar los nulos.

MAX se puede usar con columnas numéricas, de caracteres y de datetime, pero no con columnas de bit. No se permiten funciones de agregado ni subconsultas.Utilizar DISTINCT no tiene ningún sentido con MAX (el valor máximo será el mismo si consideramos las repeticiones o no) y sólo se incluye para la compatibilidad con SQL-92.Por ejemplo:SELECT SUM(ventas) AS VentasTotales, MAX(objetivo) AS

MayorObjetivoFROM oficinas; Devuelve 9 porque tenemos nueve valores no nulos en la columna region. A la hora de

interpretar un COUNT es conveniente no olvidar que cuenta valores no nulos, por ejemplo si interpretáramos la sentencia tal cual se lee, “cuántas regiones tenemos en oficinas”  sería erróneo, realmente estamos obteniendo cuántas oficinas tienen una región asignada.

Page 19: Sentencia select

Funciones agregadas

La función MINMIN ([ALL|DISTINCT] expression) Devuelve el valor mínimo de la expresión sin considerar los nulos.

MIN se puede usar con columnas numéricas, de caracteres y de datetime, pero no con columnas de bit. No se permiten funciones de agregado ni subconsultas.Utilizar DISTINCT no tiene ningún sentido con MIN (el valor mínimo será el mismo si consideramos las repeticiones o no) y sólo se incluye para la compatibilidad con SQL-92.

Page 20: Sentencia select

Los ejemplos siguientes ilustran la consulta sentencia-select.Ejemplo 1: Selección de todas las columnas y filas de la tabla EMPLOYEE. SELECT * FROM EMPLOYEEEjemplo 2: Selección del nombre del proyecto (PROJNAME), la fecha de inicio (PRSTDATE) y la fecha de finalización (PRENDATE) de la tabla PROJECT. Ordenación de la tabla resultante por la fecha de finalización con las fechas más recientes primero. SELECT PROJNAME, PRSTDATE, PRENDATE FROM PROJECT ORDER BY PRENDATE DESCEjemplo 3: Selección del número de departamento (WORKDEPT) y el salario medio del departamento (SALARY) para todos los departamentos de la tabla EMPLOYEE. Ordenación la tabla resultante por orden ascendente por el salario medio del departamento. SELECT WORKDEPT, AVG(SALARY) FROM EMPLOYEE GROUP BY WORKDEPT ORDER BY 2

EJEMPLOS:

Page 21: Sentencia select

Ejemplos

Ejemplo 4: Declaración de un cursor llamado UP_CUR para utilizarlo en un programa C para actualizar las columnas de fecha de inicio (PRSTDATE) y de fecha de finalización (PRENDATE) en la tabla PROJECT. El programa debe recibir los dos valores junto con el valor de número del proyecto (PROJNO) para cada fila. EXEC SQL DECLARE UP_CUR CURSOR FOR SELECT PROJNO, PRSTDATE, PRENDATE FROM PROJECT FOR UPDATE OF PRSTDATE, PRENDATE;Ejemplo 5:  Este ejemplo denomina a la expresión SAL+BONUS+COMM como TOTAL_PAY SELECT SALARY+BONUS+COMM AS TOTAL_PAY FROM EMPLOYEE ORDER BY TOTAL_PAY

Page 22: Sentencia select

Ejemplos

Ejemplo 6: Determinación del número de empleado y el salario de los representantes de ventas junto con el salario medio y el número total de empleados de sus departamentos. También, listado del salario medio del departamento con el salario medio más alto.La utilización de una expresión de tabla común para este caso ahorra los recursos de proceso que implica la creación de la vista DIFO como una vista normal. Durante la preparación de la sentencia, se evita el acceso al catálogo para la vista y, debido al contexto del resto de la selección completa, la vista sólo considera las filas para el departamento de representantes de ventas.

Page 23: Sentencia select

Ejemplos

WITH DINFO (DEPTNO, AVGSALARY, EMPCOUNT) AS (SELECT OTHERS.WORKDEPT, AVG(OTHERS.SALARY), COUNT(*) FROM EMPLOYEE OTHERS GROUP BY OTHERS.WORKDEPT ), DINFOMAX AS (SELECT MAX(AVGSALARY) AS AVGMAX FROM DINFO) SELECT THIS_EMP.EMPNO, THIS_EMP.SALARY, DINFO.AVGSALARY, DINFO.EMPCOUNT, DINFOMAX.AVGMAX FROM EMPLOYEE THIS_EMP, DINFO, DINFOMAX WHERE THIS_EMP.JOB = 'SALESREP' AND THIS_EMP.WORKDEPT = DINFO.DEPTNO

Page 24: Sentencia select

Ejemplos

Ejemplo 7: Dadas dos tablas, EMPLOYEE y PROJECT, sustitución del empleado SALLY por el nuevo empleado GEORGE, asignación de todos los proyectos controlados por SALLY a GEORGE y devolución de los nombres de los proyectos actualizados.

Page 25: Sentencia select

Ejemplos

WITH NEWEMP AS (SELECT EMPNO FROM NEW TABLE (INSERT INTO EMPLOYEE(EMPNO, FIRSTNME) VALUES(NEXT VALUE FOR EMPNO_SEQ, 'GEORGE'))), OLDEMP AS (SELECT EMPNO FROM EMPLOYEE WHERE FIRSTNME = 'SALLY'), UPPROJ AS (SELECT PROJNAME FROM NEW TABLE (UPDATE PROJECT SET RESPEMP = (SELECT EMPNO FROM NEWEMP) WHERE RESPEMP = (SELECT EMPNO FROM OLDEMP))), DELEMP AS (SELECT EMPNO FROM OLD TABLE (DELETE FROM EMPLOYEE WHERE EMPNO = (SELECT EMPNO FROM OLDEMP))) SELECT PROJNAME FROM UPPROJ;

Page 26: Sentencia select

Ejemplos

Ejemplo 8: Recuperación de los datos de la tabla DEPT. Esos datos se actualizarán posteriormente con una actualización buscada, y estarán bloqueados cuando se ejecute la consulta. SELECT DEPTNO, DEPTNAME, MGRNO FROM DEPT WHERE ADMRDEPT ='A00' FOR READ ONLY WITH RS USE AND KEEP EXCLUSIVE LOCKS

Page 27: Sentencia select

Ejemplos

Ejemplo 9: Seleccione todas las columnas y filas de la tabla EMPLOYEE. Si otra transacción está actualizando, suprimiendo o insertando datos de forma simultánea en la tabla EMPLOYEE, la operación select esperará hasta que se complete la otra transacción para obtener los datos. SELECT * FROM EMPLOYEE WAIT FOR OUTCOME

Page 28: Sentencia select

RESUMEN:1. En SQL de Microsoft Jet 4.x y de la mayoría de los motores de bases de datos

relacionales, podemos definir un tipo de consultas cuyas filas resultantes son un resumen de las filas de la tabla origen, por eso las denominamos consultas de resumen, también se conocen como consultas sumarias.

2. Es importante entender que las filas del resultado de una consulta de resumen tienen una naturaleza distinta a las filas de las demás tablas resultantes de consultas, ya que corresponden a varias filas de la tabla orgen. Para simplificar, veamos el caso de una consulta basada en una sola tabla, una fila de una consulta 'no resumen' corresponde a una fila de la tabla origen, contiene datos que se encuentran en una sola fila del origen, mientras que una fila de una consulta de resumen corresponde a un resumen de varias filas de la tabla origen, esta diferencia es lo que va a originar una serie de restricciones que sufren las consultas de resumen y que veremos a lo largo del tema.

Page 29: Sentencia select

Conclusión

La finalidad de este trabajo, es dar una inducción en el tema de Diseño de Bases de Datos, a personas ajenas al tema. De manera que por ello los temas se presentan de una manera sencilla y sin tanta terminología.Nos muestra la gran importancia que para cualquier entidad, ya sea una empresa grande o chica, para el gobierno, hasta para la vida cotidiana de una persona tienen las bases de datos.Todo gira alrededor de ellas, todos los procesos del mundo están registrados en ellas, de ahí la importancia de llevar a cabo un diseño eficiente y libre de errores de las mismas.Siempre que una persona escucha hablar de bases de datos y de toda la terminología que las acompaña piensa que es un tema excesivamente complicado, y no es así, todo tiene un porque y lógica, es cosa de familiarizarse un poco con ellas (bases de datos).

Page 30: Sentencia select

BIBLIOGRAFIA O LINKOGRAFIA: https://es.wikipedia.org/wiki/SQL   http://www.ibm.com/support/knowledgecenter/es/SSEPGG_10.5.0/com.ibm.db2.lu

w.sql.ref.doc/doc/r0059224.html http://www.aulaclic.es/sqlserver/t_5_2.htm#ap_05_05   https://blogs.msdn.microsoft.com/apinedo/2007/01/24/mejorar-el-rendimiento-de-q

ueries-en-sql-server/   http://www.monografias.com/trabajos74/operaciones-sobre-base-datos/operacione

s-sobre-base-datos3.shtml   https://msdn.microsoft.com/es-es/library/cc467240(v=vs.71).aspx