Guia05com218 2011
Guia05com218 2011
Guia05com218 2011
UNIVERSIDAD DE EL SALVADOR FACULTAD DE CIENCIAS ECONMICAS DEPARTAMENTO DE COMPUTACIN COMPUTACIN II GUIA DE CLASE #: 5
Vista Diseo: abre la ventana Diseo de la consulta, en la que podremos crear o modificar su estructura. Vista hoja de datos: ejecuta la consulta y presntale resultado en una hoja de datos que permite ver, agregar o editar lo registros. Vista SQL: permite crear o modificar una consulta usando instrucciones del lenguaje de consultas estructurado SQL.
Pgina 1 de 50
Ciclo II-2011
Nota: la mayora de ejemplos de esta gua han sido realizados utilizando la base de datos Neptuno ubicada en las plantillas de ejemplo de la ventana de Introduccin de Access 2010.
Abrir una consulta existente. Una consulta se puede abrir en Vista Hoja de datos activando la ventana Base de datos, seleccionando la ficha Consultas, seleccionando la consulta en la lista y pulsando en el botn Abrir; o bien haciendo doble clic sobre su nombre en la lista.
Creacin de una consulta. Una consulta se puede crear en vista de diseo a partir de una o ms tablas relacionadas incluyendo cualquier campo de ellas. La siguiente figura muestra un ejemplo de una tabla con dos tablas relacionadas, esta ventana est dividida en dos partes: el rea superior, que muestra las tablas elegidas, y el rea inferior denominada cuadricula QBE, en la que se incluyen los campos a mostrar y los criterios de ordenacin o bsqueda. Estos criterios se introducen mediante operadores de acuerdo con una serie de reglas establecidas.
1.
2.
Pgina 2 de 50
Ciclo II-2011
3. Seleccione la tabla(s) o consulta(s) cuyos campos desea incluir en la consulta y pulse el despus de cada seleccin. En este primer ejemplo seleccione las tablas clientes y pedidos.
botn
Agregar
Pgina 3 de 50
Ciclo II-2011
4. Cierre el cuadro de dilogo Mostrar tabla pulsando el botn Cerrar. 5. Para incluir los campos en la cuadrcula QBE, arrstrelos desde la lista de campos a la cuadrcula o bien despliegue la lista de campos disponibles pulsando el botn de flecha que se encuentra a la derecha de la casilla Campo y seleccione el campo deseado. Siguiendo con el ejemplo selecciones los campos Id de cliente, Id de pedido y fecha de pedido de la tabla Pedidos, para finalizar de la tabla Clientes seleccione Apellidos y Nombre.
6. Complemente las casillas de la cuadrcula QBE estableciendo cualquier criterio de ordenacin o bsqueda a travs de las filas Orden y Criterios respectivamente.
Ejecutar una consulta. Para realizar las acciones especificadas en la consulta de clic en el botn
Al hacer clic en el botn ejecutar, el resultado de la consulta de seleccin anterior sera la siguiente:
Pgina 4 de 50
Ciclo II-2011
Campo En esta casilla se pueden seleccionar todos los campos de la tabla ( con el *) o de uno en uno, seleccionando cada uno en una columna. La forma de incluir el nombre de un campo en esta casilla es: 1. Arrastrando el nombre del campo desde la seccin superior. 2. Haciendo doble clic en la tabla de la seccin superior 3. Haciendo clic sobre la casilla campo y pulsando sobre la flecha que aparece. Se desplegar un lista de los campos para seleccionar. Tabla En esta casilla figura la tabla de la que procede el campo seleccionado en esa columna. Esta opcin es muy importante cuando se trabaja con campos de varias tablas.
Pgina 5 de 50
Ciclo II-2011
Orden Ascendente, descendente o sin orden. Este orden se aplicar a los registros que se obtengan en la consulta segn la columna en la que se est indicando el orden. El criterio se establece en un campo y se ordenan los resultados en funcin del campo que se quiera. Para seleccionar el tipo de orden que se quiere se hace clic sobre la casilla Orden, aparecer una flecha en la zona derecha de la casilla. Al pinchar sobre la flecha aparece un men con los tipos de orden aplicables a la consulta.
Establecer criterios. Dentro de la casilla criterio se escribe una expresin, bien de texto, numrica o numrica con operadores. Si no se incluye ningn operador con la expresin (texto o nmero) el programa acta como si el operador fuera "=", y slo habr resultado en la bsqueda si existe un registro idntico a la expresin del criterio. Gracias a los operadores, adems de palabras, se pueden imponer otro tipo de condiciones a las bsquedas dentro de los registros. A continuacin te detallamos los distintos operadores que podemos utilizar en una condicin. Los operadores de comparacin Estos operadores comparan el valor de una expresin con el valor de otra. Independientemente del operador si uno de los valores es nulo, el resultado de la comparacin ser nulo (ni verdadero ni falso). los operadores de comparacin que podemos utilizar son:
Significado igual que distinto de menor que menor o igual mayor que mayor o igual
El operador Entre Tiene la siguiente sintaxis: Expresin Entre valor1 Y valor2 Examina si el valor de la expresin est comprendido entre los dos valores definidos por valor1 y valor2. Normalmente la expresin ser un nombre de campo. Ejemplo:
Pgina 6 de 50
Ciclo II-2011
El operador In Tiene la siguiente sintaxis: Expresin In (valor1, valor2, ...) Examina si el valor de la expresin es uno de los valores incluidos en la lista de valores escritos entre parntesis. Por ejemplo, para seleccionar los alumnos de Alicante, Elche, Elda y Onda podramos poner la condicin Poblacin In (Alicante, Elche, Elda, Onda)
El operador Es nulo Cuando una columna que interviene en una condicin contiene el valor nulo, el resultado de la condicin no es verdadero ni falso, sino nulo, sea cual sea el test que se haya utilizado. Por eso si queremos listar las filas que no tienen valor en una determinada columna, no podemos utilizar la condicin columna = nulo debemos utilizar un operador especial, el operador Es nulo. Tiene la siguiente sintaxis: Expresin Es nulo, donde expresin normalmente ser un nombre de columna. Por ejemplo queremos saber los alumnos que no tienen poblacin, la condicin sera poblacin Es Nulo
El operador Como Se utiliza cuando queremos utilizar caracteres comodines para formar el valor con el que comparar. Por ejemplo queremos visualizar los alumnos cuyo nombre acabe en 'o'. En este caso hay que utilizar el comodn * y utilizar el operador Como para que Access reconozca el * como un comodn y no como el carcter asterisco. La condicin sera nombre como '*o'. El valor que contiene los comodines se conoce como patrn y tiene que ir encerrado entre comillas (simples o dobles). La sintaxis es la siguiente: Expresin Como 'patrn'
Pgina 7 de 50
Ciclo II-2011
En la siguiente tabla te indicamos los caracteres comodines que se pueden poner en un patrn y su significado. Caracteres en patrn Significado ? * # [listacaracteres] [!listacaracteres] Un carcter cualquiera Cero o ms caracteres Un dgito cualquiera (0-9) Un carcter cualquiera de listacaracteres Un carcter cualquiera no incluido en listacaracteres
Listacaracteres representa una lista de caracteres y puede incluir casi cualquier carcter, incluyendo dgitos, los caracteres se escriben uno detrs de otro sin espacios en blanco ni comas. Por ejemplo para sacar los nombres que empiezan por a,g,r o v el patrn sera: '[agrv]*' Los caracteres especiales corchete de apertura [, interrogacin ?, almohadilla # y asterisco * dejan de ser considerados comodines cuando van entre corchetes. Por ejemplo para buscar los nombres que contienen un asterisco, el patrn sera : '*[*]*' en este caso el segundo * dentro del patrn no acta como comodn sino como un carcter cualquiera porque va dentro de los corchetes. Si no se encierra entre corchetes, la exclamacin ! representa el carcter exclamacin. El corchete de cierre ] se puede utilizar fuera de una listacaracteres como carcter independiente pero no se puede utilizar en una listacaracteres. Por ejemplo, el patrn 'a]*' permite encontrar nombres que empiecen por una a seguida de un corchete de cierre. La secuencia de caracteres [] se considera una cadena de caracteres de longitud cero (""). Se puede especificar un intervalo de caracteres en listacaracteres colocando un guin - para separar los lmites inferior y superior del intervalo. Por ejemplo, la secuencia [A-Z ] en patrn representa cualquier carcter comprendido en el intervalo de la A a la Z. Cuando se especifica un intervalo de caracteres, stos deben aparecer en orden ascendente (de menor a mayor).[A-Z] es un intervalo vlido, pero [Z-A] no lo es. Se pueden incluir mltiples intervalos entre corchetes, sin necesidad de delimitadores. El guin - define un intervalo nicamente cuando aparece dentro de los corchetes entre dos caracteres, en cualquier otro caso representa el carcter guin. Por ejemplo queremos saber los alumnos de la provincia de Valencia (son los que tienen un cdigo postal que empieza por 46 seguido de tres dgitos cualesquiera, la condicin podra ser [cdigo postal] como '46###'
Rangos de valores Para buscar un rango de valores dentro de un campo se utilizan estos operadores: Entre...Y: por ejemplo para seleccionar los pacientes mayores de 18 aos pero menores de 50. En la casilla Criterios se escribir: Entre 18 Y 50. <,>,>=,<=,<>: operadores de comparacin. Lista de valores
Pgina 8 de 50
Ciclo II-2011
Se puede poner ms de un criterio, especificando cada uno de ellos. La redaccin de esta expresin deber ser de la siguiente forma: el operador En seguido de una lista de valores entre parntesis, separando los valores con el punto y coma. Por ejemplo para seleccionar todos los pacientes de tres provincias, en el campo Provincia se utilizara este criterio: En ("Madrid";"Aragn"; "Pas Vasco") De esta forma el programa seleccionar todos aquellos registros que en el campo provincia tengan uno de estos tres valores. Varios criterios En diferentes campos: criterio Y: cuando se escriben varios criterios en el mismo rengln el programa buscar un registro que cumpla todos los criterios. El criterio Y se puede utilizar en un mismo campo: >80 Y <100 En un mismo campo: criterio O: cuando se pone un criterio en la casilla "Criterio", otro en la casilla o, y si se quiere ms criterios en las filas de debajo. El programa buscar un registro que cumpla al menos uno de los criterios. Este criterio tambin se puede utilizar en distintos campos: De la tabla productos, seleccionar los registros que o el campo precio listado se mayor a 25, o bien el campo categora sea Bebidas.
Pgina 9 de 50
Ciclo II-2011
El siguiente ejemplo, seleccionara los registro que en el campo categora tengan un dato igual a Bebidas o Golosinas o
Cereales.
Los comodines Se utilizan para buscar datos genricos, que empiezan por una letra, que terminan por otra... * representa cualquier nmero de caracteres, por ejemplo: todos los nombres que terminen por "ez: *ez. Otro ejemplo: buscar las personas que tienen un nombre compuesto y uno de los dos nombres es "Luis". Se debe escribir el siguiente criterio: Como *Luis* o Como * + Luis + *. Access agregar las comillas. ? representa un solo carcter, por ejemplo Jimenez/ Gimenez: ?imenez. # representa cualquier dgito en la posicin especificada. Por ejemplo: 12#45, el programa buscar un registro en el cual los dos primeros dgitos sean 12 y los dos ltimos 45. Al introducir una expresin con uno de estos tres operadores, Access aadir automticamente el operador "Como". Seleccin de registros con datos o sin datos Se puede seleccionar un registro por el criterio de si en el campo hay un dato, o si est vaco. Porque contiene algn dato: Es Negado Nulo Pacientes que tienen telfono: Porque no contiene ningn dato: vaco: Nulo o es Nulo Pacientes que no tienen telfono: Fecha actual Se pueden seleccionar los registros que tengan la fecha actual. Por ejemplo en una empresa para seleccionar los pedidos que haya que entregar ese da. En criterios se escribe Fecha()
Pgina 10 de 50
Ciclo II-2011
Condicin variable Para hacer una condicin variable; que realice una pregunta cada vez que se abra o ejecute la consulta, se coloca la pregunta entre corchetes [ ] debajo del campo que se desea variar. (ver consultas con parmetros) Criterios con clculo Dentro de un criterio se puede realizar un clculo haciendo referencia a otro campo. Por ejemplo en la base de datos de una empresa de venta de material de construccin se va a consultar. Se pide que liste a aquellos clientes cuyo Importe sea mayor a la cantidad por 10. Se ha creado el campo importe ya que no exista, que es un campo calculado. Los campos van siempre entre corchetes. Dentro del criterio se ha realizado una operacin y en funcin del resultado se han seleccionado o no los registros. Los campos calculados son campos obtenidos del resultado de una expresin. Una expresin se forma combinando un operador con uno o generalmente dos operandos. La mayora de las veces un operando ser un campo de la tabla y el otro un valor concreto u otro campo.
Operadores. Operador operador + operador operador * operador ^ operador / operador \ operador Mod El operador & Funcin Se utiliza para sumar dos nmeros. Se utiliza para hallar la diferencia entre dos nmeros. Se utiliza para multiplicar dos nmeros. se utiliza para elevar un nmero a la potencia del exponente ( nmero ^ exponente ) Se utiliza para dividir dos nmeros y obtener un resultado de signo flotante. Se utiliza para dividir dos nmeros y obtener un resultado entero. divide dos nmeros y devuelve slo el resto. se utiliza para concatenar dos expresiones de tipo texto.
Tambin se puede utilizar el operador de suma + cuando los dos operandos son de tipo texto, para concatenarlos. Mi consejo es utilizar el operador & para la concatenacin y as evitar errores o confusiones. Un operando puede ser un nombre de columna, una expresin, un valor concreto o una funcin predefinida. Valores concretos Los valores concretos se deben escribir siguiendo las siguientes reglas:
Pgina 11 de 50
Ciclo II-2011
Los valores numricos se indican poniendo el nmero sin ms. Se tiene que utilizar para separar la parte entera de los decimales el smbolo definido en nuestra configuracin de Windows; adems los valores numricos no se pueden escribir formateados, no podemos escribirlos con separadores de miles. Por ejemplo en una expresin correcta no puedo escribir (ventas + 1.000.000) ni tampoco (ventas + 1,000,000), tengo que escribir (ventas +1000000) Ejemplo: 2 Los valores de tipo texto deben ir siempre entre comillas simples ' o dobles ". Ejemplo: ', ' ",", 'MADRID' Los literales de fecha se escriben entre # y deben estar en el formato de EE.UU., incluso si no estamos utilizando la versin norteamericana del motor de base de datos Microsoft Jet. Por ejemplo, el 10 de mayo de 1996, se escribe 10/5/96 en Espaa y Latinoamrica, y 5/10/96 en Estados Unidos de Amrica. Para indicar la fecha 10 de mayo de 1996 en cualquier base de datos sea espaola, latinoamericana o de EE.UU., debemos escribirla #5/10/96#; con el formato #mes/dia/ao# Tambin se puede utilizar la funcin DateValue, que reconoce las configuraciones internacionales establecidas por Microsoft Windows. Por ejemplo, DateValue('10/5/96') es equivalente a #05/10/96# si nuestra configuracin de Windows define las fechas con el formato dia/mes/ao. Funciones predefinidas. Access2007 tiene muchas funciones predefinidas que se pueden utilizar, enumerarlas y explicarlas sera demasiado largo. Lo mejor es saber que tenemos a nuestra disposicin muchas funciones y cuando queramos obtener algo diferente consultar la ayuda de access para ver si existe ya una funcin para lo que queremos hacer. A ttulo de ejemplo tenemos unas que se utilizan ms a menudo: DATE() o fecha() devuelve el da en que estamos NOW() o Hoy() devuelve el da y la hora actual YEAR(fecha) o Ao() devuelve el ao de la fecha MONTH(fecha) o Mes() devuelve el mes de la fecha DATEVALUE(literal) o ValorFecha() convierte el literal en un valor de fecha. Nombres de campos. Los nombres de los campos se indican entre corchetes [ ], cuando un nombre de campo est formado por una sola palabra se pueden omitir corchetes pero si el nombre contiene varias palabras separadas por espacios en blanco es obligatorio ponerlo entre corchetes [ ]. por ejemplo para hacer referencia al campo Poblacion puedo escribir Poblacion o [Poblacion], pero el campo Fecha de nacimiento siempre se escribir [Fecha de nacimiento ] Uso del parntesis.
Pgina 12 de 50
Ciclo II-2011
Cuando combinamos varias expresiones podemos utilizar los parntesis para delimitar cada expresin. Siempre se tiene que utilizar un parntesis de apertura ( y uno de cierre ). Ejemplo: ventas + (ventas * 0.1) El uso del parntesis sirve para que la expresin quede ms clara sobre todo cuando combinamos muchas expresiones, y para que los operadores actuen en el orden que nosotros queramos para as olvidarnos de la prioridad de los operadores.
NombreEnvo Como "S*" NombreCompa >="N" a IdPedido Der([IdPedido], 2)="99" NombreCompa Longitud([NombreCompaa])>val(30) a
Ejemplos de expresiones que calculan o manipulan fechas y a continuacin usan el resultado como criterio
Campo
Expresin
Descripcin Utiliza el operador Entre...Y (BetweenAnd) y las funciones AgregFecha (DateAdd) y Fecha (Date) para mostrar pedidos cuya fecha requerida est entre el da de hoy y dentro de tres meses. Utiliza la funcin Fecha (Date) para mostrar los pedidos con una antigedad de ms de 30 das.
FechaPedido
< Fecha( )- 30
Pgina 13 de 50
Ciclo II-2011
FechaPedido
Ao([FechaPedido])=1996
Utiliza la funcin Ao (Year) para mostrar los pedidos con fechas de entrega en 1996.
FechaPedido FechaPedido
Utiliza la funcin ParcFecha (DatePart) para mostrar los pedidos del cuarto trimestre. Utiliza las funciones SerieFecha (DateSerial), Ao (Year) y Mes (Month) para mostrar los pedidos del ltimo da de cada mes. Utiliza las funciones Ao (Year) y Mes (Month) y el operador Y (And) para mostrar los pedidos del ao y el mes actual.
FechaPedido
Ejemplos de expresiones que usan un valor de campo en blanco (Nulo o cadena de longitud cero) como criterio.
Campo ReginEnvo Expresin Es Nulo Descripcin Muestra los pedidos de los clientes cuyo campo ReginEnvo es Nulo (est en blanco). ReginEnvo Fax No es Nulo Muestra los pedidos de los clientes cuyo campo ReginEnvo contiene un valor. No es nulo Muestra los pedidos de los clientes que no tienen una mquina de fax, lo que se indica mediante un valor de cadena de longitud cero en el campo Fax en lugar de un valor Nulo (en blanco).
Ejemplos de expresiones que usan parte del valor de un campo como criterio Campo Expresin Muestra Pedidos enviados a los clientes cuyos nombres empiezan por la letra S. Pedidos enviados a los clientes cuyos nombres terminan por la palabra "Importaciones". Pedidos enviados a los clientes cuyos nombres empiezan de la A a la D. Pedidos enviados a los clientes cuyos nombres incluyen la secuencia de letras "ar". Pedidos enviados al cliente con "Casa" como primera parte del nombre y un segundo nombre de 5 letras, de las cuales las cuatro primeras son "Dewe" y la ltima se desconoce.
NombreDestinatario Como "S*" NombreDestinatario Como "*Importaciones" NombreDestinatario Como "[A-D]*" NombreDestinatario Como "*ar*" NombreDestinatario Como "Casa Dewe?"
Pgina 14 de 50
Ciclo II-2011
Campos Calculados.
Una de las necesidades ms frecuentes que se plantean en las bases de datos consiste en la realizacin de diversos clculos con datos combinados que pertenecen a distintos campos. En Access 2007, la mejor manera de hacerlo es mediante la creacin de un campo nuevo que realice estas operaciones llamado campo calculado. Hay que realizarlo sobre una consulta. Podemos partir de un ejemplo bsico en el que la base de datos gestiona los datos de los detalles de los pedidos. Se quiere obtener una consulta utilizando la tabla detalles de pedidos, que refleje el importe total de cada producto pedido, es decir, queremos que se observe el cdigo del pedido, el cdigo del producto y el importe del producto pedido que es igual multiplicar el precio de venta por la cantidad de unidades vendidas . Hagamos los siguientes pasos. 1. 2. 3. Abrir la base de datos NorthWind2007 de las plantillas locales de Access Crear una consulta de seleccin y llamarle ImportePorProducto. Seleccionar la tabla detalles de pedidos de la base de datos NorthWind2007 de las plantillas locales de Access 2007. 4. Colocar los campos idpedido, idproducto, cantidad y precio en la cuadricula QBE.
5.
En la quinta columna disponible de la cuadricula QBE dar clic derecho sobre la fila Campo.Del men contextual , seleccionar la opcin Generar.
Pgina 15 de 50
Ciclo II-2011
6.
7.
Defina la expresin necesaria para realizar el clculo deseado. En este ejemplo queremos calcular el importe que es igual a multiplicar precio por cantidad.
8.
Seleccionar la ficha tabla y seleccionar con doble clic el campo cantidad, luego clic en el botn del operador * y para terminar doble clic en el campo precio. La expresin queda de la siguiente forma:
Pgina 16 de 50
Ciclo II-2011
9.
10. El nombre por defecto del campo calculado es Expr1, tal como se ve en la siguiente imagen:
11. Personalice el nombre del campo calculado y borre Expr1 y sustityalo por ImporteProducto
12. Al darle clic al botn ejecutar, el resultado de esta consulta de seleccin seria el siguiente:
Pgina 17 de 50
Ciclo II-2011
10. En la seccione de categoras de funciones seleccione Flujos de programas 11. Selecciones con doble clic la funcin Si Inm, tal como aparece en la siguiente figura:
Pgina 18 de 50
Ciclo II-2011
Pgina 19 de 50
Ciclo II-2011
Agrupar por: define los grupos para los que desea efectuar totales. Suma(Sum): Suma el contenido del campo de todos los registros. Promedio (Avg): Calcula la media aritmtica del contenido del campo de todos los registros. Min (Min): Halla el mnimo valor numrico contenido en ese campo. Cuenta (Count): Cuenta el nmero de registros de la tabla que no est en blanco. DesvEst (StDev): Calcula la desviacin tpica de los valores numricos contenidos en el campo de todos los registros. Var (Var): Calcula la varianza de los valores numricos contenidos en el campo de todos los registros. Prmero (First): Devuelve el valor de campo del primer registro. Ultimo (Last): Devuelve el valor de campo del ltimo registro. Expresin: Crea un campo calculado en la consulta. Donde: Especifica criterios para un campo que no se est utilizando para definir agrupaciones. Debe quitarse la marca de casilla Mostrar de este campo. Esta opcin debe utilizarse siempre que se cree una consulta de totales y se exprese algn criterio en la fila Criterios.
Pgina 20 de 50
Ciclo II-2011
Siguiendo con el ejemplo anterior, si necesitamos calcular el importe total de cada pedido tenemos que realizar los siguientes pasos: 1. 2. 3. Crear una consultar llamada ImportePedido. Agregar la tabla detalles de pedido como tabla fuente de la consulta. Colocar los campos Idpedido, en la segunda columna disponible Generar el siguiente campo calculado y llamarle ImportePedido:
4.
Para obtener el resultado deseado necesitamos agrupar los registro por el cdigo de pedido y sumar los resultados del campo calculado ImportePedido. Entonces debemos dar clic derecho sobre la cuadricula QBE y del men contextual seleccionar Totales o bien dar clic en el botn activar la fila Total en la cuadricula QBE, tal como se de la ficha Diseo. Con esto logramos
muestra a continuacin.
5. 6.
Seleccionamos agrupar por para el campo Id de pedido y suma para el campo calculado InporteProducto. Al hacer clic en el botn ejecutar, el resultado de esta consulta de seleccin con campos calculados y la fila Total activada es la siguiente:
Pgina 21 de 50
Ciclo II-2011
Pgina 22 de 50
Ciclo II-2011
1.
Seleccione la ficha Crear y presione el botn Asistente para consultas dilogo Nueva Consulta. En este cuadro se puede elegir el tipo de asistente deseado.
. Aparecer el cuadro de
2. 3.
Seleccione Asistente para consultas de referencias cruzadas y pulse el botn Aceptar. Cuando Access visualice el primer cuadro de dilogo indique si desea ver las tablas, consultas o ambos tipos de objetos seleccionando la opcin en el apartado Ver. Elija la tabla o consulta y pulse el botn Siguiente.
Pgina 23 de 50
Ciclo II-2011
4.
Aada el campo que se utilizar como ttulo de las filas en la consulta de referencias cruzadas haciendo doble clic sobre l en el cuadro de lista Campos disponibles, y despus pulse el botn Siguiente.
Pgina 24 de 50
Ciclo II-2011
5.
Seleccione el campo que se utilizar como ttulo de las columnas y pulse el botn siguiente.
6.
Especifique la funcin que desea llevar a cabo en la consulta seleccionando el campo sobre el cul se realizar el clculo. Para aadir una columna que calcule totales por fila, coloque una marca en la casilla de seleccin Si, incluir sumas de filas.
Pgina 25 de 50
Ciclo II-2011
7.
Pulse el botn siguiente. Asigne un nombre para la consulta y elegir la opcin para ver la consulta o modificar su diseo.
8.
Pgina 26 de 50
Ciclo II-2011
Pgina 27 de 50
Ciclo II-2011
Consultas de accin.
Como trabajar con consultas de accin: Consulta de creacin de tabla. Consulta de actualizacin. Consulta de datos anexados. Consulta de eliminacin
Uso de Consultas de crear tabla para crear tablas nuevas con datos seleccionados. Crear una tabla con una consulta: 1. 2. 3. 4. 5. Abra la base de datos. Presione el botn nuevo, luego seleccione vista diseo y presione aceptar. Presione dos veces sobre la tabla clientes. Seleccione los campos: IdCliente, NombreCompaia, telfono y fax de la tabla clientes. En la ficha diseo Presione el icono Tipo de consulta: Creacin de tabla.
Creacin de tabla
6.
Introduzca el nombre con el que desea llamar (TelDir) a la nueva tabla, y luego presione base de datos activa u Otra base de datos.
7.
En vista diseo de consulta, guarde la consulta de la base de datos o presione el icono Ejecutar.
Pgina 28 de 50
Ciclo II-2011
Actualizacin de campos dentro de tablas con consultas de ACTUALIZACION. El siguiente ejemplo actualiza a 500 el salario de todos los empleados que cumplan la condicin de que en el campo salario tengan un dato igual a 400.
Uso de una consulta de actualizacin: 1. 2. 3. 4. Abra la base de datos. Presione el botn nuevo, seleccione Vista diseo y luego presione aceptar. Presione dos veces sobre la tabla empleados. Arrastre el campo salario del cuadro de lista de campo a la cuadricula de diseo de consulta.
5.
6.
Una fila nueva, ACTUALIZAR A, se ha aadido a la cuadricula de diseo de consulta. Aqu es donde aadir el valor al que quiera cambiar el salario. Presione en este campo e introduzca 500.
7. 8. 9.
Presione con el botn derecho sobre la fila criterios de la cuadricula de diseo de consulta y seleccione Generar. El cuadro de dialogo Generador de expresiones aparece. presione dos veces sobre el signo + de la carpeta tablas.
10. Presione dos veces sobre la tabla empleados. 11. Presione la columna salario. 12. Presione el botn = y luego escriba 400. 13. Presione aceptar. 14. Guarde la consulta.
Como aadir registros a tablas existentes con datos anexados: Aada registros a una tabla con una consulta de datos anexados: 1. 2. 3. 4. Abra la base de datos. Presione el botn nuevo y seleccione. Presione dos veces la tabla Teldir en el cuadro de dialogo Mostrar Tabla. Arrastre todos los campos del listado de campos a la cuadricula de diseo de Consulta. Presione el icono Tipo de Consulta y seleccione CONSULTA DE DATOS ANEXADOS.
Pgina 29 de 50
Ciclo II-2011
5.
Aparece un cuadro de dialogo que le pide el nombre de la tabla que desea agregar. Seleccione TelDir de la lista desplegable y asegurarse de que se selecciona la opcion Base de datos activa.
6.
Aparece una fila nueva, ANEXAR A, en la cuadricula de diseo de consulta. Esta fila muestra los campos de la nueva tabla a la que agrega los campos de la tabla antigua.
7.
1. 2. 3. 4.
Abra la base de datos, presione la ficha consultas. presione el botn nuevo y seleccione Vista Diseo del cuadro de dialogo que aparece, presione aceptar. Aada la tabla clientes a la tabla a la cuadricula QBE. Aada todos los campos de la tabla clientes a la cuadricula presionando dos veces en el asterisco del listado de campos para la tabla clientes.
5.
Arrastre el campo Ciudad a la cuadricula de diseo de consulta; utilice este campo para determinar que registros tienen que eliminarse.
6.
Presione el icono Tipo de consulta y seleccione consulta de eliminacin. Se aade una fila nueva de Eliminar a la cuadricula de diseo de consulta. Esta fila contiene un DESDE o un DONDE. El desde se utiliza para indicar de que registros desea eliminar; el donde indica que el campo se esta utilizando como un campo de criterios para la accin de eliminacin. Introduzca Miami en la fila criterios del campo Ciudad.
7.
Pgina 30 de 50
Ciclo II-2011
Pgina 31 de 50
Ciclo II-2011
Clusulas Las clusulas son condiciones de modificacin utilizadas para definir los datos que desea seleccionar o manipular. Comando Descripcin FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros
WHERE Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar GROUP BY Utilizada para separar los registros seleccionados en grupos especficos
HAVING Utilizada para expresar la condicin que debe satisfacer cada grupo ORDER BY Utilizada para ordenar los registros seleccionados de acuerdo con un orden especfico
Operadores Lgicos Operador Uso AND OR NOT Es el "y" lgico. Evala dos condiciones y devuelve un valor de verdad slo si ambas son ciertas. Es el "o" lgico. Evala dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta. Negacin lgica. Devuelve el valor contrario de la expresin.
<
> <> <= >=
Menor que
Mayor que Distinto de Menor Igual que Mayor Igual que
LIKE
In
Pgina 32 de 50
Ciclo II-2011
Funciones de Agregado. Las funciones de agregado se usan dentro de una clusula SELECT en grupos de registros para devolver un nico valor que se aplica a un grupo de registros. Comando Descripcin AVG Utilizada para calcular el promedio de los valores de un campo determinado
SUM
MAX MIN
Pgina 33 de 50
Ciclo II-2011
2.
el icono
3.
Pgina 34 de 50
Ciclo II-2011
4.
En la figura siguiente se muestra cmo queda la sentencia introducida en la ventana SQL de Access.
Consultas de Seleccin
Las consultas de seleccin se utilizan para indicar al motor de datos que devuelva informacin de las bases de datos, esta informacin es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset. Este conjunto de registros es modificable. Consultas bsicas La sintaxis bsica de una consulta de seleccin es la siguiente: SELECT Campos FROM Tabla; En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos, por ejemplo: SELECT Nombre, Telefono FROM Clientes;Esta consulta devuelve un recordset con el campo nombre y telfono de la tabla clientes. Ordenar los registros Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la clasula ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar. Ejemplo: SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY Nombre;Esta consulta devuelve los campos CodigoPostal, Nombre, Telefono de la tabla Clientes ordenados por el campo Nombre. Se pueden ordenar los registros por mas de un campo, como por ejemplo:
Pgina 35 de 50
Ciclo II-2011
especificar el orden de los registros: ascendente mediante la clasula (ASC -se toma este valor por defecto) descendente (DESC) SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal DESC , Nombre ASC;
seleccionados.
ALL: Si no se incluye ninguno de los predicados se asume ALL. El Motor de base de datos selecciona todos los registros que cumplen las condiciones de la instruccin SQL. No se conveniente abusar de este predicado ya que obligamos al motor de la base de datos a analizar la estructura de la tabla para averiguar los campos que contiene, es mucho ms rpido indicar el listado de campos deseados. SELECT ALL FROM Empleados; SELECT * FROM Empleados;TOP: Devuelve un cierto nmero de registros que entran entre al principio o al final de un rango especificado por una clusula ORDER BY. Supongamos que queremos recuperar los nombres de los 25 primeros estudiantes del curso 1994: SELECT TOP 25 Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC;Si no se incluye la clusula ORDER BY, la consulta devolver un conjunto arbitrario de 25 registros de la tabla Estudiantes .El predicado TOP no elige entre valores iguales. En el ejemplo anterior, si la nota media nmero 25 y la 26 son iguales, la consulta devolver 26 registros. Se puede utilizar la palabra reservada PERCENT para devolver un cierto porcentaje de registros que caen al principio o al final de un rango especificado por la clusula ORDER BY. Supongamos que en lugar de los 25 primeros estudiantes deseamos el 10 por ciento del curso:
Pgina 36 de 50
Ciclo II-2011
continuacin de TOP debe ser un Integer sin signo.TOP no afecta a la posible actualizacin de la consulta. DISTINCT: Omite los registros que contienen datos duplicados en los campos seleccionados. Para que los valores de cada campo listado en la instruccin SELECT se incluyan en la consulta deben ser nicos. Por ejemplo, varios empleados listados en la tabla Empleados pueden tener el mismo apellido. Si dos registros contienen Lpez en el campo Apellido, la siguiente instruccin SQL devuelve un nico registro: SELECT DISTINCT Apellido FROM Empleados; Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos campos indicados en la clusula SELECT posean un contenido diferente. El resultado de una consulta que utiliza DISTINCT no es actualizable y no refleja los cambios subsiguientes realizados por otros usuarios. DISTINCTROW: Devuelve los registros diferentes de una tabla; a diferencia del predicado anterior que slo se fijaba en el contenido de los campos seleccionados, ste lo hace en el contenido del registro completo independientemente de los campo indicados en la clusula SELECT. SELECT DISTINCTROW Apellido FROM Empleados;Si la tabla empleados contiene dos registros: Antonio Lpez y Marta Lpez el ejemplo del predicado DISTINCT devuelve un nico registro con el valor Lpez en el campo Apellido ya que busca no duplicados en dicho campo. Este ltimo ejemplo devuelve dos registros con el valor Lpez en el apellido ya que se buscan no duplicados en el registro completo. Alias En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un conjunto devuelto, otras veces por simple capricho o por otras circunstancias. Para resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre que deseamos a la columna deseada. Tomado como referencia el ejemplo anterior podemos hacer que la columna devuelta por la consulta, en lugar de llamarse apellido (igual que el campo devuelto) se llame Empleado. En este caso procederamos de la siguiente forma: SELECT DISTINCTROW Apellido AS Empleado FROM Empleados; Recuperar Informacin de una base de Datos Externa Para concluir se debe hacer referencia a la recuperacin de registros de bases de datos externa. Es ocasiones es necesario la recuperacin de informacin que se encuentra contenida en una tabla que no se encuentra en la base de datos que ejecutar la consulta o que en ese momento no se encuentra abierta, esta situacin la podemos salvar con la palabra reservada IN de la siguiente forma: SELECT DISTINCTROW Apellido AS Empleado FROM Empleados c:\databases\gestion.mdb es la base de datos que contiene la tabla Empleados. IN 'c:\databases\gestion.mdb';En donde
Pgina 37 de 50
Ciclo II-2011
Criterios de seleccin. A continuacin se estudiarn las posibilidades de filtrar los registros con el fin de recuperar solamente aquellos que cumplan unas condiciones preestablecidas. Antes de comenzar el desarrollo de este captulo hay que recalcar tres detalles de vital importancia. El primero de ellos es que cada vez que se desee establecer una condicin referida a un campo de texto la condicin de bsqueda debe ir encerrada entre comillas simples; la segunda es que no es posible establecer condiciones de bsqueda en los campos memo y; la tercera y ltima hace referencia a las fechas. Las fechas se deben escribir siempre en formato mm-dd-aa en donde mm representa el mes, dd el da y aa el ao, hay que prestar atencin a los separadores -no sirve la separacin habitual de la barra (/), hay que utilizar el guin (-) y adems la fecha debe ir encerrada entre almohadillas (#). Por ejemplo si deseamos referirnos al da 3 de Septiembre de 1995 deberemos hacerlo de la siguiente forma; #09-03-95# #9-3-95#.
SELECT * FROM Empleados WHERE Edad > 25 AND Edad < 50; SELECT * FROM Empleados WHERE (Edad > 25 AND Edad < 50) OR Sueldo = 100; SELECT * FROM Empleados WHERE NOT Estado = 'Soltero'; SELECT * FROM Empleados WHERE (Sueldo > 100 AND Sueldo < 500) OR (Provincia = 'Madrid' AND Estado = 'Casado'); Intervalos de Valores Para indicar que deseamos recuperar los registros segn el intervalo de valores de un campo emplearemos el operador Between cuya sintaxis es: (campo [Not] Between valor1 And valor2 (la condicin Not es opcional) En este caso la consulta devolvera los registros que contengan en "campo" un valor incluido en el intervalo valor1, valor2 (ambos inclusive). Si anteponemos la condicin Not devolver aquellos valores no incluidos en el intervalo. SELECT * FROM Pedidos WHERE CodPostal Between 28000 And 28999; (Devuelve los pedidos realizados en la provincia de Madrid) SELECT IIf(CodPostal Between 28000 And 28999, 'Provincial', 'Nacional') FROM Editores; (Devuelve el valor 'Provincial' si el cdigo postal se encuentra en el intervalo, 'Nacional' en caso contrario)
El Operador In Este operador devuelve aquellos registros cuyo campo indicado coincide con alguno de los indicados en una lista. Su sintaxis es:
Pgina 38 de 50
Ciclo II-2011
expresin [Not] In(valor1, valor2, . . .) SELECT * FROM Pedidos WHERE Provincia In ('Madrid', 'Barcelona', 'Sevilla'); La clusula WHERE La clusula WHERE puede usarse para determinar qu registros de las tablas enumeradas en la clusula FROM aparecern en los resultados de la instruccin SELECT. Despus de escribir esta clusula se deben especificar las condiciones expuestas en los apartados 3.1 y 3.2. Si no se emplea esta clusula, la consulta devolver todas las filas de la tabla. WHERE es opcional, pero cuando aparece debe ir a continuacin de FROM. SELECT Apellidos, Salario FROM Empleados WHERE Salario > 21000; SELECT Id_Producto, Existencias FROM Productos WHERE Existencias <= Nuevo_Pedido; SELECT * FROM Pedidos WHERE Fecha_Envio = #5/10/94#; SELECT Apellidos, Nombre FROM Empleados WHERE Apellidos = 'King'; SELECT Apellidos, Nombre FROM Empleados WHERE Apellidos Like 'S*'; SELECT Apellidos, Salario FROM Empleados WHERE Salario Between 200 And 300; SELECT Apellidos, Salario FROM Empl WHERE Apellidos Between 'Lon' And 'Tol'; SELECT Id_Pedido, Fecha_Pedido FROM Pedidos WHERE Fecha_Pedido Between #1-1-94# And #30-6-94#; SELECT Apellidos, Nombre, Ciudad FROM Empleados WHERE Ciudad In ('Sevilla', 'Los Angeles', 'Barcelona'); Agrupamiento de Registros GROUP BY Combina los registros con valores idnticos, en la lista de campos especificados, en un nico registro. Para cada registro se crea un valor sumario si se incluye una funcin SQL agregada, como por ejemplo Sum o Count, en la instruccin SELECT. Su sintaxis es: SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupoGROUP BY es opcional. Los valores de resumen se omiten si no existe una funcin SQL agregada en la instruccin SELECT. Los valores Null en los campos GROUP BY se agrupan y no se omiten. No obstante, los valores Null no se evalan en ninguna de las funciones SQL agregadas. Se utiliza la clusula WHERE para excluir aquellas filas que no desea agrupar, y la clusula HAVING para filtrar los registros una vez agrupados. A menos que contenga un dato Memo u Objeto OLE , un campo de la lista de campos GROUP BY puede referirse a cualquier campo de las tablas que aparecen en la clusula FROM, incluso si el campo no esta incluido en la instruccin SELECT, siempre y cuando la instruccin SELECT incluya al menos una funcin SQL agregada.
Pgina 39 de 50
Ciclo II-2011
Todos los campos de la lista de campos de SELECT deben o bien incluirse en la clusula GROUP BY o como argumentos de una funcin SQL agregada. SELECT Id_Familia, Sum(Stock) FROM Productos GROUP BY Id_Familia;Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registro agrupado por la clusula GROUP BY que satisfaga las condiciones de la clusula HAVING. HAVING es similar a WHERE, determina qu registros se seleccionan. Una vez que los registros se han agrupado utilizando GROUP BY, HAVING determina cuales de ellos se van a mostrar. SELECT Id_Familia Sum(Stock) FROM Productos GROUP BY Id_Familia HAVING Sum(Stock) > 100 AND NombreProducto Like BOS*; AVG Calcula la media aritmtica de un conjunto de valores contenidos en un campo especificado de una consulta. Su sintaxis es la siguiente Avg(expr) En donde expr representa el campo que contiene los datos numricos para los que se desea calcular la media o una expresin que realiza un clculo utilizando los datos de dicho campo. La media calculada por Avg es la media aritmtica (la suma de los valores dividido por el nmero de valores). La funcin Avg no incluye ningn campo Null en el clculo. SELECT Avg(Gastos) AS Promedio FROM Pedidos WHERE Gastos > 100;
Count Calcula el nmero de registros devueltos por una consulta. Su sintaxis es la siguiente Count(expr) En donde expr contiene el nombre del campo que desea contar. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de las funciones agregadas de SQL). Puede contar cualquier tipo de datos incluso texto. Aunque expr puede realizar un clculo sobre un campo, Count simplemente cuenta el nmero de registros sin tener en cuenta qu valores se almacenan en los registros. La funcin Count no cuenta los registros que tienen campos null a menos que expr sea el carcter comodn asterisco (*). Si utiliza un asterisco, Count calcula el nmero total de registros, incluyendo aquellos que contienen campos null. Count(*) es considerablemente ms rpida que Count(Campo). No se debe poner el asterisco entre dobles comillas ('*'). SELECT Count(*) AS Total FROM Pedidos; Si expr identifica a mltiples campos, la funcin Count cuenta un registro slo si al menos uno de los campos no es Null. Si todos los campos especificados son Null, no se cuenta el registro. Hay que separar los nombres de los campos con ampersand (&). SELECT Count(FechaEnvo & Transporte) AS Total FROM Pedidos;Max, Min
Pgina 40 de 50
Ciclo II-2011
Devuelven el mnimo o el mximo de un conjunto de valores contenidos en un campo especifico de una consulta. Su sintaxis es: Min(expr) Max(expr) En donde expr es el campo sobre el que se desea realizar el clculo. Expr pueden incluir el nombre de un campo de una tabla, una constante o una funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de las funciones agregadas de SQL). SELECT Min(Gastos) AS ElMin FROM Pedidos WHERE Pais = 'Espaa';
SELECT Max(Gastos) AS ElMax FROM Pedidos WHERE Pais = 'Espaa'; StDev, StDevP Devuelve estimaciones de la desviacin estndar para la poblacin (el total de los registros de la tabla) o una muestra de la poblacin representada (muestra aleatoria) . Su sintaxis es: StDev(expr) StDevP(expr) En donde expr representa el nombre del campo que contiene los datos que desean evaluarse o una expresin que realiza un clculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de las funciones agregadas de SQL) StDevP evala una poblacin, y StDev evala una muestra de la poblacin. Si la consulta contiene menos de dos registros (o ningn registro para StDevP), estas funciones devuelven un valor Null (el cual indica que la desviacin estndar no puede calcularse). SELECT StDev(Gastos) AS Desviacion FROM Pedidos WHERE Pais = 'Espaa'; SELECT StDevP(Gastos) AS Desviacion FROM Pedidos WHERE Pais= 'Espaa'; Sum Devuelve la suma del conjunto de valores contenido en un campo especifico de una consulta. Su sintaxis es: SumP(expr) En donde expr representa el nombre del campo que contiene los datos que desean sumarse o una expresin que realiza un clculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de las funciones agregadas de SQL). SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM DetallePedido; Var, VarP Devuelve una estimacin de la varianza de una poblacin (sobre el total de los registros) o una muestra de la poblacin (muestra aleatoria de registros) sobre los valores de un campo. Su sintaxis es:
Pgina 41 de 50
Ciclo II-2011
Var(expr) VarP(expr) VarP evala una poblacin, y Var evala una muestra de la poblacin. Expr el nombre del campo que contiene los datos que desean evaluarse o una expresin que realiza un clculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de las funciones agregadas de SQL) Si la consulta contiene menos de dos registros, Var y VarP devuelven Null (esto indica que la varianza no puede calcularse). Puede utilizar Var y VarP en una expresin de consulta o en una Instruccin SQL. SELECT Var(Gastos) AS Varianza FROM Pedidos WHERE Pais = 'Espaa'; SELECT VarP(Gastos) AS Varianza FROM Pedidos WHERE Pais = 'Espaa'; Consultas de Actualizacin Las consultas de actualizacin son aquellas que no devuelven ningn registro, son las encargadas de acciones como aadir y borrar y modificar registros. DELETE Crea una consulta de eliminacin que elimina los registros de una o ms de las tablas listadas en la clusula FROM que satisfagan la clusula WHERE. Esta consulta elimina los registros completos, no es posible eliminar el contenido de algn campo en concreto. Su sintaxis es: DELETE Tabla.* FROM Tabla WHERE criterioDELETE es especialmente til cuando se desea eliminar varios registros. En una instruccin DELETE con mltiples tablas, debe incluir el nombre de tabla (Tabla.*). Si especifica ms de una tabla desde la que eliminar registros, todas deben ser tablas de muchos a uno. Si desea eliminar todos los registros de una tabla, eliminar la propia tabla es ms eficiente que ejecutar una consulta de borrado. Se puede utilizar DELETE para eliminar registros de una nica tabla o desde varios lados de una relacin uno a muchos. Las operaciones de eliminacin en cascada en una consulta nicamente eliminan desde varios lados de una relacin. Por ejemplo, en la relacin entre las tablas Clientes y Pedidos, la tabla Pedidos es la parte de muchos por lo que las operaciones en cascada solo afectaran a la tabla Pedidos. Una consulta de borrado elimina los registros completos, no nicamente los datos en campos especficos. Si desea eliminar valores en un campo especificado, crear una consulta de actualizacin que cambie los valores a Null. Una vez que se han eliminado los registros utilizando una consulta de borrado, no puede deshacer la operacin. Si desea saber qu registros se eliminarn, primero examine los resultados de una consulta de seleccin que utilice el mismo criterio y despus ejecute la consulta de borrado. Mantenga copias de seguridad de sus datos en todo momento. Si elimina los registros equivocados podr recuperarlos desde las copias de seguridad. DELETE * FROM Empleados WHERE Cargo = 'Vendedor'; INSERT INTO Agrega un registro en una tabla. Se la conoce como una consulta de datos aadidos. Esta consulta puede ser de dos tipos: Insertar un nico registro Insertar en una tabla los registros contenidos en otra tabla.
Pgina 42 de 50
Ciclo II-2011
Para insertar un nico Registro: En este caso la sintaxis es la siguiente: INSERT INTO Tabla (campo1, campo2, .., campoN) VALUES (valor1, valor2, ..., valorN) Esta consulta graba en el campo1 el valor1, en el campo2 y valor2 y as sucesivamente. Hay que prestar especial atencin a acotar entre comillas simples (') los valores literales (cadenas de caracteres) y las fechas indicarlas en formato mm-dd-aa y entre caracteres de almohadillas (#). Para insertar Registros de otra Tabla: En este caso la sintaxis es: INSERT INTO Tabla [IN base_externa] (campo1, campo2, ..., campoN) SELECT TablaOrigen.campo1, TablaOrigen.campo2, ..., TablaOrigen.campoN FROM TablaOrigenEn este caso se
seleccionarn los campos 1,2, ..., n de la tabla origen y se grabarn en los campos 1,2,.., n de la Tabla. La condicin SELECT puede incluir la clusula WHERE para filtrar los registros a copiar. Si Tabla y TablaOrigen poseen la misma estructura podemos simplificar la sintaxis a: INSERT INTO Tabla SELECT TablaOrigen.* FROM TablaOrigenDe esta forma los campos de TablaOrigen se grabarn en Tabla, para realizar esta operacin es necesario que todos los campos de TablaOrigen estn contenidos con igual nombre en Tabla. Con otras palabras que Tabla posea todos los campos de TablaOrigen (igual nombre e igual tipo). En este tipo de consulta hay que tener especial atencin con los campos contadores o autonumricos puesto que al insertar un valor en un campo de este tipo se escribe el valor que contenga su campo homlogo en la tabla origen, no incrementndose como le corresponde. Se puede utilizar la instruccin INSERT INTO para agregar un registro nico a una tabla, utilizando la sintaxis de la consulta de adicin de registro nico tal y como se mostr anteriormente. En este caso, su cdigo especfica el nombre y el valor de cada campo del registro. Debe especificar cada uno de los campos del registro al que se le va a asignar un valor as como el valor para dicho campo. Cuando no se especifica dicho campo, se inserta el valor predeterminado o Null. Los registros se agregan al final de la tabla. Tambin se puede utilizar INSERT INTO para agregar un conjunto de registros pertenecientes a otra tabla o consulta utilizando la clusula SELECT ... FROM como se mostr anteriormente en la sintaxis de la consulta de adicin de mltiples registros. En este caso la clusula SELECT especifica los campos que se van a agregar en la tabla destino especificada. La tabla destino u origen puede especificar una tabla o una consulta. Si la tabla destino contiene una clave principal, hay que asegurarse que es nica, y con valores no-Null ; si no es as, no se agregarn los registros. Si se agregan registros a una tabla con un campo Contador, no se debe incluir el campo Contador en la consulta. Se puede emplear la clusula IN para agregar registros a una tabla en otra base de datos.
Pgina 43 de 50
Ciclo II-2011
Se pueden averiguar los registros que se agregarn en la consulta ejecutando primero una consulta de seleccin que utilice el mismo criterio de seleccin y ver el resultado. Una consulta de adicin copia los registros de una o ms tablas en otra. Las tablas que contienen los registros que se van a agregar no se vern afectadas por la consulta de adicin. En lugar de agregar registros existentes en otra tabla, se puede especificar los valores de cada campo en un nuevo registro utilizando la clusula VALUES. Si se omite la lista de campos, la clusula VALUES debe incluir un valor para cada campo de la tabla, de otra forma fallar INSERT.
INSERT INTO Clientes SELECT Clientes_Viejos.* FROM Clientes_Nuevos; INSERT INTO Empleados (Nombre, Apellido, Cargo) VALUES ('Luis', 'Snchez', 'Becario'); INSERT INTO Empleados SELECT Vendedores.* FROM Vendedores WHERE Fecha_Contratacion < Now() - 30;
UPDATE Crea una consulta de actualizacin que cambia los valores de los campos de una tabla especificada basndose en un criterio especfico. Su sintaxis es: UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, ... CampoN=ValorN WHERE Criterio; UPDATE es
especialmente til cuando se desea cambiar un gran nmero de registros o cuando stos se encuentran en mltiples tablas. Puede cambiar varios campos a la vez. El ejemplo siguiente incrementa los valores Cantidad pedidos en un 10 por ciento y los valores Transporte en un 3 por ciento para aquellos que se hayan enviado al Reino Unido.: UPDATE Pedidos SET Pedido = Pedidos * 1.1, Transporte = Transporte * 1.03 WHERE PaisEnvo = 'ES';UPDATE no genera ningn resultado. Para saber qu registros se van a cambiar, hay que examinar primero el resultado de una consulta de seleccin que utilice el mismo criterio y despus ejecutar la consulta de actualizacin. UPDATE Empleados SET Grado = 5 WHERE Grado = 2; UPDATE Productos SET Precio = Precio * 1.1 WHERE Proveedor = 8 AND Familia = 3; Si en una consulta de actualizacin suprimimos la clusula WHERE todos los registros de la tabla sealada sern actualizados. UPDATE Empleados SET Salario = Salario * 1.1
Consultas con Parmetros Las consultas con parmetros son aquellas cuyas condiciones de bsqueda se definen mediante parmetros. Si se ejecutan directamente desde la base de datos donde han sido definidas aparecer un mensaje solicitando el valor de cada uno de los parmetros. Si deseamos ejecutarlas desde una aplicacin hay que asignar primero el valor de los parmetros y despus ejecutarlas. Su sintaxis es la siguiente: PARAMETERS nombre1 tipo1, nombre2 tipo2, ... , nombreN tipoN Consulta
Pgina 44 de 50
Ciclo II-2011
Descripcin Es el nombre del parmetro Es el tipo de datos del parmetro Una consulta SQL
Puede utilizar nombre pero no tipo de datos en una clusula WHERE o HAVING. PARAMETERS Precio_Minimo Currency, Fecha_Inicio DateTime; SELECT IDPedido, Cantidad FROM Pedidos WHERE Precio > Precio_Minimo AND FechaPedido >= Fecha_Inicio; Consultas sobre mltiples tablas Todas las consultas estudiadas hasta el momento se basan en seleccionar y campos sobre los datos almacenados en una nica tabla. SQL tambin permite obtener resultados a travs de la combinacin de mltiples tablas. La Sintaxis es:
El resto de clusulas estudiadas hasta ahora (WHERE, ORDER BY, GROUP BY, HAVING...) siguen siendo vlidas y utilizan el mismo formato. Las listas de campos vlidos son ahora cualquiera de los de las tablas utilizadas, como si se tratara de una nica tabla en la que existen todos los campos de todas las tablas. Puesto que es posible que existan campos con el mismo nombre en las diferentes tablas, a la hora de nombrar los campos ser necesario especificar a qu tabla pertenecen con el formato <tabla>.<campo>. As, la tabla generada en el ejemplo anterior (producto cartesiano) se obtiene con la siguiente instruccin SQL: SELECT * FROM Almacenes, Existencias; Las consultas de producto cartesiano como fin ltimo son poco habituales. Por lo general el producto cartesiano se utiliza como medio para obtener consultas que relacionan varias tablas a partir de claves externas. En las tablas de ejemplo se observa claramente la relacin existente entre los campos:
Pgina 45 de 50
Ciclo II-2011
Almacenes ID Ciudad
Existencias.Almacn contiene un identificador del almacn al que se refieren las existencias (requiere integridad referencial de algn tipo con el campo Almacenes.ID), y Existencias.Tipo contiene un identificador del tipo al que se refieren el registro de existencias (requiere integridad referencial con el campo Piezas.Tipo). Adems se puede intuir la siguiente informacin: Almacenes.ID es la clave principal de Almacenes. Piezas.Tipo es la clave principal de Piezas. (Exitencias.Almacn, Exitencias.Tipo) es la clave principal de Existencias. Exitencias.Almacn es una clave externa de Existencias sobre Almacenes. Exitencias.Tipo es una clave externa de Existencias sobre Piezas. Las claves externas permiten enlazar la informacin relacionada entre diferentes tablas. Por ejemplo, si queremos relacionar las existencias en un almacn con el nombre de la ciudad donde se ubica ese almacn, podemos calcular el producto as:
SELECT Almacenes.Ciudad, Existencias.Tipo, Existencias.Cantidad FROM Almacenes, Existencias WHERE Almacenes.ID = Existencias.Almacn; Esta consulta nos proporcionara la siguiente tabla:
Existencias.Tipo 1 2 1 4 1 2 3
De la misma forma podramos enlazar las tres tablas mediante la siguiente consulta:
Pgina 46 de 50
Ciclo II-2011
SELECT Almacenes.Ciudad, Piezas.Nombre, Existencias.Cantidad FROM Almacenes, Existencias, Piezas WHERE (Almacenes.ID = Existencias.Almacn) AND (Existencias.Tipo = Piezas.Tipo);
Existencias.Tipo 1 2 1 4 1 2 3
Pgina 47 de 50
Ciclo II-2011
UNIVERSIDAD DE EL SALVADOR FACULTAD DE CIENCIAS ECONOMICAS DEPARTAMENTO DE COMPUTACION COMPUTACIN II GUIA DE PRCTICA No 5.
Ejercicio 1. 1. 2. 3. Abra la base de datos Neptuno. Disear una consulta que sea capaz de devolver todos los clientes que pertenezcan al pas Espaa. Adems del criterio anterior, esta consulta solamente debe mostrarnos los campos IdCliente y NombreCompaa, sin mostrar el campo. 4. 5. Guardar la consulta con el nombre Seleccin pas. Modificar la consulta para hacer que cada vez que ejecutemos la consulta nos solicite el pas que deseamos ver .(Parmetros). 6. 7. 8. probar su funcionamiento con diferentes pases. Guardar la consulta. Crear una nueva consulta basada en la tabla clientes en la cual aparezcan los campos: NombreContacto, CdPostal y ciudad, debiendo aparecer solamente los registros que pertenezcan a la ciudad de Londres. 9. Guarde la consulta con el nombre CLIENTES DE LONDRES.
Ejercicio 2. 1. 2. 3. Abra la base de datos Neptuno. Hacer una copia de seguridad de la tabla PRODUCTOS. Disear una consulta del tipo actualizacin capaz de modificar todos los valores del campo PrecioUnidad de la tabla productos, incrementando el valor de los mismos en un 15%, pero solamente a aquellos productos cuyo valor sea menor a $10. 4. Llamar a la consulta subir precios.
Ejercicio 20. 1. Disear una consulta del tipo creacin de tabla capaz de generar una copia de los campos: IdPedido, Idproducto, idcliente, NombreProducto, FechaPedido, y cantidad, pero solamente aquellos clientes cuyo ciudad Londres. 2. 3. 4. 5. Llamar a la nueva tabla NUEVA TABLA PEDIDOS. Llamar a la consulta CREA NUEVA TABLA PEDIDOS. Abrir la nueva tabla creada y observar el contenido de la misma. cerrar la tabla.
Pgina 48 de 50
Ciclo II-2011
6.
Ejercicio 3. 1. Disear una consulta del tipo Datos Anexados capaz de aadir a la tabla NUEVA TABLA PEDIDOS los siguientes campos: IdPedido, Idproducto, idcliente, NombreProducto, FechaPedido, y cantidad, pero solamente aquellos clientes cuya ciudad sea Madrid. 2. 3. 4. 5. 6. Ejecutar la consulta. Guardar la consulta con el nombre AADIR REGISTROS.
Abrir la tabla NUEVA TABLA PEDIDOS y comprobar que se han agregado los registros. Cerrar la tabla NUEVA TABLA PEDIDOS. Ejecutar otra vez la consulta y observar el mensaje que nos presenta Access.
Ejercicio 4. 1. Disear una consulta de tipo eliminacin capaz de eliminar de la tabla NUEVA TABLA PEDIDOS solo aquellos registros comprendidos entre dos fechas limite que nos deber preguntar cada vez que ejecutemos la consulta (Parmetros). 2. 3. 4. 5. Guardar la consulta con el nombre BORRAR NUEVOS PEDIDOS ENTRE FECHAS. Ejecutar la consulta. Abrir la tabla NUEVA TABLA PEDIDOS y observar el efecto de la consulta. Volver a ejecutar la consulta y razonar el mensaje de advertencia que mostrara Access.
Ejercicio 5. 1. 2. Abrir la base de datos Neptuno. Disear una consulta del Tipo Tabla de referencias cruzadas capaz de devolver a su ejecucin una lista completa del NOMBRE DE LA EMPRESA(filas) con algn pedido, mostrando el nombre de los productos (columna) y en la interseccin de cada nombre de empresa y producto representar la SUMA DE cantidades. Ejercicio 6. Usando la bases de datos Neptuno, escribir y probar en Access las siguientes consultas utilizando el lenguaje SQL: 1. 2. 3. 4. 5. 6. 7. Cdigo y nombre de los productos que valen mas de $20.00. Cdigo de los productos cuyo proveedor es Exotic Liquids Cdigo y fecha de pedido de los pedidos de ms de 11 unidades que hayan hecho los clientes ALFKI y ANATR. Obtener toda la informacin de los proveedores. Listado de nombres de los productos y su precio, aadindole una columna con el precio con IVA. Listado de nombres de los productos de categora lcteos ordenados por precio de forma ascendente. Listado de nombres de los productos cuyas unidades en existencia superen las 100 y ordenados por precio de forma descendente. 8. 9. Cantidad total y media de productos por proveedor. Contar el nmero de proveedores.
Pgina 49 de 50
Ciclo II-2011
10. Obtener los cdigos de los proveedores que proveen ms de dos tipos distintos de productos. 11. Listado de todas las fechas y cantidades en las que se han pedido productos ms caros de $20.00. 12. Listado del nmero de productos que cuestan lo mismo.
Pgina 50 de 50
Ciclo II-2011