0% encontró este documento útil (0 votos)
17 vistas44 páginas

Manual Practico SQL - 2

Manual Practico para SQL desde nivel Cero o Basico.

Cargado por

mjvillegas1973
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
17 vistas44 páginas

Manual Practico SQL - 2

Manual Practico para SQL desde nivel Cero o Basico.

Cargado por

mjvillegas1973
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
Está en la página 1/ 44
Lenguaje SQL Pigioa 1 “PARTE I-. 3 TEMA 1. EL LENGUAJE SQL Y LOS SISTEMAS DE GESTION DE BASES DE DATO: El lenguaje SQLs {Qué es una Base de Datos’ {Qué es un Sistema de Gestisn de Bases de Datos?.. ssenetinenenstneneenatinenennenenntennnnesienennenennenennsennesl Tipos de Bases de Dato El Modelo de Datos Relacional. Componentes Entidad, Atribut Relacién.. 4 5 5 7 sesernesee 8 & Qué podemos hacer con SQL? ssn Tipos de sentencias SQL... TEMA 2. ELEMENTOS DEL LENGUAJE. Constantes. Operadores aritméticos Operadores de concatenacién: Operadores de comparacién: Nota sobre la utilizacién de valores nulos. Operadores logicos: AND, OR y NOT, Precedencia o prioridad en los operadores Ejemplos de expresiones: Funciones predefinidas. Funciones numeéricas o aritmét Funciones de caracteres:, Funciones de fecha Funciones de conversibm: Otras funciones: Lenguaje SQL Consideraciones sobre la sintaxis utilizada... TEMA 3, CONSULTAS SENCILLAS. Consulta de los datos.. Consultas sencillas Condiciones de seleccién. Ordenacié TEMA 4. AGRUPAMIENTO Y FUNCIONES DE COLUMNA.... Seleccién de grupos. Lenguaje SQL Paina 3 -PARTE |- Tema 1. EL LENGUAJE SQL Y LOS SISTEMAS DE GESTION DE BASES DE DATOS. Autor: Fernando Montero El lenguaje S.Q.L. S.Q.L. significa lenguaje estructurado de consulta (Structured Query Language). Bs un Tenguaje estandar de cuarta generacién que se utiliza para definir, gestionar y manipular la informacién contenida en una Base de Datos Relacional. Se trata de un lenguaje definido por el estindar ISO/ANSI SQL que utilizan los principales fabricantes de Sistemas de Gestion de Bases de Datos Relacionales. En los lenguajes procedimentales de tervera generacién se deben especificar todos los pasos que hay que dar para conseguir el resultado. Sin embargo en SQL tan solo deberemos indicar al SGDB qué es lo que queremos obtener, y el sistema decidir cémo obtenerlo, Es un lenguaje sencillo y potente que se emplea para la gestién de la base de datos a distintos niveles de utilizacién: usuarios, programadores y administradores de la base de datos. ¢ Qué es una Base de Datos? Una base de datos esta constituida por un conjunto de informacién relevante para una empresa o entidad y los procedimientos para almacenar, controlar, gestionar y administrar esa informacién. Ademés, la informacién contenida en una base de datos cumple una serie de requisitos © acteristics Los datos estan interrelacionados, sin redundancias innecesarias. Los datos son independientes de los programas que los usan. Se emplean métodos determinados para incluir datos nuevos y para borrar, modificar o recuperar los datos almacenados. €Qué es un Sistema de Gestién de Bases de Datos? Lenguaje SQL iin 4 Un Sistema de Gestién de Bases de Datos (SGBD) es una aplicacién comercial que permite construir y gestionar bases de datos, proporcionando al usuario de la Base de Datos las herramientas necesarias para realizar, al menos, las siguientes tareas: © Definir las estructuras de los datos. ‘© Manipular los datos. Es decir, insertar nuevos datos, asi como modificar, borrar y consultar los datos existentes. ‘© Mantener la integridad de la informacién. ‘* Proporcionar control de la privacidad y seguridad de los datos en la Base de Datos, permitiendo s6lo el acceso a los mismos a los usuarios autorizados. Nota.~ La herramienta més difundida para realizar todas estas tareas es el lenguaje SQL. Algunos de los productos comerciales mas dif andidos son: * ORACLE de Oracle Corporation. © DB2 de BM. Corporation * SYBASE de Sybase Ine. * Informix de Informix Software Inc, * SQL Server de Microsoft Corporation, Tipos de Bases de Datos. Existen basicamente tres tipos de bases de datos: * Bases de Datos Jerirquicas. * Bases de Datos en Red. © Bases de Datos Relacionales. stas tltimas son, con diferencia, las mas difundidas y utilizadas en la actualidad debido a su potencia, versatilidad y facilidad de utilizacién, Se basan en el Modelo Relacional cuyas principales caracteristicas veremos a continuacién, Para gestionarlas se utiliza el lenguaje SQL El Modelo de Datos Relacional. Componentes. El Modelo Relacional fue enunciado por E.F. Codd. Sus principales componentes son: Lenguaje SQL Entidad. sun objeto acerea del cual se recoge informacién relevante. Ejemplo de entidades: EMPLEADO, CLIENTE, PRODUCTO. Atributo Es una propiedad o caracteristica de la entidad. Por ejemplo pueden ser atributos de la entidad PERSONA los siguientes: DNI, NOMBRE, EDAD, Tabla. Son los objetos de la Base de Datos donde se almacenan los datos. Ejemplo de tabla de empleados: EMP_NO |APELLID | OFICIO DIRECTO |FECHA_A | SALARIO |COMISIO | DEP_NO ° R L 7499 [ALONSO |VENDEDOR 7698 |20/02/e [140000 30 1 7521 [Lopez | EWPLEADO [7782 0370578 | 135000 To 1 7654 [MARTIN | VENDEDOR [7698 {28/09/68 | 150000 30 1 7698 [GARRIDO [DIRECTOR | 7839 Oi 70578 | 385000 30 1 77a2__ (MARTIN [DIRECTOR | 7a39 03/0678 |245000 10 Z 1 7a39 [REY PRESIDENT 17/1a78 | 600000 To E 1 7eaa [CALVO | VENDEDOR | 7696 0370378 180000 |o 30 1 7a76 [Gib BNALISTA [7782 0670578 [335000 20 2 7500 | simeNEa |EWPLEADO [7782 |24/03/8 [140000 20 3 Normalmente una tabla representa una entidad aunque también puede representar una asociacién de entidades. Las tablas estan formadas por filas y columnas: * Cada fila representa una ocurrencia de la entidad: Lenguaje SQL Pagina 6 Ejemplo: Un empleado si es una tabla de empleados, un departamento si es una tabla de departamentos, un cliente si se trata de una tabla de clientes, o un producto si es una tabla de productos. © Cada columna: Representa un_atributo o caracteristica de la entidad. Tiene un nombre y puede tomar por un conjunto de valores. Ejemplo: La tabla de empleados puede tener como columnas o atributos: numero de empleado, nombre, fecha de alta, salario,, Ejemplo de tabla de departamentos: DEP_NO | DNOMBRE TOCALIDAD Fila 1 -> [20 CONTABILIDAD | BARCELONA, Fila 2-> [20 TNVESTIGACTON | VALENCTA Fila3-> [Bo VENTAS MADRID Fila4-> [ao PRODUCCION SEVILLA Columna 1 Columna 2 A lo largo de este curso utilizaremos, ademés de las tablas de empleados y departamentos, las tablas de clientes, productos y pedidos cuyo contenido es el siguiente: TABLA DE CLIENTES: Columna 3 TABLA DE PRODUCTOS TABLA DE PEDIDOS Lenguaje SQL Piion 7 Relacion. Conexién que puede haber entre dos entidades. Por ejemplo: Cliente-> compra-> Producto Empleado-> pertenece a -> Departamento En nuestras tablas podemos observar las siguientes relaciones: - La tabla EMPLEADOS est relacionada con la tabla DEPARTAMENTOS através de la columna DEP_NO (numero de departamento) que se encuentra en ambas tablas. De esta forma podemos saber, por ejemplo que el empleado GIL pertenece al departamento 20. Y si vamos a la tabla departamentos comprobaremos que el departamento 20 es INVESTIGACION y se encuentra en VALENCIA. Por tanto, el empleado GIL pertenece al departamento de INVESTIGACION que est en VALENCIA. - La tabla EMPLEADOS también se relaciona consigo misma mediante las columnas EMP_NO y DIRECTOR. Cada empleado tiene un nimero de empleado (EMP_NO) y suele tener también un DIRECTOR. Esta tiltima columna contiene un nimero de empleado que, suponemos, es el director del empleado en cuestién. Asi podemos saber que REY es el director de GARRIDO y de MARTINEZ; y que el director de JIMENEZ es MARTINEZ, etcétera. - La tabla PEDIDOS se relaciona con PRODUCTOS mediante la columna PRODUCTO_NO y con CLIENTES mediante la columna CLIENTE_NO. De esta forma sabemos que el pedido mimero 1000 lo ha realizado el cliente INDUSTRIAS LACTEAS S.A. y que el producto solicitado es SILLA DIRECTOR MOD. BUFALO a un precio de 67000, eteétera. - La tabla CLIENTES se relaciona con EMPLEADOS por medio de la columna VENDEDOR_NO de la primera que hace referencia a la columna EMPLEADO_NO de la segunda. Asi cada cliente tendré asignado un vendedor Lenguaje SQL iin 8 EI SGBD velar porque todas las operaciones que se realicen respeten estas restrieciones manteniendo asi la integridad de la informacin. ¢ Qué podemos hacer con SQL? Todos los principales SGBDR incorporan un motor SQL en el Servidor de Base Datos, asi como herramientas de cliente que permiten enviar comandos SQL para que scan procesadas por el motor del servidor. De esta forma, todas las tareas de gestién de la Base de Datos (BD) pueden realizarse utilizando sentencias SQL. + Consultar datos de la Base de Datos. + Insertar, modificar y borrar datos. * Crear, modificar y borrar objetos de la Base de Datos. + Controlar el acceso a la informacién. + Garantizar la consistencia de los datos. Tipos de sentencias SQL. Entre los trabajos que se pueden realizar en una base de datos podemos distinguir dos tipos: definicién y manipulacién de datos. Por ello se distinguen dos tipos de sentencias SQL: ‘© Sentencias de manipulacién de datos. (Lenguaje de Manipulacién de Datos DML). Se utilizan para * Recuperar informacién. (SELECT) * Actualizar la informacién: * Afiadir filas (INSERT) + Eliminar filas (DELETE) * Modificar filas (UPDATE) ‘© Sentencias de definicién de datos. (Lenguaje de Definicin de Datos DDL). Se utilizan para: = Crear objetos de base de datos (CREATE) - Eliminar objetos de base de datos (DROP) - Modificar objetos de base de datos (ALTER) Lenguaje SQL icin 9 Lenguaje SQL Pisin 10 Tema 2. ELEMENTOS DEL LENGUAJE Autor: Fernando Montero Introduccion. Hay dos cuestiones a tener en cuenta a la hora de abordar esta unidad: 1° Se trata de una guia para que sirva de referencia 0 de consulta cuando se necesite a lo largo del curso. 2° Bn esta unidad, al igual que en la tiltima, se abordan cuestiones que, aunque estén definidas por el estindar ANSI/ISO SQL, no estin asumidas al 100% por todos los fabricantes, Por tanto, pueden existr ligeras diferencias de algunos productos con algunas de las especificaciones que se aqui se exponen. Tipos de datos. Las columnas de la base de datos almacenan valores que pueden ser de diversos tipos: numérico, cardcter, fecha, eteétera. A continuacién se indican algunos de los tipos mas utilizados, * CHAR (longitud) se utiliza para guardar cadenas de caracteres de longitud fija especificada entre paréntesis. El espacio no utilizado se rellena con blancos. * VARCHAR (longitud) almacena cadenas de caracteres de longitud variable cuyo limite maximo es especifica como longitud. * NUMBER(escala, precisién) se utiliza para guardar datos numéricos. La escala * DATE puede almacenar fechas. En algunos SGDBR tamt la hora en este tipo de datos. n se puede almacena La mayoria de los productos incluyen tipos de datos extendidos ¢ incluso algunos productos oftecen la posibilidad de que el usuario defina sus propios tipos. Todos estos tipos y posibilidades aparecen documentados en las especificaciones del producto, y escapan del objetivo de este curso Lenguaje SQL Pisin 11 Identificadores. Son nombres que sirven para identificar objetos de la base de datos: usuarios, tablas, columnas. El estindar define que pueden tener hasta 18 caracteres empezando con un caricter alfabético y continuando con caracteres numéricos y alfabéticos. En la prictica, algunos productos no permiten nombres de usuario de mis de ocho caracteres, pudiendo incluir hasta 30 6 mas en los nombres de tablas y columnas. Los ejemplos que aparecen en este curso se corresponden a la notacién utilizada por ORACLE y se ajustan a las especificaciones del estindar ANSI/ISO SQL. Operadores y expresiones. Las sentencias SQL pueden incluir expresiones constituidas por nombres de columna constantes, funciones y operadores, Por ejemplo a siguiente sentencia visualizard el apellido, la fecha de alta, el salario y la suma del salario con un complemento o gratificacién de 100000 Ptas. de todos los empleados. SQL> SELECT ap. + 100000 =ROM enpleados; Lido, fecha_alta, salario, sala: APELLIDO FECHA AL SALARLO SALARIO+100000 y2a/a1 600000 70000 GARRIDO 91/05/81 385000 485000 MARTINEZ 09/06/81 245000 345000 ALonso 20/02/81 140000 240000 paz 98/05/81 135000 235000 MARTIN 28/09/81 150000 250000 caivo 08/03/a1 180000, 280000 or 06/05/82 335000 435000 oD 24/03/83 140000 240000 9 filas seleccionadas Lenguaje SQL. isis 12 Para probar las consultas en Access seguiremos los siguientes pasos: Abrir la base de datos haciendo doble clic sobre ella. Aparece la ventana de la Base de datos, a continuacién elegimos el Objeto Consultas y doble clic en Crear una consulta en vista Diseno. Ver Figural. Figural. Vista de la base de datos. Crear una consulta. Cerramos la ventana Mostrar Tabla, a continuacién abrimos la vista SQL pulsando al sel botén St" de la barra de herramientas. Aparece la ventana para consultas SQL, en esa ventana escribimos la orden SELECT. Ver Figura 2: Figura 2. Vista SQL. Consulta de seleccién, Een ees , ! Para ver el resultado de la consulta pulsamos el botén Ejecutar consulta * de la barra de herramientas, al botén Vista hoja de datos FA, aparece el resultado de la SELECT, en la vista de hoja de datos. Ver Figura 3: Figura 3. Vista de hoja de datos. Resultado de la consulta. ‘APELLIDO [FECHA RITA) SALARIO | Expr BIALOWSOT ue! 14000024000 [seer censei e000 __>aso0n Maar zanye goo ——_—2sco00 [earano ounse; to asso [warez censei e000 e000 [ev vive exc rang [cava cane: inne secon ei cewsez eno ——aseo00 [Janiener 2anaes ono >to Ei regen tel Toile Para volver a la vista SQL desplegamos el botén Vista de la barra de herramientas y elegimos Vista SQL. Ver figura 4, Figura 4. Opciones de vistas. (ee |i Sa & [BE Viste Disefio IEE Vito oj de datos say Si pulsamos el botén Vista diseRo | *, sin desplegar la liste, aparece Ia vista de diseRo de la consulta, ver Figura 5. Esta es otra forma de realizar consultas sobre una tabla, s6lo basta con seleccionar el campo y arrastrarlo a las columnas inferiores. Figura 5. Vista disefio de consultas. este curso todas las consultas las realizaremos en modo vista SQL. Bueno pues si hemos entrado en la vista de disefo y luego volvemos a la vista SOL observamos que la SELECT ha cambiado automiticamente y aparece: SELECT empleados.APELLIDO, empleados.FECHA ALTA, empleados.SALARIO, salario+100000 AS sxpr1 FROM empleados; ‘Vemos que cada columna va acompafiada del nombre de la tabla y Access ademés asigna un alias a las expresiones (un nombre asociado para identificarlas). Estos cambios los hace de forma automitica, solo si cambiamos de la Vista diseno a la Vista SQL, 0 viceversa, Si pulsamos al botén Guardar “A Access guarda la consulta para una posterior utilizacién. Al guardarla la damos un nombre. Lenguaje SQL Pagina 13 Constantes. En SQL podemos utilizar los siguientes tipos de constantes: Constantes numéricas. Construidas mediante una cadena de digitos que puede llevar un punto decimal, y que pueden ir precedidos por un signo + 6 -. (Ej.: -2454.67) ‘También se pueden expresar constantes numéricas empleado el formato de coma flotante. (Ej: 34.345E-8), Constantes de cadena. Consisten en una cadena de caracteres encerrada entre comillas simples, (Ej.: ‘Hola Mundo’. Constantes de fecha. En realidad las constantes de fecha, en Oracle y otros productos que soportan este tipo, se escriben como constantes de cadena sobre las cuales se aplicarin las correspondientes funciones de conversién (ver TO_DATE en el epigrafe de funciones de conversién de este mismo capitulo) o bien, el gestor de la base de datos realizara una conversién automatica de tipo. (Ej.: 27-SEP-1997). Existe una gran cantidad de formatos aplicables a estas constantes (americano, europeo, japonés, eteétera) . Algunos productos como Oracle pueden trabajar también con FECHA. Y HORA en distintos formatos. Operadores aritméticos. Se emplean para realizar célculos. Son los ya conocidos: (+, -, * , /). Devuelven un valor numérico como resultado de realizar los célculos indicados. Algunos de ellos se pueden utilizar también con fechas: 1-2 Devuelve el niimero de dfas que hay entre las fechas f7 y 2 {+n Devuelve una fecha que es el resultado de sumar n dias a la fecha f. Lenguaje SQL Pagina 14 f—n Devuelve una fecha que es el resultado de restar n dias a la fecha f. Operadores de concatenacién: Para unir dos o mas cadenas se utiliza el operador de concatenacién [| Ej. buenos’ || dias’ daria como resultado ‘buenosdias! Operadores de comparacién: Igual = Distinto Menor que ‘Mayor que > Menor o igual < Mayor o igual > Otros operadores IS NULL, BETWEN, LIKI IN, etcétera Las expresiones formadas con operadores de comparacién dan como resultado un valor de tipo verdadero{falso (true/false). mplos: La expresién: APELLIDO = ‘JIMENEZ’ serd verdadera (true) en el caso de que el valor de la columna APELLIDO (suponemos que se trata de una columna) sea JIMENEZ’ y falsa (false) en caso contratio. La expresién: SALARIO > 300000 sera verdadera (true) en el caso de que SALARIO tenga un valor superior a 300000 y falsa (false) en caso contrario, Estos operadores de comparacin se utilizan fundamentalmente para construir condiciones de biisqueda en la base de datos. De esta forma se seleccionarén aquellas filas que cumplan la condicién especificada (aquellas filas para las que el valor de la expresién sea true). Por ejemplo, el siguiente comando seleccionard todas las filas de la tabla empleados que en la columna OFICIO aparezca el valor 'VENDEDOR’ Lenguaje SQL Pagina 15 SQL> SELECT * FROM EMPLHADOS WHERE OFICTO *VENDEDOR' ; 7498 ALONSO VENDEDOR 7698 20/02/81 140000 «40000 30 ERI orcera) IGELECT * FROM EMPLEADOS WHERE OFICIO ="VENDEDOR'; ! B = EMPHO | APELLIDO | OFICIO | DIRECIOR [FECHA ALIA] SALARIO | COMISION | DEP NO 7183 ALONSO VENDEDOR 7s aut, va0000 000 a Tet waRTIN VENDENOR jen net ——isooo0) aso a TaucALVO —_vENDEDOR Tee ceceet) i000 a a Ey rejae MLIT e Nota sobre la utilizacin de valores nulos En SQL la ausencia de valor se expresa como valor nulo (NULL). Esta ausencia de valor © valor nulo no equivale en modo alguno al valor 0. Cualquier expresin aritmética que contenga algin valor nulo retornaré un valor nulo. Asi, por ejemplo, si intentamos visualizar la expresién formada por las columnas SALARIO + COMISION de la tabla empleados la salida sera similar a la siguiente: SQL> SBLBCT APELLIDO, SALARTO, COMISION, SALARTO + COMISION ROW EMPLEADOS; APELLIDO SALARIO COMISTON SALARIO+COMISION 600000 GARRIDO 385000 MARTINEZ 245000 Lenguaje SQL Pagina 16 ALONSO 240000 40000 180000 OPEZ 35000 MARTIN 250000 160000 310000 cazvo 220000 0 e000 cin 335000 oIMENEZ, 40000 9 Eile seleccionadas En el ejemplo anterior observamos que la expresin SALARIO + COMISION retornara un valor nulo siempre que alguno de los valores sea nulo incluso aunque el otro no lo sea. También podemos observar que el valor 0 en la comisién retorna el valor calculado de la expresion. En SQL un valor nulo ni siquiera es igual a otro valor nulo tal como podemos apreciar en el siguiente ejemplo: SL» SELECT * FROM BNPLEADOS & La explicacién es que un valor nulo es indeterminado, y por tanto, no es igual ni distinto de otro valor nulo, Cuando queremos comprobar si un valor es nulo emplearemos el operador IS NULL (o IS NOT NULL para comprobar que es distinto de mulo): Sol» SELECT * PROM EMPLEADOS WHERE COMESION 18 NULL Como acabamos de ver los valores nulos en muchas ocasiones pueden representar un problema, especialmente en columnas que contienen valores numéricos. Para evitar estos problemas se suele utilizar: Lenguaje SQL Pagina 17 © Larestricein NOT NULL (es una orden de definicién de datos) que impide que se incluyan valores nulos en una columna, ‘© La funcién NVL (que veremos en detalle mas adelante) que se utiliza para devolver un valor determinado en el caso de que el valor del argumento sea nulo. Por ejemplo NVL(COMISION, 0) retornard 0 cuando el valor de comision sea nulo. Operadores logicos: AND, OR y NOT. Ya hemos indicado que los operadores de comparacién devuelven un valor ligicos de tipo verdadero/falso (true/false). En ocasiones se necesita trabajar con varias expresiones de comparacién (por ejemplo cuando queremos formar una condicién busqueda que cumpla dos condiciones, eteétera) en estos casos debemos recurrir a los operadores ligicos AND, OR y NOT Supongamos que queremos consultar los empleados cuyo OFICIO = 'VENDEDOR' y que ademas su SALARIO > 150000. En este caso emplearemos el operador Igico AND. Este operador devolverd el valor true cuando los dos operandos o expresiones son verdaderas. Simplificando podemos decir que se utiliza cuando queremos que se cumplan las dos condiciones. Ejemplo: SQL> SBLBCT * FROM EMPLEADOS WHERE OPICTO = ‘VENDEDOR! AND SALARIO > 150000; Cuando lo que queremos es buscar filas que cumplan alguna de las condiciones que se indican emplearemos el operador OR. Este operador devolverd el valor true cuando alguno de los dos operandos o expresiones es verdadero (cuando se cumple la primera condicién, o la segunda o ambas). Ejemplo: SQL> SELECT * FROM EMPLEADOS WHERE OFECYO » 'VENDEDOR! OR SALARIO > 150000; 7782 MAR’ 7839 09/06/41 10 Lenguaje SQL Pagina 18 El operador NOT se utiliza para cambiar el valor devuelto por una expresién logica 0 de ‘comparacién, tal como se ilustra en el siguiente ejemplo: SQb> SELECT * FROM EMPLEADOS WHERE NOT OFTCTO = 'VENDEDOR'; Observamos en el ejemplo anterior que han sido seleccionadas aquellas filas en las que no se cumple la condicién de que el oficio sea vendedor. Podemos formar expresiones légicas en las que intervengan varios operadores logicos de manera similar a como se haria con expresiones aritméticas en las que intervienen varios operadores aritméticos. Ejemplos Sou» sect + xor - OR! AND SALARIO > 150000; 7782 NARTINE2 DIRECTOR 7939 09/06/81 245000 0 Sls SELECT * FROM EMPLEADOS WHERE OFICIO - ‘VENDEDOR' AND SALARIO > 150000 OR DEP_NO = 20; 7844 CALVO VENDEDOR re98 08/09/82 180000 ° 30 En todo caso deberemos tener en cuanta la prioridad o precedencia del operador ya que puede afectar al resultado de la operacién. A continuacién se detallan las tablas de valores de los operadores Iégicos NOT, AND y OR, teniendo en cuenta todos los posibles valores incluida la ausencia de valor (NULL). Lenguaje SQL. Pigion_ 19 [AND [TRUE [FALSE NULL [TRUE [TRUE "ALSE ULL. FALSE [FALSE "ALSE FALSE [NULL NULL "ALSE ULL for [RUE FALSE [NULL UE [TRUE TRUE TRUE sALSE [TRUE FALSE NULL [NULL [TRUE ULL ULL OT [PRUE [FALSE ULL FALSE [TRUE ULL Podemos establecer: El operador AND devolverd true cuando los dos operandos sean verdaderos, y false cuando algin operando sea falso; en el caso de que ambos operandos tengan valor Null devolvera Null y cuando ningim operando es False y algin operando es Null también devolvera Null. sl operador OR devolverd true cuando alguno de los operandos sea verdadero (con independencia de que el otro sea verdadero, falso 0 nulo); false cuando los dos operandos sean falsos; y null en los demas casos (cuando ningin operando sea verdadero y alguno sca nulo), El operador NOT devuelve true cuando el operando es falso, y false cuando el operando es true; cuando el operando es nulo devuelve mull Precedencia o prioridad en los operadores. El orden de precedencia 0 prioridad de los operadores determina el orden de evaluacién de los operandos de una expresin. Por ejemplo, la siguiente expresién 124+ 24/6 Dard como resultado 16 Ya que la divisi6n se realizard primero. La tabla siguiente muestra los operadores disponibles agrupados y ordenados de mayor a menor por su orden de precedencia. Lenguaje SQL Pagina 20 Prioridad | Operador Operacion re **, NOT exponenciacién, negacién x +f multiplicacién, division ° Ae suma, resta, _coneatenacién. y =, <5, 1S | Comparacién. NULL , LIKE, BETWEEN , IN s | AND conjuncién e OR inclusién Esta es la prioridad establecida por defecto. En la expresién anterior, si queremos que la suma se real antes que la di fe puede cambiar utilizando paréntesis. i6n, lo indicaremos: (22 +24) / 6 En este caso el resultado sera: 6 Los operadores que se encuentran en el mismo grupo tienen la misma precedeneia, En estos casos no se garantiza el orden de evaluacién. Si queremos que se evaliien en algin orden concreto deberemos utilizar paréntesis. NOTA: un error relativamente frecuente consiste en utilizar expresiones del tipo: 100000 >= SALARIO. 100000 Este tipo de expresiones es ilegal y provocaré un error ya que al evaluar la primera parte de la expresin se sustituiré por un valor légico de tipo true/faise y este resultado no puede compararse con un valor numérico. La expresin correcta seria: SALARIO BETWEEN 100000 AND 200000 O bien: SALARIO >= 100000 AND SALARIO <= 200000 Ejemplos de expresiones: SALARIO + COMISTON -> Devuelve un valor numérico como resultado de sumar al salario del empleado la comisién correspondiente, Lenguaje SQL Pagina 21 EMPLEADOS.DPT_NO = DEPARTAMENTOS.DPT_NO -> Devuelve verdadero o falso dependiendo de que el mimero de departamento del empleado seleccionado coincida con el nimero de departamento del departamento seleccionado FECHA_AL BETWEEN ‘01/01/80’ AND ‘01/10/82’-> Devuelve verdadero si la fecha de alta del empleado seleccionado se encuentra entre las dos fechas especificadas. COMISTON IS NULL -> dard como resultado verdadero si la comisién del empleado seleccionado no tiene ningtin valor. Funciones predefinidas. En SQL disponemos de funciones predefinidas que devuelven un valor en funcién de un argumento que se pasa en la llamada. Algunas de estas funciones no se pueden utilizar en Access o se llaman de otra manera. mplos: Liamada ala funcién | Valor devuelto | Explicacién. ABS(-5) 5 el valor absoluto del mimero. ROUND(8.66, 0) 9 el nimero redondeando a cero decimales TRUC(8.66, 0). 8 el mimero truncando los decimales. SIGN(8.88). Em Acces se | ya que el nimero es mayor de 0 INITCAP(‘hola’). ‘Hola’ cadena con el primer caracter en maytsculas. UPPER(‘hola’). “HOLA’ cadena en mayisculas SUBSTR(‘hola’, 2, 2). En | ‘ol” subcadena tomando dos posiciones Acces se llama MID()_ desde la posicién 2. SYSDATE. 01/02/00 la fecha del sistema USER. CURSOSQL el nombre del usuario en nuestro caso el que se indica, Lenguaje SQL Pagina 22 Cabe subrayar que la funcién no modifica el valor del argumento sino que devuelve un valor creado a partir del argumento que se le pasa en la Hamada. A continuacién se indican las funciones predefinidas més utilizadas: Funciones numéricas o arit Funcién Valor que devuelve. ABS(num) Valor absoluto de mum. MOD(numi, num2). Resto de la divisién entera. En Access se pone: num! MOD num2 POWER(num!, num2). Devuelve num! elevado a num2. En Access se pone: num * num2, ROUND(num1, num2) Devuelve num! redondeado a num2 decimales. SIGN(num). En Access se lama Si num <0 devuelve -1, si num = 0 devuelve SGNO. 0, sinum > 0 devuelve 1. SQRT(num). En Access se Hama SQR. | Raiz cuadrada de num TRUNC(num1, num2). Devuelve num! truncado a num? decimales. No se encuentra en Access Si se omite num2, a 0 decimales. Funciones de caracteres: Funcién Valor que devuelve. ASCII). Codigo ASCII del cardcter ¢/ CHR(num) Caracter correspondiente al eédigo indicado por num del juego de caracteres utilizado CONCAT(cI,c2). Coneatena ¢/ con c2. Es equivalente al operador Devuelve c/ poniendo en maytiscula la primera letra de cada palabra de la cadena y el resto en minasculas. Lenguaje SQL Pagina 23, LENGTH(c/) Longitud de c/, LOWER(c/) La cadena c/ en minisculas. PPER(c/) La cadena c/ en mayuisculas. LPAD(c/, n, €2) cl se visualiza con longitud n y justificado a la derecha. Si cl ") . Devuelve "EJEMPLITO". TO_DATE(fecha, formato) ]Devuelve fecha a partir de una cadena segdn las 5 especificaciones de formato indicadas antes. Po Ej: TO_DATE(27-OCT-95’, 'DD-MON-YY’) CDATE(fecha), y la Ej en Access: CDate("12. mayo 96"), devuelve 12/5/96 convierte al tipodd/mm/aa. Otras funciones: Funcién Valor que devuelve. GREATEST (lista de valores) Valor mas grande de una lista. No se encuentra en Access LEAST (lista de valores) Valor més pequefio de una lista No se encuentra en Access NVL(exp!, exp2) Si exp! es nulo devuelve exp2. Sino devuelve En Access se llama NZ(expl, exp2)_|°%P!- Lenguaje SQL Pagina 26 USER Devuelve el nombre del usuario actual. UID No se encuentra en Access usuario actual Esta Devuelve el nimero de identificacién del ncién, igual que la anterior, no tiene argumentos. En los préximos temas se estudiarén todas estas finciones con diversos ejemplos y ejercicios. Consideraciones sobre la sintaxis utilizada. Para especificar la sintaxis el estandar SQL ANSI/ISO utiliza una notacién muy precisa y completa pero presenta serios problemas didaeticos especialmente para personas que se inician en este lenguaje. Por esta razén hemos utilizado para especificar los formatos una notacién més sencilla y asequible primando el aspecto didéctico, A este respecto procede realizar las siguientes puntualizaciones: Las palabras reservadas de SQL aparecen en maytisculas. Los nombres de objetos (tablas, columnas, eteétera) suelen aparecer en minisculas. La notacién lista_de elementos especifica una lista de elementos separados por comas. La barra vertical ( |) indica la eleccién entre dos elementos. Las aves ({ }) indican la eleccién obligatoria entre varios elementos. Los corchetes ([ ]) encierran un elemento opcional. El punto y coma ( ; ) que aparece al final de cada comando, en realidad no forma parte de ja sintaxis del lenguaje SQL pero suele ser un elemento requerido por las herramientas de cliente para determinar el final del comando SQL y enviar la 6rden (sin el ;) al servidor. Lenguaje SQL Pagina 27 Tema 3. CONSULTAS SENCILLAS. Autora: Maria Teresa Mifiana Consulta de los datos. Realizar una consulta en sou consiste en recuperar u obtener aquellos datos que, almacenados en filas y columnas de una o varias tablas de una base de datos, cumplen unas determinadas especificaciones. Para realizar cualquier consulta se utiliza la sentencia SELECT, Las primeras consultas van a ser escritas con un formato inicial de la sentencia SELECT, que se ird completando en temas siguientes. Formato inicial de la sentencia sELEcT SELECT 2?2ALL 7222222422272222222222222222222279 ®DISTINCT? ?lista de_elementos? >?7FROM Lista de tablas 2?797?277922722722272972> >22222222222222222222227222222222722222227222227> ‘WHERE condicién_de_seleccién? “PORDER BY especificaciones para_ordenar? ‘Tablas utilizadas: ‘TABLA DE EMPLEADOS 7654 MARTIN -VENDEDOR 7698 2a/09/a1 150000 30 7900 JIMENEZ EMPLEADO rez 24/03/83 1400) 20 TABLA DE DEPARTAMENTOS Lenguaje SQL. igina 28 30 vawmas wapRto Consultas sencillas. La consulta mas sencilla consiste en recuperar una 0 varias columnas de una tabla. SELECT 7?7ALL 7? #222222222722722222? PDISTINCT? 7lista_de_elementos? >PPFROM tabla ?777777722?27PP22PPPP?PPP?PP?IP??? Pas - lista_de elementos: nombres de columnas o expresiones obtenidas a partir de ellas, y separadas por comas, que son seleccionadas de cada fila para conocer sus valores. - #: selecciona todas las columnas de la tabla. = ALL: obtiene los valores de todos los elementos seleccionados en todas las filas, aunque sean repetidos. Es la opcién por detecto. - rsrzncr: obtiene los valores no repetidos de todos los elementos. - FROM tabla: indica el nombre de la tabla en la que se realiza la consulta. Si la tabla no es de la propiedad del usuario, aunque tenga permiso de acceso, deberd usarse con nombre_propietario.tabla. Alias de tabla, sou. permite asignar més de un nombre a la misma tabla, dentro de Ja misma consulta. Usar alias para una tabla puede es opcional cuando su finalidad consiste en simplificar su nombre original, y obligatorio en consultas cuya sintaxis lo requiera, SELECT . FROM enpleados & alias de empleados > e Lenguaje SQL Pagina 29) Ejemplos. 1, Obtener todos los empleados de la tabla empleados con todos sus datos. SQL> SELECT * PROM empleados; ° SQL> SELECT ALL FROM empleados; SARRIDO DIRECTOR 339 01/05/81 385000, 30 MARTINRZ DIRECTO 338 08/06/8 5000 10 2. Obtener los niimeros de empleados, los apellidos y el nimero de departamento de todos los empleados de la tabla empleados. SQl> SELECT emp no, apellido,dep no FROM empleados; MARTIN 30 Alias de columna, Los titulos 0 cabeceras que muestra la salida de una consulta para las columnas seleccionadas, se corresponden con los nombres de las columnas de las tablas. Para mejorar su legibilidad y estética se utilizan los alias de columna. El alias se escribe detrés de la columna, separado de ella al menos por un espacio. Si el alias comprende mas de una palabra deberd ir dentro de dobles comillas. Lenguaje SQL igi 30 SQL> SELECT emp_no “N* Empleado”, apellido, dep_no Departamento 3. Obtener el total a cobrar por cada empleado, suponiendo que se trata de sumar a su salario la correspondiente comisién, si la tuviera. SQL> SELECT apellido FROM empleado: alariotcomision “Importe Total” GARRIDO En esta salida, algunos empleados no llevan importe. El motivo es tener NULL (sin informacién) en su comisién, y por lo tanto no se realiza la operacién suma. Para solucionarlo hemos de recurrir al uso de funciones. Sugerencia- Ver FUNCTONES (En MATERTALES) El ejemplo anterior deberia resolverse con la funcién wv, que transforma la ausencia de informacién al valor que se le especifique, tal como sigue: SQL> SELECT apellido, FROM empleado: lario+NVL(comision,0) “Importe Total” La nueva salida se APELLIDO Importe Total 120000 135000 310000 Lenguaje SQL Pagina 31 GARRIDO 385000 MARTINEZ 245000 00000 180000 335000 140000 4, Concatenar cada empleado con su oficio mediante “es”. SQL> SELECT CONCAT(CONCAT(apellido, * es “Empleado y su oficio” FROM empleados; ,oficio) empleado y su off GARRIDO es DIRECTOR MARTINEZ es DIRECTOR REY ea PRESIDENTE CALVO es. VENDEDOR GIL es ANALISTA JIMENEZ es EMPLEADO 5, Obtener la fecha de alta de cada empleado con el nombre del mes completo y en castellano, SQL> SELECT TO_CHAR(FECHA_ALTA, ‘ddmonthyy’ ‘NLS_DATE_LANGUAGE=Spanish’) ‘Fecha de alta” FROM empleados; 2ofebrero a2 osmayo a2 28septienbres: oimayo 8 osjunio 8 Linovienbre 81 o8septicnbres: osmayo 22 2amarzo a3 Lenguaje SQL Pagina 32 ‘Tabla puan. En sQu, toda peticién de datos se escribe mediante una consulta, y cualquier consulta debe realizarse sobre una tabla, Cuando la consulta consiste en obtener los valores de una determinada funcién aplicada a una constante, no a una columna de una tabla, o en acceder a la fecha del sistema, la tabla que se utiliza en la cldusula FRoM es la tabla DUAL, disponible a todo usuario, Ejemplo, Calcular la quinta poteneia de 5. SQL> SELECT POWER (5,5) * 5 Blevado a 5" FROM DUAL; 5 Elevado a 5 3125 Condiciones de seleccién. Para seleccionar las filas de la tabla sobre Jas que realizar una consulta, la cléusula WHERE permite incorporar una condicién de seleccién a la sentencia SELECT Formato de consulta con condicién de seleccién SELECT P22RLL 2222722422222722272222222222722225 PDISTINCT? ?1ista_de_elementos? >??FROM Ji ta_de_tablas 72772272772227777277772s >292222222222922222222292222222722922792222222299) 2WHERE condicién de seleccién? Lenguaje SQL iia 3 Condicién_de_seleccién: expresién formada por columnas de la tabla, constantes, funciones, operadores de comparacién y operadores légicos, que debera ser cierta para que una fila de la tabla sea seleccionada como parte de la salida obtenida por la consulta - Operadores de comparacién, ~aritméticos: =, >, < ~ de caracteres: L1xe, mascaras (%, _) = légicos: 1m, BETazEN - Operadores logicos-booleanos: AND, oR, No? . Permiten construir condiciones de seleccién compuestas. El uso de paréntesis ayuda a escribir correctamente, a mejorar la legibilidad de las condiciones compuestas y a establecer prioridades de evaluacién para los operadores, Ejemplos. 1. Obtener la lista de los empleados vendedores, con su nombre, salario y comisién. SQL> SELECT apellido, salario,comision eados WHERE UPPER (of icio) = ‘VENDEDOR’ ; APELLIDO SALARTO COMISION ALONSO 140000 40000 MARTIN 150000 160000 CALVO 180000 ° uppEr(expresién_alfabética) obtiene la expresién_alfabética en mayisculas. 2. Seleccionar aquellos empleados cuyo apellido empiece por “M” y su salario esté comprendido entre 100,000 y 200.000 pesetas. Visualizar su mimero de empleado, apellido y departamento. SQL> SELECT emp_no FROM empleados WHERE (apellido LIKE ‘M’) AND (salario >=100000 AND salario<= 200000); Empleado" ,apellido,dep_no Depa: we mpleado APELLIDO DEPARTAMENTO 7654 MARTIN Lenguaje SQL Pagina 34 En Acces: SELECT EMP_NO AS N°EMPLEADO ,APELLIDO, DEP_NO AS DEPARTAMENTO. FROM EMPLEADOS WHERE (APELLIDO LIKE 'M#') AND (SALARTO >=100000 AND SALARTO<= 200000) ; El operador ure usado con % indica que la comparacién del apellido se realiza s6lo en el primer cardeter, que debe ser “M”.E1% sustituye al resto de los caracteres, En Access NO se utiliza el caracter %, se utilizan los siguientes caracteres comodin: — El signo de interrogacién (?) para sustituir un cardcter por cualquiera en esa posicién, Por ejemplo 2a busca aquellos valores que empiecen por cualquier letra y la segunda sea una "a" — El asterisco (*) para representar cualquier mimero de caracteres situados en la misma posicién que el asterisco. Por ejemplo criterio Resultado LIKE ‘Be’ Departamentos cuyo nombre de localidad empieza por B LIKE ‘M???2D’ Departamentos cuya localidad empieza por M, seguido de 4 letras cualquiera y terminan en D. (MADRID, por ejemplo) DIKE ‘2Ae" Departamentos cuya localidad empieza por cualquier letra, le sigue una A u luego cualquier niimero de caracteres, LIKE ‘B*0 Departamentos cuya localidad empieza por B y termina en O, LIKE ‘+0! Departamentos cuya localidad termina en O. LIKE ‘As Todos los departamento que contengan una A en el nombre de la localidad, El operador BETWEEN comprueba si una expresién toma valores dentro del intervalo que le acompaiia El mismo ejemplo podria haberse eserito: SQL> SELECT emp_no "N° Empleado” ,apellido,dep_no Departamento Lenguaje SQL igina 35 OM empleados WHERE (apellido LIKE ‘m’) AND salario BETWEEN 100000 AND 200000; 3. Seleccionar aquellos empleados cuyo apellido incluya una “z” en el segundo caracter, SQh> SELECT emp_no °N* Empleado” ,apellido,dep_no Departamento FROM empleados WHERE (apellido LIKE *_2%/) ; ninguna fila seleccionada El operador urxe usado con *_* indica que ocupa la posicién de un cardeter. 4, Seleccionar los empleados existentes en los departamentos 10 y 30, SQL>SELECT emp_no “N* Enpleado" ,apellido, dep_no Depa: FROM empleados SQL>SELECT emp_no "N’ Empleado",apellido,dep_no Depa’ FROM empleados WHERE dep_no IN(10,30); N* Bmpleado APELLIDO DEPARTAMENTO 7499 ALONSO 30 7521 LOPEZ 10 7654 MARTIN 30 7698 GARRIDO 30 7782 MARTINEZ, 10 7839 REY 10 7244 CALVO 30 El operador 1x comprueba si una determinada expresién toma alguno de los valores indicados entre paréntesis. Lenguaje SQL icine 36 Ordenacion. Para obtener la salida de una consulta clasificada por algin criterio o especifi sentencia SELECT dispone de la cldusula onDER By para ordenar. Formato de consulta con ordenacién SBLECT P22RLL 222222242272292229229222222222295 PDISTINCT? ?1ista_de_elementos? SP?FROM ista de tablas 277277277777722722272277> WHERE condicién_de_seleccién? 2ORDER BY especificacién_para_ordenar? Especificacién_para_ordenar : lista de columnas o expresiones obtenidas a partir de ellas, separadas por comas, y cada una de ellas con indicacién del tipo de ordenacién, Tipo de ordenacién: asc (ascendente) 0 Desc (descendente). Por omisién es asc. Los nombres de columnas de la especificacién_para_ordenar pueden ser sustituidos por el némero de orden que ocupan en la tabla. Si la especificacién_para_ordenar contiene més de una columna o expresién, el orden ‘en que se realizan las clasificaciones es de izquierda a derecha. Ejemplos. 1, Obtener relacién alfabética de todos los empleados con todos sus datos. SQL>SELECT * FROM empleados ORDER BY apellido; Lenguaje SQL. Pagina 37 2. Obtener clasificacién alfabética de empleados por departamentos. SQL>SELECT * FROM empleados ORDER BY dep_no, apellido; ° SQLSSELECT * FROM empleados ORDER BY 8,2 7639 1348 1688 7876 7300 7521 axoNsO cauvo aRRIDO ou ‘SiMe Loree, ‘VENDEDOR DIRECTOR ANALISTA EMPLEADO EMPLEADO 7638 7688 7839 2 2 2 20/02/61 8/09/81 02/05/81 06/05/82 24/03/83 oayos/ex 28/09/82, reo000 aes000, 335000, 140000, 135000, 30 30 30 20 20 10 3, Obtener los datos de los empleados clasificados por oficios y en orden descendente de salarios. SQL>SELECT * FROM empleados MP_NO APELUIDO OFICIO 7876 1698 77482 7300 ORDER BY oficio,s em GARRIDO MARTINES, ANALISTA DIRECTOR DIRECTOR 2 7839 7839 2 2 DIRECTOR FECHA_AL 06/05/82 03/05/01 03/os/ex 24/03/83 oayos/ex anya/ex 08/o9/ex 28/09/81 20/02/82 ario DESC; SALARIO COMISION 335000, 385000, 245000, 140000, 135000, DeP_No Lenguaje SQL Tema 4. AGRUPAMIENTO Y FUNCIONES DE COLUMNA. Autora: Maria Teresa Miana SQL permite agrupar las filas de una tabla, seleccionadas en una consulta, y obtener salidas, calculadas a partir de los grupos formados. Elcriterio para agrupar suele ser una de las columnas de la tabla. Sino se especifica ninguno, las filas de la tabla, seleccionadas en la consulta, forman un grupo tinico. Las salidas obtenidas son los resultados de aplicar funciones de columna a los grupos de filas. Funciones de columna FUNCIONES DESCRIPCION DE LA FUNCION ‘SUM(expresién/DISTINCT nombre de columna) Caleula la suma de valores de la expresién 0 de la columma indicada dentro del paréntesis, teniendo en cuenta que la cléusula DISTINCT omite valores repetidos. ANG(expresién/DISTINCT nombre__de_colunna) Calcula el valor medio de la expresion que se indique dentro del paréntesis, teniendo en cuenta ue los valores NULL no son incluidos. MIN(expresion) MAX(expresién) COUNT( nombre_columna/DISTINCT nombre de_columna) cOUNT(?) STDDEV(expresién) Devuelve el valor minimo de la expresién que le acompatia Devuelve el valor maximo de la expresién que le acompatia. Cuenta el nimero de valores de datos que hay en tuna columna, sin incluir los valores NULL. Cuenta todas las filas de Ia tabla, sin considerar que en algunas columnas existan valores NULL, Calcula la desviacién tipica para los valores de la expresion, VARIANCE ren Calcula la varianza para los valores de la expresion. Los valores NULL no intervienen en las funciones de conjunto o de columna Formato de consulta con funciones de columna (sin criterio de agrupacién) Pagina 38 Lenguaje SQL Pagina 39) LECT funcion! FROM tabla (WHERE condicién] ; columna Ejemplos. 1, Obtener la masa salarial mensual de todos los empleados. SQL>SELECT SUM(salario) FROM empleados; SUM (SALARTO} 2310000 2. Obtener los salarios maximo, minimo y la diferencia existente entre ambos. SQLSSELECT MAX (salario) ,MIN(salario) ,MAX(salario) -MIN(salario) FROM empleados; MAX(SALARTO) MZ! (SALARIO) MAX (SALARIO) -MIN(SALARTO) 600000 135000 465000 3. Obtener la fecha de alta mas reciente. SQLSSELECT MAX (fecha alta)"Fecha alta” FRO” empleados; Fecha Al 24/03/83 4. Calcular el salario medio de los empleados. SOL>SELECY AVG(salario) “Salario medio" FROM empleados; Salario medio 256666, 67 Lenguaje SQL igi 40 ‘A veces no da el mismo resultado que: SQLSSELECT SUM(salario) /COUNT(*) FROM empleados; porque counr cuenta el nimero de valores de datos que hay en una columna, sin incluir los valores Nut, y por el contrario, counr(*) cuenta todas las filas de la tabla, sin considerar que en algunas colummas existan valores NUE». Por lo general, las funciones de columna se utilizan sobre més de un grupo de filas. La cléusula GRoup BY establece el criterio de agrupacién. Formato de consulta con funciones de columna (con criterio de agrupacién) SELECT funciones de _columna ??227227?222222?22??> >22RROM lista de tablas 22722722272272222292722?> dicién de seleccién? 2GROUP BY lista de columnas para agrupar? PORDER BY especificaciones para_ordenar? Ejemplos. 1. Obtener los salarios medios por departamento. SQL*SELECT dep_no Departamento, AVG(salario) “Salario Medio” FROM empleados GRouP BY dep_no; DEPARTAMENTO Salario Medio 10 326666, 67 20 237500 30 213750 2. Obtener cudntos empleados hay en cada departamento, SQLSSELECT dep_no Depa FROM empleados GRouP BY dep_no; mento, COUNT(*) "N° de Fmpleados” Lenguaje SQL Pisin 4 DEPARTAMENTO N° de Empleados 10 20 2 30 4 3. Obtener el empleado que mayor salario tiene dentro de cada oficio, exeluyendo all presidente. SQL>SELECT MAX(salario), oficio FROM empleados WHERE UPPER(oficio) <>‘PRESIDENTE’ GROUP BY oficio; MAX(SALARTO) OFT 335000 ANALISTA 385000 DIRECTOR 140000 EMPLEADO 180000 VENDEDOR Seleccién de grupos Del mismo modo que la cléusula wezRe permite la seleccién de filas en una sentencia SELECT, la cldusula HAVING permite realizar una seleccién sobre los grupos obtenidos por la clausula Grour By. Formato de consulta con seleccién de grupos Lenguaje SQL Pagina 42 si CT funciones_de_columna ?277227227272272772?> >2?EROM lista de_tablas ??7222277222277222727222> DWHERE condicién_de_seleccién? GROUP BY ligta de columnas para_agrupar? 22222222222222222222222272222222722222222222> ?HAVING condicién de seleccién? nes_para_ordenar? RDER BY especificaci La condicién de seleccién podré estar formada por constantes, columnas de agrupacién y fanciones de columna. Ejemplos. 1, Seleccionar los oficios que tengan dos o mis empleados: SQL> SELECT oficio, COUNT (+) FROM empleados GROUP BY oficic HAVING COUNT (*) >= 2; oFrcro count (#) DIRECTOR 2 EMPLEADO 2 \VENDEDOR 3 La cliusula HAVING actia como un filtro sobre filas agrupadas, a diferencia de la cléusula WERE que actia sobre las fas antes de la agrupacién. 2. Seleccionar los oficios que tengan dos 0 més empleados, cuyo salario supere las 140000 ptas, SQl> SELECT oficio, COUNT (*) FROM empleados WHERE salario > 140000 GROUP BY oficio HAVING COUNT (*) >= 2; cro co T+) DIRECTOR 2 \VENDEDOR 2 Qu realiza la seleccién de grupos en el proceso siguiente: Lenguaje SQL igine 43 - A partir de la tabla sobre la que se realiza la consulta, la clausula wieRs acta como un primer filtro que da como resultado una tabla interna cuyas filas cumplen la condicién especificada en el wHzRE. - La cléusula cour ay produce la agrupacién de las filas de la segunda tabla, dando como resultado una tercera tabla, - La cldusula Havine acti filtrando las filas de la tercera tabla, segin la condicién de seleccién especificada, dando como resultado la salida de la consulta.

También podría gustarte