Licenciatura en Documentación: Bases de datos documentais Curso El lenguaje SQL

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Licenciatura en Documentación: Bases de datos documentais Curso El lenguaje SQL"

Transcripción

1 El lenguaje SQL El paso de la gestión automatizada de información basada en ficheros a la gestión basada en el uso de Sistemas Gestores de Bases de Datos (SGBDs) trajo consigo importantes cambios en el modo de diseñar, construir e utilizar aplicaciones informáticas. Uno de los cambios más significativos fue la aparición de los denominados lenguajes de consulta: muchos de los primeros SGBDs estaban acompañados de uno o más lenguajes desarrollados específicamente para el acceso a la información contenida en las BDs bajo su control. La idea es que esos lenguajes proporcionan una interfaz sencilla que simplifica el acceso a los datos, descargando buena parte de la responsabilidad (y la complejidad) del mismo sobre el propio SGBD. La auténtica diferencia de esos lenguajes con respecto a otros lenguajes de programación es su carácter declarativo: en lugar de especificar paso a paso las operaciones a realizar (la esencia de los lenguajes de programación imperativos), estos lenguajes permiten especificar únicamente el resultado deseado; dejando al SGBD la tarea de decidir la forma más adecuada de conseguir ese resultado. Esto convierte a los lenguajes de consulta de BDs en auténticos lenguajes de alto nivel; y los hace adecuados, por otro lado, para solucionar el problema de la dificultad de acceso a los datos: necesidades de información inesperadas y puntuales pueden ser resueltas de forma rápida y flexible. Uno de los primeros lenguajes de consulta de BDs fue el Structured Query Language (más conocido por sus siglas SQL), desarrollado por la compañía IBM para SYSTEM R, un SGBD relacional experimental. Con el paso del tiempo, SQL se ha convertido en un lenguaje estándar: prácticamente todos los SGBD relacionales del mercado lo soportan, en mayor o menor medida. De hecho, SQL cuenta ya con varias versiones, resultantes de sucesivas revisiones, datando la versión más reciente del año 1999 (de ahí esta sea conocida como SQL99) SQL es soportado por los SGBDs relacionales porque está fuertemente vinculado al modelo relacional: el SGBD da respuesta a cada consulta SQL por medio de la ejecución de una secuencia de operaciones del álgebra relacional (el álgebra con los correspondientes operadores - que el modelo relacional incluye para permitir la manipulación de las relaciones). Los SGBDs suelen incluir entre las herramientas que los acompañan un intérprete de SQL: se trata de un programa informático capaz de recibir y evaluar consultas SQL, conectándose con la BD adecuada, y presentando al usuario los resultados obtenidos. Y los SGBDs también admiten que los programas de aplicación que necesiten acceder a una determinada BD le envíen sus solicitudes de información en forma de consultas SQL. Aunque hablemos de lenguajes de consulta, SQL es un lenguaje completo: no sólo permite recuperar información desde una BD, sino que también permite actualizar dicha información, e incluso definir la estructura de la propia BD. Podemos decir que SQL tiene dos vertientes: Lenguaje de Manipulación de Datos (LMD): SQL incluye instrucciones para el acceso y manipulación de la información contenida en una BD Autor: Juan Ramón López Rodríguez 1

2 - Instrucción SELECT: permite la recuperación de información - Instrucción INSERT: permite introducir nuevos datos en la BD - Instrucción UPDATE: permite la actualización de datos en la BD - Instrucción DELETE: permite la eliminación de información de la BD Lenguaje de Definición de Datos (LDD): SQL permite también la definición y estructuración de las diferentes BDs controladas por un SGBD - Instrucción CREATE TABLE: crea una nueva relación en la BD. - Instrucción ALTER TABLE: permite la modificación de la estructura de una relación ya existente en la BD. - Instrucción DROP TABLE: permite la eliminación de una relación en la BD. Estas notas están destinadas a explicar únicamente la parte de SQL correspondiente a la instrucción SELECT. En caso de estar interesado en el resto de instrucciones, el lector o lectora puede acudir a la bibliografía citada en la última página, donde hayará excelentes explicaciones y ejemplos. Diferencias SQL Modelo relacional Si bien SQL está fuertemente ligado al modelo relacional, no es menos cierto que presenta algunas diferencias importantes en cuanto al manejo de los datos: - Una primera diferencia es terminológica: donde el modelo relacional habla de relaciones, tuplas, y atributos, SQL habla de tablas, filas y columnas. Nosotros no haremos distinciones y manejaremos indistintamente ambas terminologías. - El modelo relacional no admite la existencia de tuplas repetidas en una relación (restricción de clave). En cambio, SQL admite sin problemas la existencia de filas repetidas en una tabla (veremos más adelante por qué). - Lo que en el modelo relacional son dominios (conjunto de valores válidos para un atributo), en SQL son tipos de datos. Los tipos de datos definen los valores posibles para un atributo, pero también las operaciones que pueden ser realizadas con esos valores (suma, resta, multiplicación, división, concatenación...). Los tipos de datos más frecuentes en SQL son: Tipo de datos SQL Nombre que recibe en Access Operaciones soportadas Ejemplo NUMBER (numdigitos) Númerico +, -, *, / 53 CHAR(numCaracteres) TEXTO (numcaracteres) + (concatenación) Casa DATETIME Fecha/Hora 03/09/57 Ejemplo a utilizar Antes de abordar la descripción de la instrucción SELECT de SQL, estableceremos el ejemplo de partida que utilizaremos a lo largo de la explicación. Se trata del esquema lógico - relativo a la gestión de una empresa que habíamos obtenido al analizar la transformación desde el modelo ER al modelo relacional. Autor: Juan Ramón López Rodríguez 2

3 (NSS, NPila, Ap1, Ap2, Sexo, Dirección, FNac, NumDept, NSSSupervisor) Departamento (NumDept, NomDept, NSS, FechaIniGerente) TrabajaEn (NSS, Numero, Horas) LocalidadDpt (NumDept, Loc) Proyecto (Numero, Nombre, Loc, NumDept) Las relaciones, desde el punto de vista de SQL, deben ser consideradas como tablas; asumiremos que, como tales, contienen los siguientes datos en un momento dado: NSS NPila Ap1 Ap2 Sexo Dirección FNac NumDept NSSSupervisor 1 Juan Pérez Pérez H R/ Vilar 2 02/06/64 D01 2 Pedro López Blas H R/ Fontes 12 23/12/50 D María Pérez Pi M R/ Galicia 6 12/03/75 D02 4 Antonio Botín Castro H Pza Galicia 1 13/01/65 D02 3 Departamento NumDept NomDept NSS FechaIniGerente D01 Ventas 1 01/01/2000 D02 Produccion 2 01/01/2004 Proyecto Numero Nombre Localidad NumDept V1 Sistema contable A Coruña D01 P1 Producto A Ferrol D02 P2 Producto B Ferrol D02 TrabajaEn NSS Numero Horas 1 V V P P1 5 4 P2 30 LocalidadDpt NumDept Loc D01 A Coruña D02 A Coruña D02 Ferrol La instrucción SELECT La instrucción SELECT de SQL se utiliza para recuperar (realizando un procesamiento previo, si fuese necesario) información de la BD. Se trata de una instrucción que toma como parámetros de entrada una o mas tablas, y devuelve como resultado una nueva tabla, generada dinámicamente, que contiene la información solicitada. El resultado puede ser desde una tabla con una única fila y una única columna (es decir, un único valor) hasta una tabla con múltiples filas y columnas. Autor: Juan Ramón López Rodríguez 3

4 La instrucción SELECT está formada por un conjunto de cláusulas, que ayudan a precisar la información que se solicita. La sintaxis general de una instrucción SELECT es la siguiente SELECT [distinct] <lista de expresiones> FROM <lista de tablas> WHERE <condiciones de selección> ORDER BY <lista expresiones ordenación> cláusula select cláusula from cláusula where cláusula order by - La cláusula FROM permite especificar la tabla o tablas de la base de datos desde donde se va a recuperar la información que se necesita. - La cláusula WHERE permite especificar un conjunto de condiciones para la selección de los datos que se recuperarán de las tablas para elaborar el resultado. - La cláusula SELECT permite especificar la información a recuperar exactamente, y, de ser necesario, el procesamiento que debe ser realizado sobre esos datos. - Finalmente, la cláusula ORDER BY permite especificar el orden en el que va a ser presentada la información en la tabla resultante. En realidad, no todas estas cláusulas deben aparecer obligatorias en una consulta Select. Sólo lás cláusulas SELECT y FROM son imprescindibles para formar una consulta Select mínima. La cláusula SELECT Supongamos que queremos recuperar el NSS y el nombre completo (nombre de pila + apellidos) de todos los empleados de la empresa. Una consulta que lo permite sería la siguiente: Select NSS, NPila, Ap1, Ap2 FROM...y el resultado de evaluar la consulta sería el siguiente: NSS NPila Ap1 Ap2 1 Juan Pérez Pérez 2 Pedro López Blas 3 María Pérez Pi 4 Antonio Botín Castro Cómo se obtiene esta tabla? Una consulta Select se evalúa de la siguente manera: 1) En primer lugar, se evalúa la cláusula FROM: es necesario determinar de qué tabla vamos a recuperar la información: por ejemplo,. 2) A continuación, se accede a la tabla indicada, y se recuperan, una a una, todas sus filas, sobre las que será evaluada, una por una, la cláusula SELECT: cada fila de la tabla original () va a dar lugar a una nueva fila en la tabla que contendrá el resultado de la consulta. 3) La cláusula SELECT debe contener una lista de una o más expresiones, separadas Autor: Juan Ramón López Rodríguez 4

5 por comas. - Cada una de esas expresiones será evaluada sobre cada fila de la tabla original, dando lugar a una lista de valores atómicos (tantos como expresiones) - La lista obtenida servirá para crear una nueva fila en la tabla resultado. - La tabla resultado tendrá una columna por cada expresión incluida en la cláusula SELECT - El nombre de cada columna será igual a la expresión que la genera. 4) Serán expresiones válidas (expresiones que pueden ser utilizadas en la cláusula SELECT): - Un valor constante, de cualquiera de los tipos de datos admitidos en SQL: por ejemplo Juan, 5, 03/02/2004. El resultado de evaluar un valor constante sobre una fila coincide siempre con el propio valor constante. - Un nombre de columna de aquellos incluidos en la tabla indicada en el FROM: por ejemplo, NSS, NPila, Ap1 o Ap2. Al evaluar un nombre de columna sobre una fila determinada, el resultado será el valor de la fila en esa columna. - Una expresión que incluya operaciones realizadas sobre valores constantes y/o nombres de columnas. El resultado de la expresión será el mismo que el resultado de evaluar primero los valores constantes y los nombres de columnas, y operarlos después. Por ejemplo: 2 (Resultado: 2) 2+3 (Resultado: 5) Fede + rico (Resultado: Federico ) Ap1 + Ap2 (Resultado: dada una fila de la tabla original, la concatenación de los valores de sus columnas Ap1 y Ap2) Nombre: + NPila (Resultado: dada una fila de la tabla original, la concatenación de la cadena Nombre: y el valor de la fila en la columna NPila) En el caso de nuestro ejemplo, la evaluación de la consulta se realiza como sigue: - En primer lugar, se utiliza la cláusula FROM para determinar la tabla de origen de los datos:, que es la tabla que contiene toda la información que necesitamos. - A continuación, se analiza una por una cada fila de : Para la primera fila... NSS NPila Ap1 Ap2 Sexo Dirección FNac NumDept NSSSupervisor 1 Juan Pérez Pérez H R/ Vilar 2 02/06/64 D01...las expresiones de la cláusula SELECT se evalúan así: NSS: 1 NPila: Juan Ap1: Pérez Ap2: Pérez...y por lo tanto, la fila que se genera en la tabla resultado es: 1 Juan Pérez Pérez Autor: Juan Ramón López Rodríguez 5

6 Para la segunda fila... NSS NPila Ap1 Ap2 Sexo Dirección FNac NumDept NSSSupervisor 2 Pedro López Blas H R/ Fontes 12 23/12/50 D las expresiones de la cláusula SELECT se evalúan así: NSS: 2 NPila: Pedro Ap1: López Ap2: Blas...y por lo tanto, la fila que se añade a la tabla resultado es: 2 Pedro López Blas Para la tercera fila... NSS NPila Ap1 Ap2 Sexo Dirección FNac NumDept NSSSupervisor 3 María Pérez Pi M R/ Galicia 6 12/03/75 D02...las expresiones de la cláusula SELECT se evalúan así: NSS: 3 NPila: María Ap1: Pérez Ap2: Pi...y por lo tanto, la fila que se añade a la tabla resultado es: 3 María Pérez Pi Finalmente, para la cuarta y última fila... NSS NPila Ap1 Ap2 Sexo Dirección FNac NumDept NSSSupervisor 4 Antonio Botín Castro H Pza Galicia 1 13/01/65 D las expresiones de la cláusula SELECT se evalúan así: NSS: 4 NPila: Antonio Ap1: Botín Ap2: Castro...y por lo tanto, la fila que se añade a la tabla resultado es: 4 Antonio Botín Castro - Como último paso, las filas obtenidas se unen para obtener la tabla resultante: NSS NPila Ap1 Ap2 1 Juan Pérez Pérez 2 Pedro López Blas 3 María Pérez Pi 4 Antonio Botín Castro - Como se puede apreciar, las columnas tienen por nombre la expresión (incluida en la cláusula SELECT) que da lugar a sus valores La consulta que hemos visto utiliza expresiones en la cláusula SELECT que están constituidas por simples nombres de columnas. Sin embargo, podemos realizar consultas más sofisticadas incluyendo expresiones más complejas. Por ejemplo, podemos modificar la consulta anterior para que el nombre completo de cada empleado aparezca en una única columna: Autor: Juan Ramón López Rodríguez 6

7 Select NSS, Ap1 + + Ap2 +, + NPila FROM En esta nueva consulta, reemplazamos las tres expresiones que se referían a las columnas de nombre y apellidos de los empleados por una expresión única, en la que se utiliza el operador de concatenación de cadenas (+) para unir los valores de dichas columnas, separados por espacios y comas: se trata de una expresión en la que se combinan nombres de atributos y valores constantes ( y, ). La consulta se evaluará de la siguiente forma: Para la primera fila... NSS NPila Ap1 Ap2 Sexo Dirección FNac NumDept NSSSupervisor 1 Juan Pérez Pérez H R/ Vilar 2 02/06/64 D01...las expresiones de la cláusula SELECT se evalúan así: NSS: 1 Ap1 + + Ap2 +, + NPila = Pérez + + Pérez +, + Juan = Pérez Pérez, Juan...y por lo tanto, la fila que se genera en la tabla resultado es: 1 Pérez Pérez, Juan Para la segunda fila... NSS NPila Ap1 Ap2 Sexo Dirección FNac NumDept NSSSupervisor 2 Pedro López Blas H R/ Fontes 12 23/12/50 D las expresiones de la cláusula SELECT se evalúan así: NSS: 2 Ap1 + + Ap2 +, + NPila = López + + Blas +, + Pedro = López Blas, Pedro...y por lo tanto, la fila que se añade a la tabla resultado es: 2 López Blas, Pedro Para la tercera fila... NSS NPila Ap1 Ap2 Sexo Dirección FNac NumDept NSSSupervisor 3 María Pérez Pi M R/ Galicia 6 12/03/75 D02...las expresiones de la cláusula SELECT se evalúan así: NSS: 3 Ap1 + + Ap2 +, + NPila = Pérez + + Pi +, + María = Pérez Pi, María...y por lo tanto, la fila que se añade a la tabla resultado es: 3 Pérez Pi, María Finalmente, para la cuarta y última fila... NSS NPila Ap1 Ap2 Sexo Dirección FNac NumDept NSSSupervisor 4 Antonio Botín Castro H Pza Galicia 1 13/01/65 D las expresiones de la cláusula SELECT se evalúan así: NSS: 4 Autor: Juan Ramón López Rodríguez 7

8 Ap1 + + Ap2 +, + NPila = Botín + + Castro +, + Antonio = Botín Castro, Antonio...y por lo tanto, la fila que se añade a la tabla resultado es: 4 Botín Castro, Antonio - Como último paso, las filas obtenidas se unen para obtener la tabla resultante: NSS Ap1 + + Ap2 +, + NPila 1 Pérez Pérez, Juan 2 López Blas, Pedro 3 Pérez Pi, María 4 Botín Castro, Antonio Las expresiones complejas no tienen por que utilizar sólo atributos o valores de tipo carácter. La siguiente consulta devuelve el número mensual de horas que cada empleado le dedica a cada proyecto (que se obtienen multiplicando por 4 el número de horas semanal por proyecto, almacenado en la tabla TrabajaEn): Select NSS, Numero, Horas* 4 FROM TrabajaEn Es fácil comprobar que el resultado de esta consulta sería la siguiente tabla: TrabajaEn NSS Numero Horas*4 1 V V P P P2 120 Con este ejemplo demostramos algo que habíamos afirmado anteriormente: la instrucción Select de SQL permite no sólo recuperar información almacenada en una BD, sino también procesar dicha información para generar información nueva. Valores nulos El modelo relacional admite el uso de los valores nulos durante la asignación de valores a los atributos de una tupla. Eso significa, en la terminología de SQL, que podemos encontrarnos con celdas de una tabla que alberguen valores nulos. Por lo tanto, la cláusula SELECT puede involucrar, en sus expresiones, valores nulos (al evaluar esas expresiones sobre los valores de una fila determinada). La pregunta es cómo afectan los valores nulos al cálculo de expresiones incluidas en una cláusula SELECT? Y la respuesta es sencilla: el valor de un nulo es desconocido; por lo tanto, en toda expresión en la que intervenga un valor nulo, el resultado será también desconocido. 1 Y en la tabla resultante, el valor desconocido se representará mediante otro valor nulo Nulo = Nulo - Casa + Nulo = Nulo - NSS 5 = Nulo (si NSS se evalúa a Nulo) 1 Ya que, si nos falta alguno de los parámetros de la expresión, es imposible determinar el resultado. Autor: Juan Ramón López Rodríguez 8

9 Ejemplo: Indica el NSS de cada empleado y el de su jefe. La consulta se evalúa de la siguiente forma: Select NSS, NSSSupervisor FROM NSS Npila Ap1 Ap2 NSSSupervisor NSS NSSSupervisor NSS NSSSupervisor 1 Juan Pérez Pérez (Nulo) 1 2 Pedro López Blas María Pérez Pi (Nulo) 3 4 Antonio Botín Castro Filas repetidas: el modificador distinct Supongamos que necesitamos conocer las diferentes localidades en las que nuestra empresa dispone de alguna sede. En la base de datos contamos con información referente a las sedes de los departamentos de la empresa (concretamente, en la tabla LocalidadDpt); y conociendo las sedes de los departamentos, conoceremos las de la empresa (ya que, en buena lógica, deben coincidir). Por lo tanto, la siguiente consulta debería servir a nuestros fines: SELECT Loc FROM LocalidadDpt Como en los casos anteriores, la consulta se evalúa recuperando una por una las filas de la tabla indicada y evaluando las expresiones de la cláusula SELECT sobre cada una de ellas: LocalidadDpt NumDept Loc Evaluación de Loc : D01 A Coruña A Coruña D02 A Coruña A Coruña D02 Ferrol Ferrol El resultado de la consulta sería este: Loc A Coruña A Coruña Ferrol Como se puede apreciar, una de las localidades aparece repetida: se trata de A Coruña, como resultado de ser obtenida como sede de dos departamentos diferentes. Esto es así porque SQL incumple la restricción de clave del modelo relacional, que exige que en una relación (una tabla) no puede haber filas repetidas. Así, al verse liberado de la obligación de comprobar esta restricción, cualquier intérprete de SQL podrá procesar una consulta mucho más rápidamente. Sin embargo, SQL sí que permite eliminar filas repetidas en el resultado de una consulta (aunque provocando, probablemente, un retraso adicional por parte del intérprete en la Autor: Juan Ramón López Rodríguez 9

10 obtención del resultado final). Para hacerlo, la cláusula SELECT cuenta con el modificador distinct: añadiendo este modificador a nuestra consulta... SELECT distinct Loc FROM LocalidadDpt...el resultado de la misma pasaría a ser este: Loc A Coruña Ferrol...de forma que obtendríamos ya los datos en la forma deseada. Es importante resaltar que distinct permite eliminar filas repetidas, y no valores repetidos. Por ejemplo, estas dos consultas (que nos devuelven una lista con los nombres de los empleados y el departamento en el que trabajan): SELECT NumDept, Npila FROM SELECT distinct NumDept, Npila FROM devolverán como resultado la misma tabla: NumDept D01 D01 D02 D02 NPila Juan Pedro María Antonio Si bien en la columna NumDept hay varios valores repetidos, no hay ninguna fila repetida; por lo tanto, la presencia o no de distinct en la consulta no afecta al resultado final. Versión abreviada del SELECT Es bastante usual encontrarse en la necesidad de recuperar toda la información contenida en una tabla. Hacerlo por medio de una consulta SQL implicaría escribir uno por uno todos los nombres de sus columnas en la cláusula SELECT: SELECT NSS, Npila, Ap1, Ap2, Sexo, Direccion, Fnac, NumDept, NSSSupervisor FROM Para evitar esto, la cláusula SELECT admite un carácter comodín, que representa a todas las columnas de una tabla: el asterisco (*). Así, la siguiente consulta sería equivalente a la anterior: SELECT * FROM Ordenación del resultado: la cláusula ORDER BY. En los ejemplos anteriores estamos asumiendo que el orden de presentación de los resultados de una consulta se basa en el orden inicial de las filas de la tabla de partida. Autor: Juan Ramón López Rodríguez 10

11 En realidad, nada nos garantiza ese orden: la definición formal de SQL no nos indica nada a ese respecto. Además, la definición del modelo relacional (que, no lo olvidemos, es la base de SQL) especifica que una relación (una tabla) es un conjunto de tuplas: tratándose de un conjunto, el concepto de orden no es aplicable. A dónde nos lleva todo esto? Si ejecutamos dos veces una misma consulta, nada nos garantiza que los resultados aparezcan en el mismo orden las dos veces. En realidad, se trata de un problema que tiene fácil solución: SQL incorpora, en la instrucción SELECT, una cláusula ORDER BY que nos permite especificar el orden deseado de presentación de los resultados. El orden se establece a través de una o más expresiones de ordenación, que se incluyen en la cláusula ORDER BY separadas por comas: - Para cada fila de la tabla original se calculan los valores de esas expresiones. - Las filas originales se ordenan de acuerdo a los valores resultantes de evaluar las expresiones de ordenación: en primer lugar se tienen en cuenta los resultados de la primera expresión; se toman después en cuenta los resultados de la segunda; y así sucesivamente. - Los valores resultantes de cada expresión pueden ser ordenados de forma ascendente o descendente: para ello se utilizan los modificadores ASC (la opción por defecto) y DESC. - Las filas del resultado se ordenan en función del orden establecido para las filas de la tabla original a partir de las que son obtenidas. Veremos a continuación dos ejemplos del uso de la cláusula ORDER BY para precisar mejor su funcionamiento. Ejemplo: Obtener la lista de empleados de la empresa, ordenados alfabéticamente por sus apellidos. SELECT NSS, Ap1+ + Ap2 +, + Npila FROM ORDER BY Ap1, Ap2, Nombre Esta consulta se evalúa de la siguiente forma: - Para cada fila de la tabla se evalúan las expresiones de ordenación: NSS NPila Ap1 Ap2 Ap1 Ap2 NPila 1 Juan Pérez Pérez... Pérez Pérez Juan 2 Pedro López Blas... López Blas Pedro 3 María Pérez Pi... Pérez Pi María 4 Antonio Botín Castro... Botín Castro Antonio - Las filas se ordenan empleando la primera expresión (Ap1), de forma ascendente (la opción por defecto): NSS NPila Ap1 Ap2 Ap1 Ap2 NPila 4 Antonio Botín Castro... Botín Castro Antonio 2 Pedro López Blas... López Blas Pedro Autor: Juan Ramón López Rodríguez 11

12 3 María Pérez Pi... Pérez Pi María 1 Juan Pérez Pérez... Pérez Pérez Juan - Como se puede observar, dos filas (las correspondientes a María y Pedro) presentan en mismo valor para Ap1. Para decidir su orden, recurrimos a la segunda expresión (Ap2) NSS NPila Ap1 Ap2 Ap1 Ap2 NPila 4 Antonio Botín Castro... Botín Castro Antonio 2 Pedro López Blas... López Blas Pedro 1 Juan Pérez Pérez... Pérez Pérez Juan 3 María Pérez Pi... Pérez Pi María - Ya no es necesario recurrir a la última expresión (NPila) para resolver el orden final. Conocido el orden, llega el momento de evaluar la cláusula SELECT y resolver la consulta, respetando el orden previamente establecido. NSS NPila Ap1 Ap2 NSS Ap1+ + Ap2 +, + Npila 4 Antonio Botín Castro... 4 Botín Castro, Antonio 2 Pedro López Blas... 2 López Blas, Pedro 1 Juan Pérez Pérez... 1 Pérez Pérez, Juan 3 María Pérez Pi... 3 Pérez Pi, María Ejemplo: Indicar los NSS de todos los empleados de la empresa, ordenados por departamento y por edad (los más jóvenes primero). Ordenar por edad, de forma ascendente, implica ordenar por fecha de nacimiento (el dato que poseemos sobre los empleados) de forma descendente. Por lo tanto, la consulta a realizar sería esta: SELECT NSS, NumDept FROM ORDER BY NumDept, Fnac DESC Obsérvese el uso que se hace del modificador DESC para exigir que las filas se ordenen por fecha de forma descendente (de mayor a menor, en lugar de de menor a mayor) El resultado de la consulta sería el siguiente: NSS Npila Ap1 Ap2 NumDept FNac NSS NumDept 1 Juan Pérez Pérez... D01 02/06/64 1 D01 2 Pedro López Blas... D01 23/12/50 2 D01 3 María Pérez Pi... D02 12/03/75 3 D02 4 Antonio Botín Castro... D02 13/01/65 4 D02 (Se da la casualidad en el ejemplo que el orden solicitado en origen para las tuplas es aquel en el que las habíamos presentado inicialmente). Filtrado de información: la cláusula WHERE La cláusula WHERE permite afinar en mayor medida la recuperación de información mediante una instrucción SELECT. Hasta ahora hemos visto cómo seleccionar cuáles de Autor: Juan Ramón López Rodríguez 12

13 las columnas de una tabla nos interesan; mediante WHERE podremos seleccionar cuáles de las filas contenidas en una tabla nos interesan. Eso nos permitirá, por ejemplo, restringir cualquiera de las consultas que hemos realizado hasta ahora a los empleados de un determinado departamento. Así, la consulta siguiente permitirá obtener el nombre de todos los empleados del departamento de Ventas. Select NSS, Ap1 + + Ap2 +, + NPila FROM WHERE NumDept= D01 Para seleccionar las filas que nos interesen, la cláusula WHERE va acompañada de un conjunto de condiciones de selección. Sólo las filas que cumplan esas condiciones serán tenidas en cuenta para evaluar la consulta. Condiciones simples La condición de selección más sencilla que se puede definir es aquella que obliga a comparar los valores de dos expresiones evaluadas sobre cada fila de la tabla. Expresión1 = > < < > >= <= Expresión 2 La idea es que tanto Expresión1 como Expresión2 se evalúen sobre los valores de cada fila de la tabla original. Una vez evaluados, se comparan. Si la condición especificada se cumple, la fila se selecciona. Si la condición no se cumple, la fila es descartada. En el caso del ejemplo de la consulta anterior (datos de los empleados del departamento de Ventas, D01), la evaluación se haría así: - En primer lugar, seleccionar las filas a utilizar para calcular el resultado, aplicando la condición de selección del WHERE NSS Npila Ap1 Ap2 NumDept NumDept D01 NumDept= D01 Fila seleccionada 1 Juan Pérez Pérez... D01... D01 D01 Verdadero 2 Pedro López Blas... D01... D01 D01 Verdadero 3 María Pérez Pi... D02... D02 D01 Falso 4 Antonio Botín Castro... D02... D02 D01 Falso - Una vez seleccionadas las filas, se procede de la forma acostumbrada: NSS Npila Ap1 Ap2 NumDept NSS Ap1 + + Ap2 +, + NPila 1 Juan Pérez Pérez... D Pérez Pérez, Juan 2 Pedro López Blas... D López Blas, Pedro Autor: Juan Ramón López Rodríguez 13

14 Otro ejemplo podría ser este: Nombres de todos los empleados de la empresa que hayan nacido antes que Pedro. La consulta que nos permite obtener esa información es esta: Y se evaluará de la siguiente forma: Select NPila FROM WHERE Fnac<23/12/50 NSS Npila Ap1 Ap2 NumDept Fnac 23/12/50 Fnac < 23/12/50 Fila seleccionada 1 Juan Pérez Pérez... D /06/64 23/12/50 Falso 2 Pedro López Blas... D /12/50 23/12/50 Falso 3 María Pérez Pi... D /03/75 23/12/50 Falso 4 Antonio Botín Castro... D /01/65 23/12/50 Falso Como se puede apreciar, ninguna fila de la tabla satisface la condición, por lo que el resultado de la consulta será una tabla vacía: Pedro es el empleado más viejo de la empresa! Valores nulos: el predicado IS NULL NPila Los valores nulos también afectan a la evaluación de las condiciones de selección. La evaluación de cualquier condición de selección en la que intervenga una expresión con evaluación desconocida, será también desconocida. - 2 > Nulo? Desconocido - Casa <> Nulo? Desconocido - NSS = 5? Desconocido (si NSS se evalúa a Nulo) Siempre que no sea posible determinar si una condición se verifica para una determinada fila, adoptaremos una postura conservadora: al ser desconocido el resultado de la comparación, descartaremos la fila al calcular el resultado de la condición, por si en un momento dado, y con más información, llegásemos a determinar que la condición no se cumple. Ejemplo: Recuperar el NSS de todos los empleados de la empresa que cuentan con un supervisor. La consulta que nos permite obtener esta información es la siguiente: y se evalúa de la siguiente forma: Select NSS FROM WHERE NSSSupervisor > 0 Autor: Juan Ramón López Rodríguez 14

15 NSS Npila Ap1 Ap2 NSSSupervisor NSS NSSSupervisor NSSSupervisor > 0? Fila seleccionada 1 Juan Pérez Pérez (Nulo) Desconocido 2 Pedro López Blas Verdadero 3 María Pérez Pi (Nulo) Desconocido 4 Antonio Botín Castro Verdadero Como se puede apreciar, dos filas correspondientes a dos empleados de la empresa presentan un valor nulo en la columna NSSSupervisor. En esos dos casos, la condición NSSSupervisor > 0? no puede ser evaluada, y las dos filas se descartan. Es decir, estamos descartando las filas correspondientes a empleados sin supervisor; que es precisamente lo que pretendíamos hacer. La consulta se termina de evaluar de la siguiente forma: NSS Npila Ap1 Ap2 NSSSupervisor NSS NSS 2 Pedro López Blas Antonio Botín Castro El siguiente ejemplo resulta más complicado de resolver: Ejemplo: Recuperar el NSS de todos los empleados de la empresa que no tienen supervisor. Se trata de seleccionar aquellas filas (empleados) con valor nulo en la columna NSSSupervisor. El problema es el siguiente: cualquier comparación con un valor nulo hará que una fila sea descartada, precisamente lo contrario de lo que deseamos en este caso. Por ejemplo, es fácil ver cómo la siguiente consulta... Select NSS FROM WHERE NSSSupervisor = NULL devolvería como resultado una tabla vacía, por la propia semántica definida para la cláusula WHERE: el operador de comparación = se evalúa a nulo si hay un nulo de por medio, y en este caso todas las filas de la tabla original serían descartadas (en todas las comparaciones intervendrá el valor NULL). Para resolver este contratiempo, SQL permite una alternativa en forma de predicado lógico 2 : IS NULL. Este predicado (asociado a un nombre de columna) nos permitirá saber si el valor de dicha columna para una fila es nulo o no. - Si el valor de la columna es nulo, IS NULL se evaluará como Verdadero - Si el valor de la columna no es nulo, IS NULL se evaluará como Falso Utilizando IS NULL en nuestro ejemplo, la consulta se resuelve así: 2 Podemos entender un predicado como una función que devuelve como resultado un valor lógico de Verdadero o Falso Autor: Juan Ramón López Rodríguez 15

16 Y se evalúa de esta manera: Select NSS FROM WHERE NSSSupervisor IS NULL NSS Npila Ap1 Ap2 NSSSupervisor NSS NSSSupervisor NSSSupervisor IS NULL? Fila seleccionada 1 Juan Pérez Pérez (Nulo) Verdadero 2 Pedro López Blas Falso 3 María Pérez Pi (Nulo) Verdadero 4 Antonio Botín Castro Falso...siendo este el resultado final: NSS Npila Ap1 Ap2 NSSSupervisor NSS 1 Juan Pérez Pérez María Pérez Pi El predicado IS NULL presenta además una forma negada, que nos permite resolver de forma más elegante la consulta original (la lista de empleados con jefe): Esta consulta se evalúa de esta manera: Select NSS FROM WHERE NSSSupervisor IS NOT NULL NSS Npila Ap1 Ap2 NSSSupervisor NSS NSSSupervisor NSSSupervisor IS NOT NULL? Fila seleccionada 1 Juan Pérez Pérez (Nulo) Falso 2 Pedro López Blas Verdadero 3 María Pérez Pi (Nulo) Falso 4 Antonio Botín Castro Verdadero...siendo ahora este el resultado final: NSS Npila Ap1 Ap2 NSSSupervisor NSS 2 Pedro López Blas Antonio Botín Castro ya que el predicado IS NOT NULL, asociado a un nombre de columna, presenta la siguiente evaluación: - Si el valor de la columna es nulo, IS NOT NULL se evaluará como Falso - Si el valor de la columna no es nulo, IS NOT NULL se evaluará como Verdadero Condiciones compuestas Autor: Juan Ramón López Rodríguez 16

17 La cláusula WHERE permite especificar condiciones más complejas de consulta, por medio de las conectivas lógicas: AND, OR y NOT. Las conectivas lógicas permiten combinar dos o mas condiciones (simples o compuestas), de la siguiente forma: condición1 condición2 condicion1 AND condición2 condicion1 OR condición2 Verdadero Verdadero Verdadero Verdadero Verdadero Falso Falso Verdadero Falso Falso Falso Falso Verdadero Desconocido Desconocido Verdadero Falso Desconocido Falso Desconocido Desconocido Desconocido Desconocido Desconocido condición1 Verdadero Falso Desconocido NOT (condición1) Falso Verdadero Desconocido La mejor forma de entender la forma de especificar una condición de selección compuesta es con un ejemplo. Supongamos que pretendemos realizar la siguiente consulta: Ejemplo: Recuperar los NSS de todos aquellos empleados del departamento de Ventas que tienen jefe. En esta consulta tenemos que seleccionar a los empleados a mostrar de acuerdo con dos condiciones: - Por un lado, los empleados deben pertenecer al departamento de Ventas (D01) - Por otro lado, los empleados deben tener un supervisor (un jefe) Se trata claramente de una condición compuesta. La consulta que proporciona esta información es esta: Select NSS FROM WHERE NumDept= D01 AND NSSSupervisor IS NOT NULL Como se puede apreciar, se piden dos condiciones que deben cumplirse a la vez (de ahí que usemos la conectiva AND). La consulta se evalúa como sigue: NSS NumDept NSSSupervisor Condición1: NumDept= D01? Condición2: NSSSupervisor IS NOT NULL? Condición1 AND Condición2? Fila Seleccionada 1... D01 Verdadero Falso Falso 2... D01 1 Verdadero Verdadero Verdadero 3... D02 Falso Falso Falso 4... D02 3 Falso Verdadero Falso Como se ve, solo hay un empleado que cumpla las dos condiciones. El resultado de la consulta sería este: Autor: Juan Ramón López Rodríguez 17

18 NSS NumDept NSSSupervisor NSS 2... D Supongamos ahora que la información solicitada es la siguiente: Ejemplo: Recuperar los NSS de todos aquellos empleados de la empresa que o bien pertenezcan al departamento de Ventas o bien tengan jefe. En este caso, las condiciones indicadas varían ligeramente: ya no se trata de dos condiciones que deban cumplirse juntas; ahora nos interesan los empleados que cumplan una cualquiera de ellas. Por lo tanto, la conectiva a utilizar es, en este caso, OR: Esta nueva consulta se evalúa como sigue: NSS NumDept NSSSupervisor Select NSS FROM WHERE NumDept= D01 OR NSSSupervisor IS NOT NULL Condición1: NumDept= D01? Condición2: NSSSupervisor IS NOT NULL? Condición1 OR Condición2? Fila Seleccionada 1... D01 Verdadero Falso Verdadero 2... D01 1 Verdadero Verdadero Verdadero 3... D02 Falso Falso Falso 4... D02 3 Falso Verdadero Verdadero Como se ve, solo hay un empleado que no cumple ninguna de las dos condiciones, y que por lo tanto debe ser descartado. El resultado de la consulta sería este: Otro ejemplo podría ser este: NSS NumDept NSSSupervisor NSS 1... D D D Seleccionar a aquellos empleados que no trabajen en el departamento de Ventas. Se trata de una consulta ideal para el uso de NOT, ya que debemos establecer como condición que algo no se cumpla. Select distinct NSS FROM WHERE NOT(NumDept= D01 ) Condición1: Not (Condición1): Fila NSS NumDept NumDept= D01? NOT (NumDept= D01 )? Seleccionada 1... D01 Verdadero Falso Autor: Juan Ramón López Rodríguez 18

19 2... D01 Verdadero Falso 3... D02 Falso Verdadero 4... D02 Falso Verdadero Como se puede ver, seleccionamos exclusivamente a aquellos empleados que no pertenecen a Ventas. NSS NumDept NSS 3... D D02 4 Analizaremos un último ejemplo, algo más complejo de lo que podría parecer en un principio: Seleccionar a los empleados cuyo jefe no es Juan. Aparentemente, esta consulta se resuelve fácilmente utilizando de nuevo el predicado NOT: Select NSS FROM WHERE NOT(NSSSupervisor=1) Es decir, seleccionamos a aquellos empleados cuyo jefe no tenga 1 por valor de NSS (que es el de Juan). NSS NSSSupervisor Condición1: NSSSupervisor=1? NOT(Condición1): NOT ( NSSSupervisor =1? Fila Seleccionada 1... Desconocido Desconocido Verdadero Falso 3... Desconocido Desconocido Falso Verdadero Como se puede apreciar, estamos descartando las filas correspondientes a dos empleados (Juan y María) que no tienen a Juan como jefe! 3 ; y que por lo tanto deberían aparecer en el resultado de la consulta. La culpa de que no aparezcan es de los valores nulos. Efectivamente, ni Juan ni María tienen jefe, por lo que NSSSupervisor toma para ambos el valor Nulo. Al comparar NSSSupervisor con 1 (el NSS de Juan), el resultado es desconocido, por lo que ambas filas resultan descartadas. Se impone por lo tanto una modificación de la consulta, para tratar convenientemente todos aquellos casos en los que NSSSupervisor sea Nulo. La forma de hacerlo es esta: Select NSS FROM WHERE NOT(NSSSupervisor=1) OR NSSSupervisor IS NULL 3 De hecho, ninguno de los dos tiene jefe. Autor: Juan Ramón López Rodríguez 19

20 Es decir, serán incluidos en el resultado todos aquellos empleados que no tengan jefe (NSSSupervisor IS NULL) o bien, si tienen jefe, su NSS no sea 1 (el de Juan) NSS NSSSupervisor Condición1: NSSSupervisor =1? NOT(Condición1): NOT (NSSSupervisor =1)? Condición2: NSSSupervisor IS NULL? NOT(Condición1) OR Condición 2? Fila seleccionada 1... Desconocido Desconocido Verdadero Verdadero Verdadero Falso Falso Falso 3... Desconocido Desconocido Verdadero Verdadero Falso Verdadero Falso Verdadero Ahora sí hemos conseguido descartar solamente a Pedro, que es el único empleado que tiene a Juan por jefe. NSS NSSSupervisor NSS Como hemos podido comprobar en este ejemplo, la presencia de valores nulos complica siempre la realización de consultas. Se trata de uno de los motivos por los que como ya ha sido señalado en alguna ocasión el diseño de las tablas de una BD debe ser analizado detenidamente para evitar en lo posible la necesidad del uso de valores nulos. Consultas sobre varias tablas Hasta ahora, todos los ejemplos que hemos visto se referían a consultas que permitían recuperar la información contenida en una única tabla. Sin embargo, en muchas ocasiones va a ser necesario combinar los datos almacenados en varias tablas para poder obtener la información que se necesite. Supongamos por ejemplo esta petición de información: Obtener los nombres de todos los empleados de la empresa, junto con el nombre de los departamentos en los que trabajan. La principal dificultad de escribir una consulta que obtenga esta información radica precisamente en que la información está distribuida en dos tablas: - El nombre de los empleados se encuentra en la tabla - El nombre de los departamentos se encuentra en la tabla Departamento Sin embargo, ambas tablas incluyen una columna común: NumDept. Esta columna, en la tabla, nos permite representar/averiguar el número del departamento correspondiente a cada empleado. A partir de ese número, podemos localizar la fila correspondiente en la tabla Departamento y averiguar los datos del mismo. Para resolver el problema, SQL nos permite especificar dos o más tablas (separadas por comas) en la cláusula FROM; es decir, podemos especificar que queremos extraer la información desde dos o más tablas de la BD. Sin embargo, la evaluación de la consulta va a diferir ligeramente con respecto al mecanismo que habíamos visto hasta ahora. Dicho mecanismo de evaluación constaba de los siguientes pasos: Autor: Juan Ramón López Rodríguez 20

21 1. Determinar la tabla de origen, indicada en la cláusula FROM 2. Seleccionar aquellas filas que cumplen la condición o condiciones especificadas en la cláusula WHERE 3. Ordenar las filas de la tabla original de acuerdo con lo especificado en la cláusula ORDER BY 4. A partir de cada fila de la tabla original, generar una fila en la tabla resultante, a partir de la evaluación de las expresiones indicadas en la cláusula SELECT El mecanismo a seguir en el caso de consultas definidas sobre varias tablas va a ser ahora: 1. Determinar las tablas de origen, indicadas en la cláusula FROM 2. Combinar las tablas originales, de forma que se genere una tabla única sobre la que trabajar. 3. Seleccionar aquellas filas de la tabla original que cumplen la condición o condiciones especificadas en la cláusula WHERE 4. Ordenar las filas de la tabla original de acuerdo con lo especificado en la cláusula ORDER BY 5. A partir de cada fila de la tabla original, generar una fila en la tabla resultante, a partir de la evaluación de las expresiones indicadas en la cláusula SELECT Como se puede apreciar, los cambios (señalados en negrita) son mínimos: La esencia del cambio radica en que vamos a obtener, de las tablas originales, una nueva tabla, única, sobre la que trabajar. Una vez obtenida esa tabla, podremos continuar procediendo como habíamos visto hasta ahora: evaluando las cláusulas WHERE, ORDER BY y SELECT sobre una única tabla. Evidentemente, la clave del correcto funcionamiento de la consulta está en la forma en la que se realizará la combinación de las (dos o mas) tablas originales. La idea es combinar las filas de una tabla con las filas que tenga asociadas en el resto de tablas. En el caso de nuestro ejemplo, deberíamos intentar combinar cada fila correspondiente a un empleado con la fila correspondiente a su departamento. De esta forma, en la tabla combinada seguiríamos contando con una fila por cada empleado, que incluiría además toda la información relativa a su departamento. Autor: Juan Ramón López Rodríguez 21

22 NSS... NumDept NSSSupervisor 1... D D D D02 3 Departamento NumDept NomDept NSS FechaIniGerente D01 Ventas 1 01/01/2000 D02 Produccion 3 01/01/2004 Tabla Combinada NSS... NumDept NSSSupervisor NumDept NomDept NSS FechaIniGerente 1... D01 D01 Ventas 1 01/01/ D01 1 D01 Ventas 1 01/01/ D02 D02 Produccion 2 01/01/ D02 3 D02 Produccion 2 01/01/2004 Como se puede apreciar, sería sencillo definir una consulta sobre la tabla combinada para recuperar la información que se solicita en el ejemplo. Esa tabla combinada se obtiene, en SQL, en dos pasos: 1. En primer lugar, se realiza el producto cartesiano de los conjuntos de filas de todas las tablas. Es decir, se establecen todas las combinaciones posibles de cada fila de una tabla con las filas de todas las demás tablas, tengan o no sentido! En el caso de la consulta de nuestro ejemplo, sabemos ya que la cláusula FROM contendrá dos tablas: y Departamento. SELECT FROM, Departamento WHERE Esas dos tablas serán combinadas, dando lugar a una tabla única: cada fila de la tabla será combinada con todas y cada una de las filas de la tabla Departamento, dando lugar a una nueva fila en la tabla combinada. Es decir, si en la tabla tenemos 4 filas, y en la tabla Departamento tenemos 2 filas, la tabla combinada tendrá un total de 4 x 2 = 8 filas. Tabla Combinada: Paso 1 Origen: Tabla Origen: Tabla Departamento NSS... NumDept NSSSupervisor NumDept NomDept NSS FechaIniGerente 1... D01 D01 Ventas 1 01/01/ D01 D02 Produccion 2 01/01/ D01 1 D01 Ventas 1 01/01/ D01 1 D02 Produccion 2 01/01/ D02 D01 Ventas 1 01/01/ D02 D02 Produccion 2 01/01/ D02 3 D01 Ventas 1 01/01/ D02 3 D02 Produccion 2 01/01/2004 Como se ve en la figura, en la tabla resultante del primer paso han sido incluidas las siguientes combinaciones: - La fila del empleado 1 (Juan) ha sido combinada con las filas de los departamentos D01 y D02 Autor: Juan Ramón López Rodríguez 22

23 - La fila del empleado 2 (Pedro) ha sido combinada con las filas de los departamentos D01 y D02 - La fila del empleado 3 (María) ha sido combinada con las filas de los departamentos D01 y D02 - La fila del empleado 4 (Antonio) ha sido combinada con las filas de los departamentos D01 y D02...resultando un total de 8 filas, tal y como habíamos calculado 2. No todas la combinaciones realizadas tienen interés para nosotros. Atendiendo a la consulta que queremos realizar, sólo son relevantes aquellas en las que los datos de un empleado han sido combinados con los datos del departamento en el que trabaja. El segundo paso consiste en seleccionar aquellas combinaciones de interés, por medio del establecimiento de una o más condiciones de reunión: las condiciones que hacen válida una combinación de filas de diferentes tablas. Cómo se especifican las condiciones de reunión? Aprovechando un mecanismo ya conocido: la cláusula WHERE. Ampliaremos las condiciones de esta cláusula incluyendo aquellas que convierten en válidas a las filas de la tabla combinada. En el caso de nuestro ejemplo, para nosotros serán válidas aquellas combinaciones de filas de empleado y departamento para las que el valor de NumDepto coincida. Esa será pues, la condición de reunión a establecer en la cláusula WHERE. SELECT FROM, Departamento WHERE NumDept = NumDept Un problema de combinar varias tablas es que la tabla combinada puede acabar incluyendo varias columnas con el mismo nombre. Nuestro ejemplo no podía ser menos y existen varias columnas en esa situación en la tabla combinada: NSS, procedente de la tabla (representa el NSS de cada empleado) y NSS, procedente de la tabla Departamento (que representa el NSS del director del departamento); NumDept, procedente de la tabla (que representa el número de departamento de cada empleado de la empresa), y NumDept, procedente de la tabla Departamento (que representa en número de cada departamento de la empresa). Cómo distinguirlas cuando nos refiramos a ellas? (por ejemplo, en la condición de reunión NumDept = NumDept) Para solucionar esta aparente ambigüedad, lo que haremos será utilizar prefijos para designar a las columnas: cada nombre de columna, cuando la referenciemos, irá precedida del nombre de la tabla de la que provenga, separando ambos nombres por un punto (.) Así, la consulta de reunión de nuestro ejemplo pasa a ser... SELECT FROM, Departamento WHERE.NumDept = Departamento.NumDept y de este modo resolvemos cualquier posible ambigüedad en cuanto a las columnas a las que nos referimos en la condición. Podemos así seleccionar las filas que son coherentes: Autor: Juan Ramón López Rodríguez 23

24 Tabla Combinada: Paso 2 Origen: Tabla Origen: Tabla Departamento.NumDept = NSS... NumDept NumDept NomDept Departamento.NumDept Fila seleccionada 1... D01 D01 Ventas... Verdadero 1... D01 D02 Produccion... Falso 2... D01 D01 Ventas... Verdadero 2... D01 D02 Produccion... Falso 3... D02 D01 Ventas... Falso 3... D02 D02 Produccion... Verdadero 4... D02 D01 Ventas... Falso 4... D02 D02 Produccion... Verdadero Resultando la tabla combinada final: Tabla Combinada después del paso 2 Origen: Tabla Origen: Tabla Departamento NSS NPila... NumDept... NumDept NomDept 1 Juan... D01... D01 Ventas... 2 Pedro... D01... D01 Ventas... 3 María... D02... D02 Produccion... 4 Antonio... D02... D02 Produccion... Una vez obtenida la tabla combinada definitiva, es posible ya comprobar el resto de condiciones especificadas en la cláusula WHERE, evaluar las expresiones de la cláusula SELECT y calcular el resultado final SELECT Npila, NomDept FROM, Departamento WHERE.NumDept = Departamento.NumDept Tabla Combinada después del paso 2 Resultado consulta NSS NPila... NumDept... NumDept NomDept NPila NomDept 1 Juan... D01... D01 Ventas... Juan Ventas 2 Pedro... D01... D01 Ventas... Pedro Ventas 3 María... D02... D02 Produccion... María Produccion 4 Antonio... D02... D02 Produccion... Antonio Produccion Es necesario observar que, de pretender incluir en el resultado el número del departamento, deberíamos especificar de cuál de las dos columnas con el mismo nombre de la tabla combinada pretenderíamos extraerlo. Las posibilidades serían dos: la columna procedente de, o la columna procedente de Departamento. Cualquiera de las dos opciones sería válida SELECT Npila,.NumDept, NomDept FROM, Departamento WHERE.NumDept = Departamento.NumDept SELECT Npila, Departamento.NumDept, NomDept FROM, Departamento WHERE.NumDept = Departamento.NumDept Consultas que involucran varias veces a la misma tabla. Autor: Juan Ramón López Rodríguez 24

25 Qué sucede cuando tenemos una clave foránea que referencia a una clave primaria de la misma tabla? Que las cosas se complican! Volvamos a nuestro ejemplo: la tabla contiene una clave foránea de ese tipo: NSSSupervisor. Esta columna permite almacenar, para cada empleado, el NSS de su jefe, que a su vez es un empleado y debe estar registrado en la tabla. Sin embargo, no se incluye una columna para poder registrar el nombre del jefe da cada empleado entre el resto de sus datos. Supongamos ahora que nos hacen llegar la siguiente petición: Para todos aquellos empleados de la empresa que tengan jefe, se necesita la lista de sus nombres y los nombres de sus jefes inmediatos. Es fácil pensar cómo obtener manualmente la información: - Se recuperan los datos de todos los empleados con jefe de la empresa: todas las filas de la tabla con NSSSupervisor no nulo. - De cada fila, nos quedamos con el nombre del empleado (NPila) y el NSS de su supervisor (NSSSupervisor). - Utilizamos el NSS del supervisor, y localizamos la fila que le corresponde en la tabla (de nuevo). - Recuperamos de la fila el nombre del supervisor (NPila) Como se puede ver, estamos dando dos usos a la tabla ; o, dicho de otra manera, estamos contemplando la tabla desde dos puntos de vista: 1. Tabla que mantiene información sobre los empleados de la empresa. 2. Tabla que mantiene información sobre los jefes de la empresa. O lo que es lo mismo: estamos combinando una tabla consigo misma! Este hecho sugiere una posible vía para la elaboración de una consulta SQL que permita obtener la información deseada: incluir dos veces la misma tabla () en la cláusula FROM; y combinar las dos tablas de forma que cada fila de un empleado se una a la fila correspondiente a su jefe. De ese modo, la tabla resultante tendrá una fila por cada empleado de la empresa, e incluirá en cada una de ellas el nombre del empleado, y el nombre de su jefe: precisamente, la información que necesitamos. La consulta a realizar sería esta: SELECT Emp.Npila, Jefe.NPila FROM Emp, Jefe WHERE Emp.NSSSupervisor = Jefe.NSS Para poder entender la consulta, debemos aclarar una serie de cuestiones: - Incluir dos veces a la misma tabla en la cláusula FROM nos da la ilusión de contar con dos copias exactamente iguales de la tabla: una con información sobre empleados y otra con información sobre jefes. - Para poder diferenciar cada una de las copias, utilizaremos sendos alias de la tabla: nombres (apodos) que le daremos a la tabla original cada vez que la Autor: Juan Ramón López Rodríguez 25

Transformación ER Relacional para el diseño de bases de datos relacionales

Transformación ER Relacional para el diseño de bases de datos relacionales Transformación ER Relacional para el diseño de bases de datos relacionales Como habíamos avanzado en su momento, un esquema conceptual basado en el modelo Entidad-Relación puede ser transformado, de acuerdo

Más detalles

Manual de Sentencias Básicas en SQL

Manual de Sentencias Básicas en SQL Manual de Sentencias Básicas en SQL Pues hoy que he estado enredando un rato con MySQl, y me he acordado de aquellos comienzos en los que tenía que volver a mis antiguos apuntes para lograr entender las

Más detalles

INFORMÁTICA MÉDICA. Profesor: MsC. Liz Armenteros Chávez

INFORMÁTICA MÉDICA. Profesor: MsC. Liz Armenteros Chávez INFORMÁTICA MÉDICA Profesor: MsC. Liz Armenteros Chávez Tema No.2: Gestión de la Información Biomédica Conferencia No.4 SQL: Structured Query Language. Consultas Simples. Marzo, 2014 Introducir las consultas

Más detalles

1. DML. Las consultas multitabla

1. DML. Las consultas multitabla 1.1 Introducción 1. DML. Las consultas multitabla Hasta ahora hemos visto consultas que obtienen los datos de una sola tabla, en este tema veremos cómo obtener datos de diferentes tablas en una sola instrucción

Más detalles

TEMA 4.. CONSULTA DE DATOS I.

TEMA 4.. CONSULTA DE DATOS I. TEMA 4.. CONSULTA DE DATOS I. 4.1 El lenguaje DML (Lenguaje de manipulación de datos) Las sentencias DML(Data Manipulation Language) del lenguaje SQL (Structured Query Language o Lenguaje de peticiones

Más detalles

El SQL es un lenguaje estándar de programación para el acceso a bases de datos.

El SQL es un lenguaje estándar de programación para el acceso a bases de datos. El SQL es un lenguaje estándar de programación para el acceso a bases de datos. El lenguaje SQL se utiliza para acceder y manipular datos en cualquier base de datos del mercado, como por ejemplo, para

Más detalles

1. DML. Las consultas de resumen

1. DML. Las consultas de resumen 1.1 Introducción 1. DML. Las consultas de resumen Una de las funcionalidades de la sentencia SELECT es el permitir obtener resúmenes de los datos contenidos en las columnas de las tablas. Para poder llevarlo

Más detalles

SQL Básico. José Muñoz Jimeno Febrero 2015

SQL Básico. José Muñoz Jimeno Febrero 2015 SQL Básico José Muñoz Jimeno Febrero 2015 Control de cambios Version Fecha Comentarios 1.0 13/02/2015 Primera versión para el curso Introducción a las bases de datos con MySQL en el COITCV La última versión

Más detalles

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL)

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL) Qué es una base de datos? Una base de datos (cuya abreviatura es BD) es una entidad en la cual se pueden almacenar datos de manera estructurada, con la menor redundancia posible. Diferentes programas y

Más detalles

SELECT listadecampos FROM nombredetablas WHERE condicionesdebúsqueda;

SELECT listadecampos FROM nombredetablas WHERE condicionesdebúsqueda; SQL El Lenguaje de Consulta Estructurado (SQL) se usa para consultar, actualizar y administrar bases de datos relacionales, tales como las de Microsoft Access. Al crear una consulta en la ventana Consulta,

Más detalles

MATERIAL INTRODUCTORIO ORACLE 11G

MATERIAL INTRODUCTORIO ORACLE 11G MATERIAL INTRODUCTORIO ORACLE 11G Esp. JONATHAN GUERRERO ASTAIZA Capacidades de una sentencia SELECT La sentencia SELECT recibe información a partir de una base de datos. Con la sentencia SELECT usted

Más detalles

ADMINISTRACION DE ORACLE 9i Guía de estudio (OCA) TEMA 1

ADMINISTRACION DE ORACLE 9i Guía de estudio (OCA) TEMA 1 ADMINISTRACION DE ORACLE 9i Guía de estudio (OCA) TEMA 1 TEMA 1. CONSULTAS BÁSICAS Fundamentos de SQL Tipos de datos, operadores y literales Sentencia SELECT Limitación de filas y operadores Ordenación

Más detalles

Sistemas Informacionales

Sistemas Informacionales Sistemas Informacionales Tanto Access como Excel, permiten generar informes a partir de los datos almacenados (en forma de tablas) o importados de fuentes externas (como veremos el complemento Power Pivot

Más detalles

1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón

1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón 1. Lenguaje de Definición de Datos 2. Lenguaje de Manipulación de Datos M. C. Gustavo Alfonso Gutiérrez Carreón Los 'sistemas de gestión de bases de datos (en inglés database management system, abreviado

Más detalles

Práctica 2: CONSULTAS

Práctica 2: CONSULTAS Departamento de Lenguajes y Sistemas Informáticos E.T.S. Ingeniería Informática. Universidad de Sevilla Avda Reina Mercedes s/n. 41012 Sevilla Tlf/Fax 954 557 139 E-mail lsi@lsi.us.es Web www.lsi.us.es

Más detalles

PARTE I Desarrollen las siguientes cuestiones (concepto, ejemplos, etc):

PARTE I Desarrollen las siguientes cuestiones (concepto, ejemplos, etc): PARTE I Desarrollen las siguientes cuestiones (concepto, ejemplos, etc): 1. Como realizar la consulta entre múltiples tablas Generalmente el poder de la sentencia SELECT se basa en su capacidad de poder

Más detalles

INFORMÁTICA MÉDICA. Profesor: MsC. Liz Armenteros Chávez

INFORMÁTICA MÉDICA. Profesor: MsC. Liz Armenteros Chávez INFORMÁTICA MÉDICA Profesor: MsC. Liz Armenteros Chávez Tema No.2: Gestión de la Información Biomédica Conferencia No.3 DDL (Data Definition Language) Lenguaje de definición de datos Marzo, 2014 Definir

Más detalles

Insertar Datos en Tablas

Insertar Datos en Tablas Insertar Datos en Tablas La instrucción básica para insertar valores a los atributos (columnas) de una tabla es la instrucción INSERT INTO Insertar una sola tupla Para insertar una tupla en la tabla, se

Más detalles

Modelamiento y Gestión de Base de Datos

Modelamiento y Gestión de Base de Datos Modelamiento y Gestión de Base de Datos Uso de sentencias para el envió y extracción de datos Objetivos: Identificar la sintaxis de las consultas de datos Elaborar sentencias de manejo de datos. INTRODUCCION:

Más detalles

Pero es que además, en ocasiones no hay otra forma de conseguir el resultado deseado que crear la consulta directamente en SQL.

Pero es que además, en ocasiones no hay otra forma de conseguir el resultado deseado que crear la consulta directamente en SQL. 1. INTRODUCCIÓN A unque ya hemos visto cómo realizar consultas para obtener resultados de una base de datos Access a través de la vista Diseño, debes conocer el lenguaje en el que realmente se realizan

Más detalles

Bases de Datos 1. Teórico: Structured Query Language

Bases de Datos 1. Teórico: Structured Query Language Bases de Datos 1 Teórico: Structured Query Language Historia Los orígenes del SQL están ligados a los orígenes de las bases de datos relacionales Estandarizado por ANSI en 1986 (SQL-86) Hubieron varias

Más detalles

Conceptos básicos de álgebra relacional

Conceptos básicos de álgebra relacional PROGRAMA DE FORMACIÓN UNIDAD DE APRENDIZAJE ACTIVIDAD OBJETIVOS IDENTIFICACIÓN DE LA ACTIVIDAD PEDAGÓGICA OFIMATICA, WEB Y DESARROLLO DE SISTEMAS II-A GESTORES DE BASES DE DATOS ALGEBRA RELACIONAL APLICAR

Más detalles

CONSULTAS MULTITABLAS

CONSULTAS MULTITABLAS CONSULTAS MULTITABLAS 1. SELECCIONAR FILAS Para seleccionar filas tenemos que indicar un criterio de búsqueda, un criterio de búsqueda es una condición que deberán cumplir todas las filas que aparezcan

Más detalles

Consulta por Criterio y Expresión

Consulta por Criterio y Expresión CODIGO: GAR071 V: 00.05.13 Página 1 de 1 Área/Asignatura Tecnología e Informática Grado 9 Periodo 4 Consecutivo T.I.04-03 Edgar Chamorro Guía2: Consultas por Criterio y Docente Actividad expresión Consulta

Más detalles

Lenguaje de manipulación de datos

Lenguaje de manipulación de datos Introducción Lenguaje de manipulación de datos (Data Manipulation Language) Permite a los usuarios llevar a cabo las tareas de consulta o manipulación de la BD. El más popular es SQL. Tablas de ejemplo

Más detalles

ÍNDICE. Introducción... Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1

ÍNDICE. Introducción... Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1 ÍNDICE Introducción... XI Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1 Características y novedades de Access 2010... 1 Comienzo rápido del trabajo y seguimiento de la información...

Más detalles

Tema 7. Elaboración de consultas básicas de selección. Lenguajes de bases de datos. SQL básico 15/12/2011

Tema 7. Elaboración de consultas básicas de selección. Lenguajes de bases de datos. SQL básico 15/12/2011 Lenguajes de bases de datos Tema 7 Elaboración de consultas básicas de selección En esta unidad se abordan cuestiones que, aunque están definidas por el estándar ANSI/ISO SQL, no están asumidas al 100%

Más detalles

SQL, Consultas. Son Importantes las Consultas? Cuál es el Resultado de SELECT? Andrés Moreno S.

SQL, Consultas. Son Importantes las Consultas? Cuál es el Resultado de SELECT? Andrés Moreno S. SQL, Consultas Andrés Moreno S. 1 Son Importantes las Consultas? Una cosa es guardar la información en forma estructurada y ordenada. Pero el utilizar la información y entender su relevancia son la clave

Más detalles

XQuery. Un lenguaje de consulta para XML.

XQuery. Un lenguaje de consulta para XML. XQuery. Un lenguaje de consulta para XML. Nieves Carralero Colmenar. IES Pedro Mercedes. Junta de Comunidades de Castilla-La Mancha. España. Resumen En este artículo se muestra una introducción práctica

Más detalles

Modulo I: Introducción Gestores de Bases De Datos

Modulo I: Introducción Gestores de Bases De Datos Modulo I: Introducción Gestores de Bases De Datos El SQL El SQL (Lenguaje de Consulta Estructurado Structure Query Language), es un lenguaje de consulta estructurado establecido claramente como el lenguaje

Más detalles

SELECT SELECT WHERE WHERE GROUP BY

SELECT SELECT WHERE WHERE GROUP BY [,,...] * FROM [alias_tabla_1][, [alias_tabla_2],... [alias_tabla_n]] [] [GROUP BY [HAVING]]

Más detalles

LENGUAJE DE MANIPULACIÓN DE DATOS (DML) CONSULTA DE DATOS

LENGUAJE DE MANIPULACIÓN DE DATOS (DML) CONSULTA DE DATOS PREVIO 5 LENGUAJE DE MANIPULACIÓN DE DATOS (DML) CONSULTA DE DATOS INTRODUCCIÓN SQL permite realizar consultas con condiciones de búsqueda, de tal forma que los resultados son precisamente aquellos que

Más detalles

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 4: Crear consultas más complejas

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 4: Crear consultas más complejas Ministerio de Educación Base de datos en la Enseñanza. Open Office Módulo 4: Crear consultas más complejas Instituto de Tecnologías Educativas 2011 Crear consultas más complejas Consultas con criterios,

Más detalles

El Modelo Relacional (5 de 5)

El Modelo Relacional (5 de 5) El Modelo Relacional (5 de 5) T3.2006-07 Dpto. Lenguajes y Sistemas Informáticos Universidad de Alicante OPERADORES del MR LDD lenguaje de definición de datos creación/modificación de tablas, seguridad,

Más detalles

Consultas. Comparación Filtros vs Consultas Tipos de Consultas Crear, reutilizar y Ejecutar Consultas. Consultas Diapositiva 1.

Consultas. Comparación Filtros vs Consultas Tipos de Consultas Crear, reutilizar y Ejecutar Consultas. Consultas Diapositiva 1. Consultas Comparación Filtros vs Consultas Tipos de Consultas Crear, reutilizar y Ejecutar Consultas Consultas Diapositiva 1 Qué son? Una consulta es un objeto de base de datos que permite extraer campos

Más detalles

UNIDAD 8. LAS CONSULTAS DE RESUMEN

UNIDAD 8. LAS CONSULTAS DE RESUMEN UNIDAD 8. LAS CONSULTAS DE RESUMEN 8.1 Definición En Access podemos definir un tipo de consultas cuyas filas resultantes son un resumen de las filas del origen de la consulta, por eso las denominamos consultas

Más detalles

PERIODO 3 SOFTWARE MANEJADOR DE BASE DE DATOS CONCEPTOS INTERMEDIOS DE MICROSOFT ACCESS

PERIODO 3 SOFTWARE MANEJADOR DE BASE DE DATOS CONCEPTOS INTERMEDIOS DE MICROSOFT ACCESS PERIODO 3 SOFTWARE MANEJADOR DE BASE DE DATOS CONCEPTOS INTERMEDIOS DE MICROSOFT ACCESS CONTENIDOS PROPIEDADES DE LOS CAMPOS TAMAÑO DEL CAMPO FORMATO DEL CAMPO LUGARES DECIMALES MÁSCARA DE ENTRADA TÍTULO

Más detalles

Introducción 1 Recuperación de Datos mediante la Sentencia SQL SELECT

Introducción 1 Recuperación de Datos mediante la Sentencia SQL SELECT Introducción Objetivos I-2 Objetivos del Curso I-3 Oracle11g - 12cI-5 Oracle Database 11g - 12cI-6 Oracle Application Server 11g - 12cI-7 Oracle Enterprise Manager 11g - 12cGrid Control I-8 Sistema de

Más detalles

UNIDAD4. 1. Procedimentales 2. No Procedimentales

UNIDAD4. 1. Procedimentales 2. No Procedimentales UNIDAD4 Concepto de Clasificación de Lenguajes Concepto: Un lenguaje de consulta es un lenguaje en el que un usuario solicita información de la base de datos. Estos lenguajes son normalmente de más alto

Más detalles

SQL. Amparo López Gaona. México, D.F. Noviembre 2003

SQL. Amparo López Gaona. México, D.F. Noviembre 2003 Amparo López Gaona México, D.F. Noviembre 2003 Introducción El lenguaje SQL (Structured Query Language) es el lenguaje estándar para trabajo con bases de datos relacionales. Permite la definición, acceso

Más detalles

SQL SERVER Curso Teórico-Práctico

SQL SERVER Curso Teórico-Práctico SQL SERVER 2008-2012 Curso Teórico-Práctico IMPLEMENTACION DE LA BASE DE DATOS Nomenclatura Todas las tablas tendrán: - Un identificador de tipo entero auto numérico. Ésta será la clave primaria. La denominamos

Más detalles

Diseño de base de datos: Modelo Entidad Relación (I)

Diseño de base de datos: Modelo Entidad Relación (I) Diseño de base de datos: Modelo Entidad Relación (I) I. Fases del desarrollo para lograr un buen diseño El proceso de diseño de una base de datos comienza por una descripción detallada del sistema de información

Más detalles

Anexo 3 COMPONENTES DE SQL SERVER. Los DDL (Data Definition Languaje) que permiten crear y definir nuevas

Anexo 3 COMPONENTES DE SQL SERVER. Los DDL (Data Definition Languaje) que permiten crear y definir nuevas Anexo 3 COMPONENTES DE SQL SERVER COMANDOS Existen tres tipos de comandos SQL [5]: Los DDL (Data Definition Languaje) que permiten crear y definir nuevas bases de datos, campos e índices. En la tabla se

Más detalles

Ordenar y Filtrar Datos

Ordenar y Filtrar Datos Licenciatura en Gestión Universitaria Informática II Ordenar y Filtrar Datos Pag. 1 Ordenar y Filtrar Datos Cada encabezado de columna de una tabla en Excel tiene un botón de flecha en su extremo derecho

Más detalles

IDENTIFICACIÓN DE LA ACTIVIDAD PEDAGÓGICA

IDENTIFICACIÓN DE LA ACTIVIDAD PEDAGÓGICA PROGRAMA DE FORMACIÓN UNIDAD DE APRENDIZAJE ACTIVIDAD OBJETIVOS IDENTIFICACIÓN DE LA ACTIVIDAD PEDAGÓGICA SECRETARIADO GERENCIAL - ASISTENTE ADMINISTRATIVO - RECURSOS HUMANOS II-A MANEJO DE HOJA DE CALCULO

Más detalles

SUBCONSULTAS SQL. Cuando se ejecuta una consulta que contiene una subconsulta, la subconsulta se ejecuta por cada fila de la consulta principal.

SUBCONSULTAS SQL. Cuando se ejecuta una consulta que contiene una subconsulta, la subconsulta se ejecuta por cada fila de la consulta principal. SUBCONSULTAS SQL DEFINICION. Una subconsulta es una sentencia SELECT que aparece dentro de otra sentencia SELECT que llamaremos consulta principal. Se puede encontrar en la lista de selección, en la cláusula

Más detalles

Consultas. Consultas Diapositiva 1

Consultas. Consultas Diapositiva 1 Consultas Comparación Filtros vs Consultas Tipos de Consultas Criterios, Parámetros, Campos Calculados, Funciones de agregado Crear, reutilizar y ejecutar consultas Consultas Diapositiva 1 Consultas Cuando

Más detalles

Lenguaje de consulta de datos SELECT PARTE 2

Lenguaje de consulta de datos SELECT PARTE 2 Lenguaje de consulta de datos SELECT PARTE 2 Objetivos Conocer más usos de la sentencia SELECT de SQL para realizar consultas que afecten a varias tablas de la BD. Además veremos el uso de las clausulas

Más detalles

Operador Restricción

Operador Restricción Algebra Relacional Conjunto de operadores que opera sobre relaciones Cada uno de estos operadores toma una o dos relaciones como entrada y produce una nueva relación como salida. Las relaciones originales

Más detalles

Sistema Gestor de Bases de Datos. Un SGBD debe permitir: Manipular la base de datos: realizar consultas, actualizarla, generar informes.

Sistema Gestor de Bases de Datos. Un SGBD debe permitir: Manipular la base de datos: realizar consultas, actualizarla, generar informes. Sistema Gestor de Bases de Datos. Un Sistema Gestor de Bases de Datos (SGBD) o DBMA (DataBase Management System) es una colección de programas cuyo objetivo es servir de interfaz entre la base de datos,

Más detalles

Capítulo 4. Realización de consultas

Capítulo 4. Realización de consultas Capítulo 4 Realización de consultas ÍNDICE CAPÍTULO 4 Introducción sentencia SELECT Base de datos de ejemplo Consultas básicas Cláusula ORDER BY Cláusula DISTINCT Cláusula LIMIT Expresiones Funciones propias

Más detalles

Clase 4: SQL DDL DML Consultas Simples y Multitablas. BASE DE DATOS FAC.DE INGENIERIA - UNJu

Clase 4: SQL DDL DML Consultas Simples y Multitablas. BASE DE DATOS FAC.DE INGENIERIA - UNJu Clase 4: SQL DDL DML Consultas Simples y Multitablas BASE DE DATOS FAC.DE INGENIERIA - UNJu SQL (Structured query language) Es un lenguaje de consulta estructurado, surgido de un proyecto de investigación

Más detalles

Práctica 6: Consultas

Práctica 6: Consultas Práctica 6: Consultas INTRODUCCIÓN Para la realización de las siguientes prácticas el alumno debe descargar el fichero EMPRESA.ZIP, que contiene la base de datos objeto de las prácticas. La base de datos

Más detalles

TRABAJO DE EXCEL 1. QUÉ ES UNA FÓRMULA EN EXCEL?

TRABAJO DE EXCEL 1. QUÉ ES UNA FÓRMULA EN EXCEL? TRABAJO DE EXCEL 1. QUÉ ES UNA FÓRMULA EN EXCEL? Las fórmulas en Excel son expresiones que se utilizan para realizar cálculos o procesamiento de valores, produciendo un nuevo valor que será asignado a

Más detalles

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui PL/SQL - Oracle PL/SQL (Procedural Language/SQL) es una extensión de SQL, que agrega ciertas construcciones propias de lenguajes procedimentales, obteniendose como resultado un lenguaje estructural mas

Más detalles

GESTORES GESTORES DE BASES DE DATOS

GESTORES GESTORES DE BASES DE DATOS GESTORES GESTORES DE BASES DE DATOS Existen varios tipos de Sistemas gestores de bases de datos SGBD, según el modelo de datos que utilizan. Son estos: bases jerárquica, en red, relacional, y bases de

Más detalles

Modelamiento y Diseño de Base de Datos

Modelamiento y Diseño de Base de Datos Modelamiento y Diseño de Base de Datos Sub consultas y vistas Objetivos: Elaborar sub consultas, a partir de una consulta. Generar diferentes vistas a partir de las tablas de una base de datos. Introducción

Más detalles

SQL SERVER SQL Server 2005 permite tres tipos de operaciones con conjuntos: UNION, disponible en todas las versiones de SQL Server.

SQL SERVER SQL Server 2005 permite tres tipos de operaciones con conjuntos: UNION, disponible en todas las versiones de SQL Server. SQL SERVER 2005 Operaciones con Conjuntos SQL Server 2005 permite tres tipos de operaciones con conjuntos: UNION, disponible en todas las versiones de SQL Server. EXCEPT, nuevo en SQL Server 2005. INTERSECT,

Más detalles

Conceptos básicos de una consulta

Conceptos básicos de una consulta Conceptos básicos de una consulta 141 Conceptos básicos de una consulta Contenido Consulta Tipos de consultas Utilidad de las consultas Creación de consultas utilizando el asistente Crear consultas con

Más detalles

Vistas en MS SQL Server. Bases de Datos I Universidad Católica II Cuatrimestre

Vistas en MS SQL Server. Bases de Datos I Universidad Católica II Cuatrimestre Vistas en MS SQL Server Bases de Datos I Universidad Católica II Cuatrimestre - 2012 Definición «Vistas» Una vista se puede considerar una tabla virtual o una consulta almacenada. El conjunto de resultados

Más detalles

Método SQL para Calcular el valor máximo de un conjunto de columnas de una Tabla.

Método SQL para Calcular el valor máximo de un conjunto de columnas de una Tabla. Método SQL para Calcular el valor máximo de un conjunto de columnas de una Tabla. Utilización de subconsultas para realizar cálculos sobre N cantidad de columnas sin utilizar sentencias CASE Nombre Puntaje

Más detalles

UNIDAD 10. LAS CONSULTAS DE ACCIÓN

UNIDAD 10. LAS CONSULTAS DE ACCIÓN UNIDAD 10. LAS CONSULTAS DE ACCIÓN Las consultas de acción son consultas que permiten realizar cambios en los datos almacenados en una tabla. Con estas consultas podemos crear una nueva tabla a partir

Más detalles

INTRODUCIR FORMULAS EN EXCEL

INTRODUCIR FORMULAS EN EXCEL INTRODUCIR FORMULAS EN EXCEL Las fórmulas, comienzan con un signo (=) y son ecuaciones que efectúan cálculos con los valores ingresados en la hoja de cálculo. Por ejemplo, la siguiente fórmula multiplica

Más detalles

SQL: Lenguaje de Interrogación Estructurado

SQL: Lenguaje de Interrogación Estructurado SQL: Lenguaje de Interrogación Estructurado SQL Es el lenguaje para Bases de Datos Relacionales más usado Es un lenguaje declarativo: QUÉ no CÓMO El núcleo fundamental se basa en el Algebra Relacional,

Más detalles

LENGUAJE DE MANIPULACIÓN DE DATOS

LENGUAJE DE MANIPULACIÓN DE DATOS LENGUAJE DE MANIPULACIÓN DE DATOS Las instrucciones de DML funcionan con los datos de la base de datos. Mediante estas instrucciones puede cambiarlos o recuperar información. Las instrucciones de DML incluyen:

Más detalles

Un proyecto de IBM llamado Sistem/R construye un prototipo simple llamado SQUARE que después se transformó en SQL.

Un proyecto de IBM llamado Sistem/R construye un prototipo simple llamado SQUARE que después se transformó en SQL. CONTENIDO: 1. Lenguaje SQL 1. Componentes 2. Comandos 3. Clausulas 4. Operadores lógicos 5. Operadores de comparación 6. Funciones de agregado 2. MYSQL 1. Como entrar a MySQL 2. Comandos generales 3. Sintaxis

Más detalles

Características del lenguaje SQL

Características del lenguaje SQL Lenguaje SQL Características del lenguaje SQL Es el lenguaje estándar para realizar operaciones en bases de datos relacionales. Instrucciones: SELECT Consulta. Su implementación está basada en álgebra

Más detalles

Bases de Datos OTROS ASPECTOS MODELO E-R

Bases de Datos OTROS ASPECTOS MODELO E-R Bases de Datos OTROS ASPECTOS MODELO E-R Bases de Datos GENERALIZACIÓN Y ESPECIALIZACIÓN Bases de Datos ESPECIALIZACIÓN Bases de Datos -> Especialización Un conjunto de entidades, puede incluir subgrupos

Más detalles

Bases de Datos Relacionales y SQL: Una Introducción

Bases de Datos Relacionales y SQL: Una Introducción 1 Bases de Datos Relacionales y SQL: Una Introducción Protein Design Group, CNB CSIC 2 Sumario Qué es un SGBDR? Usuarios de base de datos Tablas: creación y definición de restricciones Manipulación de

Más detalles

6.1 Introducción. Fund. Bases de Datos Ing. Felipe Alanís González -ITD- 1

6.1 Introducción. Fund. Bases de Datos Ing. Felipe Alanís González -ITD- 1 6.1 Introducción SQL es más amigable para el usuario, a diferencia de Algebra Relacional, Aunque está basado principalmente en él. Es el lenguaje comercial más popular. Es el lenguaje estándar de las Bases

Más detalles

Introducción a Bases de Datos. Pablo Zaidenvoren

Introducción a Bases de Datos. Pablo Zaidenvoren Introducción a Bases de Datos Pablo Zaidenvoren - 2009 Qué podemos hacer ahora? Hasta ahora, la única forma que conocemos para persistir los datos de una aplicación es con archivos de texto. Cada uno tiene

Más detalles

Manejo de Tablas y Llaves Foráneas

Manejo de Tablas y Llaves Foráneas Manejo de Tablas y Llaves Foráneas Llaves Foráneas Para manejar las llaves foráneas, deben crearse al menos dos tablas, la primera tal y como se ha hecho anteriormente CREATE TABLE nombre_tabla ( nombre_columna_1

Más detalles

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos PROGRAMACIÓN DE SHELL SCRIPTS EN LINUX El shell es un intérprete de órdenes, pero el shell no es solamente eso; los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como tales,

Más detalles

Cliente- Servidor. Bases de Datos Distribuidas

Cliente- Servidor. Bases de Datos Distribuidas 1 2 3 4 Cliente- Servidor La tecnología que se utiliza habitualmente para distribuir datos es la que se conoce como entorno (o arquitectura) cliente/servidor (C/S). Todos los SGBD relacionales del mercado

Más detalles

Modificación de Tablas. Miguel Angel Garduño Cordova Isaac Méndez Hernández

Modificación de Tablas. Miguel Angel Garduño Cordova Isaac Méndez Hernández Reporte 3 Modificación de Tablas Catedrático: Alumnos: Ing. María Elena Reyes Castellanos Miguel Angel Garduño Cordova Isaac Méndez Hernández Índice General Índice de Imágenes y tablas 2 Introducción 3

Más detalles

Qué es SGBD? Mencionar 4 tipos de SGBD. SGBD de red. Román Gutiérrez Sosa. SGBD jerárquicos. Modelo de datos relacionales.

Qué es SGBD? Mencionar 4 tipos de SGBD. SGBD de red. Román Gutiérrez Sosa. SGBD jerárquicos. Modelo de datos relacionales. Qué es SGBD? Es un tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. El propósito general de los sistemas de gestión

Más detalles

Manejo de Bases de Datos Mysql en Lenguaje C

Manejo de Bases de Datos Mysql en Lenguaje C http://undersecurity.net Servidor irc : irc.ircnode.com Canal irc : #undersec Manejo de Bases de Datos Mysql en Lenguaje C By: S[e]C Entendiendo el tratamiento de una base de datos MySQL. Antes de ir al

Más detalles

SQL SERVER Para ingresar a la ventana de administración del SQL Server, proceda a realizar los siguientes pasos:

SQL SERVER Para ingresar a la ventana de administración del SQL Server, proceda a realizar los siguientes pasos: SQL SERVER 2005 Microsoft SQL Server es un sistema de gestión de bases de datos relacionales (SGBD) basada en el lenguaje SQL, capaz de poner a disposición de muchos usuarios grandes cantidades de datos

Más detalles

BASE DE DATOS EN EXCEL Por Mabel Cortes C.

BASE DE DATOS EN EXCEL Por Mabel Cortes C. BASE DE DATOS EN EXCEL Por Mabel Cortes C. BASE DE DATOS Una base de datos es cualquier conjunto de información organizada de tal forma que pueda ser utilizada eficientemente. Una agenda telefónica es

Más detalles

LISTA PARA VALIDACIÓN DE DATOS EN EXCEL

LISTA PARA VALIDACIÓN DE DATOS EN EXCEL LISTA PARA VALIDACIÓN DE DATOS EN EXCEL Cuando compartes tus libros de Excel con otras personas y ellos introducen información en las hojas que has preparado con tanto esfuerzo, es de suma importancia

Más detalles

EL MODELO DE DATOS RELACIONAL

EL MODELO DE DATOS RELACIONAL EL MODELO DE DATOS RELACIONAL El modelo de datos relacional se ha establecido actualmente como el principal modelo de datos para las aplicaciones de procesamiento de datos, esto debido a su simplicidad,

Más detalles

Bases de Datos Geográficos

Bases de Datos Geográficos Bases de Datos Geográficos SQL - Lenguaje de Bases de Datos Relacionales Instituto de Agrimensura - Facultad de Ingeniería Universidad de la República Introducción El nombre SQL (Structured Query Language)

Más detalles

QUÉ ES UNA FÓRMULA EN EXCEL?

QUÉ ES UNA FÓRMULA EN EXCEL? QUÉ ES UNA FÓRMULA EN EXCEL? Las fórmulas en Excel son expresiones que se utilizan para realizar cálculos o procesamiento de valores, produciendo un nuevo valor que será asignado a la celda en la cual

Más detalles

Conjunto de operadores para consultar BD-Rs. Define conjunto de ops estándar en BD-Rs. Operadores que reciben relaciones y devuelven relaciones:

Conjunto de operadores para consultar BD-Rs. Define conjunto de ops estándar en BD-Rs. Operadores que reciben relaciones y devuelven relaciones: Algebra Relacional Visión General: Conjunto de operadores para consultar BD-Rs. Define conjunto de ops estándar en BD-Rs. Operadores que reciben relaciones y devuelven relaciones: Sobre conjuntos de tuplas:

Más detalles

1.- CREACIÓN DE CONSULTAS.

1.- CREACIÓN DE CONSULTAS. 1.- CREACIÓN DE CONSULTAS. Una consulta permite efectuar preguntas acerca de la información almacenada en las tablas. En una consulta se pueden obtener datos de una tabla e incluso de varias tablas, por

Más detalles

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 6

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 6 Computación Aplicada Universidad de Las Américas Aula virtual de Computación Aplicada Módulo de Excel 2013 LIBRO 6 Contenido FORMA DE HACER CÁLCULOS... 3 QUÉ SON LAS FÓRMULAS Y QUÉ LAS FUNCIONES?... 4

Más detalles

FUNDAMENTOS MATEMÁTICOS (Grado en Ingeniería Informática) Práctica 8. MATRICES

FUNDAMENTOS MATEMÁTICOS (Grado en Ingeniería Informática) Práctica 8. MATRICES FUNDAMENTOS MATEMÁTICOS (Grado en Ingeniería Informática) Práctica 8. MATRICES 1.- Introducción de vectores y matrices. Con Derive los vectores se pueden introducir de dos formas distintas: a) Mediante

Más detalles

A.1. Definiciones de datos en SQL

A.1. Definiciones de datos en SQL A.1. Definiciones de datos en SQL Las Sentencias del lenguaje de definición de datos (DDL) que posee SQL operan en base a tablas. Las Principales sentencias DDL son las siguientes: CREATE TABLE DROP TABLE

Más detalles

Bases de datos: Lenguaje de consultas SQL

Bases de datos: Lenguaje de consultas SQL Bases de datos: Lenguaje de consultas SQL EMPEZAR LA CASA POR EL TEJADO Del código máquina a los lenguajes de alto nivel. Img 0. Del código máquina al lenguaje de alto nivel. Creación propia. De los sistemas

Más detalles

COMBINAR CORRESPONDENCIA

COMBINAR CORRESPONDENCIA COMBINAR CORRESPONDENCIA Microsoft Office Word nos provee una herramienta muy útil que nos permite incluir en un documento, datos que se encuentran almacenados en otro lugar. De esta forma logramos obtener

Más detalles

Es decir, se va a mostrar la equivalencia más eficiente entre las distintas relaciones representables en E-R y MR.

Es decir, se va a mostrar la equivalencia más eficiente entre las distintas relaciones representables en E-R y MR. 05/03/2012 En este tema vamos a hablar de la traducción, o mejor, la transformación de los conceptos representados en un esquema Entidad-Relación a sus correspondientes en Modelo Relacional. Esta "traducción",

Más detalles

INTRODUCCIÓN A LAS BASES DE DATOS. L.I Gerardo Benavides Pérez

INTRODUCCIÓN A LAS BASES DE DATOS. L.I Gerardo Benavides Pérez INTRODUCCIÓN A LAS BASES DE DATOS L.I Gerardo Benavides Pérez SISTEMA GESTOR DE BASE DE DATOS Un sistema gestor de bases de datos (SGBD) consiste en una colección de datos interrelacionados y un conjunto

Más detalles

SQL (Structured Query Language)

SQL (Structured Query Language) SQL (Structured Query Language) El lenguaje de consulta estructurado o SQL (por sus siglas en inglés Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite

Más detalles

Sin embargo, es muy habitual la necesidad de realizar ese cálculo no de forma global sino particularizando por algún criterio.

Sin embargo, es muy habitual la necesidad de realizar ese cálculo no de forma global sino particularizando por algún criterio. Lecciones SQL > T09 Agregación Contenidos Group by Recordemos que el uso de funciones de agregados nos permite realizar cálculos sobre la totalidad de filas que cumplen una determinada condición (o sobre

Más detalles

Ejercicio 1 Funciones de SQL

Ejercicio 1 Funciones de SQL Ejercicio 1 Funciones de SQL 1. Mostrar el nombre, identificador del departamento y comisión de todos los empleados. Ordenarlos primero por el nombre de manera alfabéticamente descendente, seguido por

Más detalles

Consultas. capítulo 22

Consultas. capítulo 22 Consultas capítulo 22 Consultas consultas Cuando hay que realizar una tarea como buscar una información en la base de datos puede resultar laborioso hacerlo de forma manual, registro por registro. Para

Más detalles

Lenguaje SQL en ABAP IV 1-19

Lenguaje SQL en ABAP IV 1-19 Lenguaje SQL en ABAP IV 1-19 Lección 1 Lenguaje SQL en ABAP IV En Abap tenemos las sentencias llamadas OPEN SQL que son el subconjunto del STANDARD SQL integrado en el lenguaje ABAP. De esta forma podemos

Más detalles

Computación Web (Curso 2015/2016)

Computación Web (Curso 2015/2016) Bases de Datos (I) Computación Web (Curso 2015/2016) Jesús Arias Fisteus // jaf@it.uc3m.es Bases de Datos (I) p. 1 Bases de datos relacionales Colección de datos almacenados en una o más tablas. Las tablas

Más detalles

Conceptos Avanzados de Bases de datos

Conceptos Avanzados de Bases de datos Página 1 Conceptos Avanzados de Bases de datos (1) Introducción a las Bases de Datos (2) Lenguaje Estándar de Consultas SQL Definición formal SQL Página 2 Es un conjunto exhaustivo (en su modelización

Más detalles

Modelo Relacional I. Nos encontramos en la FASE 2: REGLAS DE TRANSFORMACIÓN del Modelo Entidad Relación (MER) al Modelo Relacional (MR).

Modelo Relacional I. Nos encontramos en la FASE 2: REGLAS DE TRANSFORMACIÓN del Modelo Entidad Relación (MER) al Modelo Relacional (MR). Modelo Relacional I El modelo de datos relacional es, desde hace tiempo, el más utilizado para modelar sistemas reales que trabajan con información. Se impuso debido a las limitaciones que implicaba el

Más detalles