Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería / E.A.P.

de Ingeniería en Informática y Sistemas Asignatura: Base de Datos y Sistemas Distribuidos Periodo: 2011

Práctica de Laboratorio: Tema: Consultas y mantenimiento
Objetivos: • Aprender a realizar consultas básica y avanzadas. • Lectura de Columnas, Lectura de Filas • Filtrar datos. Relacionar tablas • Generar resúmenes de datos. Generar subconsultas • Enviar los resultados de una consulta a otro archivo • Eliminar filas de una tabla • Actualización de filas de una tabla

I.- Fundamento Teórico:
Comandos de SQL. SQL proporciona comandos del lenguaje de definición de datos (DDL) y del lenguaje de manipulación de datos (DML). Aunque existen algunas áreas solapadas, los comandos DDL permiten crear y definir nuevas bases de datos, campos e índices, mientras que los comandos DML le permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos. DDL: Las instrucciones DDL en SQL son expresiones generadas en torno a los siguientes comandos. Comando Descripción CREATE Utilizado para crear nuevas tablas, campos e índices. DROP Utilizado para eliminar tablas e índices de la base de datos. ALTER Utilizado para modificar tablas agregando campos o cambiando la definición de los campos. DML: Las instrucciones DML son expresiones generadas en torno a los comandos siguientes. Comando Descripción SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado. INSERT Utilizado para cargar lotes de datos en la base de datos en una única operación. UPDATE Utilizado para modificar los valores de determinados campos y registros. DELETE Utilizado para quitar registros de una tabla de base de datos. DCL: Las instrucciones DCL son generadas en torno a los comandos siguientes. Comando Descripción GRANT Utilizado para crear una entrada en el sistema de seguridad y permite al usuario usar la base de datos REVOKE Utilizado para quitar un permiso otorgado o denegado previamente de un usuario de la base datos actual. DENY Utilizado para denegar un permiso de una cuenta de seguridad en la base de datos actual. • Cláusulas SQL. Las cláusulas sql son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular. La siguiente tabla muestra las cláusulas que puede utilizar. •

Cláusula
FROM WHERE seleccionar. GROUP BY HAVING ORDER BY

Descripción
Utilizada para especificar la tabla de la cual se van a seleccionar los registros. Utilizada para especificar las condiciones que deben cumplir los registros que se van a Utilizada para separar los registros seleccionados en grupos específicos. Utilizada para expresar la condición que debe satisfacer cada grupo. Utilizada para ordenar los registros seleccionados de acuerdo con un orden especificado.

• SELECT : Crea una consulta de una o mas tablas. Recupera las filas (datos) desde una o mas tablas de una base de datos. Sintaxis Simple: SELECT lista_de_columnas Msc. Edgar Taya Acosta-etayaa@unjbg.edu.pe Página: 1

pe Página: 2 . Simple SELECT: todas las filas.. precio_unitario FROM detalle_boleta COMPUTE SUM(precio_unitario) Msc. articulo. Edgar Taya Acosta-etayaa@unjbg. ColumnaGrupo . COMPUTE.]] Ejemplo: A. de Ingeniería en Informática y Sistemas Asignatura: Base de Datos y Sistemas Distribuidos Periodo: 2011 FROM lista_de_tablasWHERE condiciones_de_búsqueda Ejemplo 1: SELECT * FROM cliente Ejemplo 2: SELECT Articulo.Cod_articulo..stk_minimo < 10 Sintaxis MS-SQL : SELECT [ALL | DISTINCT] select_list [INTO [new_table_name]] [FROM {table_name | view_name}[(optimizer_hints)] [[.... des_articulo. ruc_cliente FROM cliente C. {table_name16 | view_name16}[(optimizer_hints)]]] [WHERE clause] [GROUP BY clause] [HAVING clause] [ORDER BY clause] [COMPUTE clause] [FOR BROWSE] Sintaxis ANSI-SQL: SELECT [ALL | DISTINCT] Elemento_Selección [AS Nombre_Columna] [. Simple SELECT: Subconjunto de filas. pu_articulo. todas las columnas SELECT * FROM cliente B.. Todas las filas con Computed Sums SELECT nro_boleta.] FROM Tabla [Alias] [[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN Tabla [Local] [ON Tabla [Alias].]] [HAVING CondiciónFiltro] [UNION [ALL] ComandoSELECT ] [ORDER BY Elemento_Orden [ASC | DESC] [. y ORDER BY SELECT cod_articulo.P... Unidad_Medida_Articulo FROM articulo WHERE pu_articulo IS NOT NULL ORDER BY Unidad_Medida_Articulo DESC COMPUTE AVG(pu_articulo) BY Unidad_Medida_Articulo E. SELECT con clausulas GROUP BY..Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería / E.Nombre_Columna = Tabla [Alias].]]] [GROUP BY ColumnaGrupo [. Simple SELECT: subconjunto de Columnas.A.Nombre_Columna [INTO Destino] [WHERE CondiciónCombinación [AND CondiciónCombinación . todas las filas SELECT cod_cliente. cod_articulo. Subconjunto de Columnas SELECT cod_articulo.. Elemento_Selección [AS Nombre_Columna] . total = sum (pu_articulo) FROM articulo WHERE pu_articulo < $10000 AND stk_minimo_articulo IS NOT NULL D..nom_articulo FROM Articulo WHERE Articulo. nom_cliente... {table_name2 | view_name2}[(optimizer_hints)] [. Elemento_Orden [ASC | DESC] .edu.] [AND | OR CondiciónFiltro [AND | OR CondiciónFiltro .

2.' J. Crear una tabla Permanente con SELECT INTO SELECT * INTO ArticulosCaros FROM articulo WHERE pu_articulo > $25 go OR pu_articulo < $200 H. LEFT [OUTER] JOIN especifica que el resultado de la consulta contenga todas las filas de la tabla a la izquierda de la palabra clave JOIN y sólo las filas que concuerden procedentes de la tabla a la derecha de la palabra clave JOIN. Obteniendo columnas calculadas o computadas .Obtener una lista de todas las ciudades cuyo DDN sea 054 SELECT * FROM ciudad Msc. FULL [OUTER] JOIN especifica que el resultado de la consulta contenga todas las filas. Cambiando los títulos de las columnas .P. Seleccionando filas en base a comparaciones . cod_cliente. nombre y teléfono de cada cliente 2. concuerden o no. Optimizando Hints: Forzando a explorar una Tabla SELECT nro_boleta.pe Página: 3 .2.Efectuar una consulta que muestre. fec_boleta FROM BoletaVenta (index = 0) WHERE fec_boleta > '10/1/1998' Nota: • • • • INNER JOIN especifica que el resultado de la consulta contenga sólo filas para una tabla con la que coincidan una o varias filas en otra tabla.A.Efectuar la consulta anterior de manera que muestre los siguientes títulos: RUC. Crear un tabla temporal con SELECT INTO SELECT * INTO #ArtParaPedir FROM articulo WHERE stk_actual_articulo < stk_minimo_articulo go SELECT des_articulo FROM ArtParaPedir go G. SELECT cod_proveedor. Optimizar Hints: Usando el Nombre de un Index This example shows how to force the optimizer to use a nonclustered index to retrieve rows from a table. nom_proveedor. Consultando las columnas Seleccionadas . Ruc.A.1.Efectuar una consulta que muestre el código. Optimizar Hints: TABLOCK y HOLDLOCK BEGIN TRAN SELECT count(*) FROM t1 (TABLOCK HOLDLOCK) END TRAN I.1.edu.Realice una consulta que calcule el importe de cada artículo vendido 2.Practica Primeramente verificar que las tablas contengan los datos de las practica anterior • Lectura de columnas seleccionadas de una tabla 2. II.1.Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería / E. de Ingeniería en Informática y Sistemas Asignatura: Base de Datos y Sistemas Distribuidos Periodo: 2011 F.Ejecutar una consulta que muestre todos los datos de la tabla proveedores SELECT * FROM proveedor 2. Edgar Taya Acosta-etayaa@unjbg.1.1. tel_proveedor FROM proveedor (INDEX = nom_proveedor) WHERE nom_proveedor = 'Paracas S. de ambas tablas.1.. RIGHT [OUTER] JOIN especifica que el resultado de la consulta contenga todas las filas desde la tabla hasta la derecha de la palabra clave JOIN y sólo las filas que concuerden desde la tabla hasta la izquierda de la palabra clave JOIN. pero en una sola columna • Lectura de filas seleccionadas de una tabla 2. Lectura de todas las columnas de una tabla . Nombre y Teléfono . nombre y teléfono del cliente.3.4.

Realice una consulta que muestre todos los artículos cuyo nombre empiece con la letra D 2. la lista deberá estar ordenado por Ruc. cod_articulo • Generación de resúmenes 2. articulo.Realice una consulta que calcule la suma total de los importes de cada detalle de boleta SELECT nro_boleta. de Ingeniería en Informática y Sistemas Asignatura: Base de Datos y Sistemas Distribuidos Periodo: 2011 WHERE cod_ddn = '054' 2. código de articulo SELECT * FROM detalle_boleta ORDER BY Cantidad_vendida. Usando funciones resumen COUNT . SELECT COUNT(DISTINCT cod_articulo) FROM detalle_boleta 2. nom_proveedor FROM proveedor WHERE cod_ciudad IN ('02'. Edgar Taya Acosta-etayaa@unjbg.pe Página: 4 .3. cod_articulo.4.Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería / E.4.cod_articulo.2.'07') 2.¿Cuántos proveedores hay en cada ciudad? SELECT cod_ciudad.Realice una consulta que muestre las ventas realizadas en el mes de enero y febrero de año 1999 2.Averigüe ¿cuántas artículos existen? SELECT COUNT(*) FROM articulo .P. Seleccionado filas en base a listas . Seleccionado filas en base a cadena de caracteres .2. Obtener la lista de los datos de detalle de boleta. • Usando sintaxis ANSI (Estandar) SELECT detalle_boleta. Usando INNER JOIN .Obtener un listado de todos artículos vendidos (solo muestre el código) en las boletas SELECT DISTINCT cod_articulo FROM detalle_boleta • Ordenando los resultados 2.Obtener un listado de todos los artículos vendidos indicando el código y nombre del articulo. Seleccionado filas en base a rangos .Obtenga el código y nombre de todos los clientes cuyo nombre contenga la palabra ‘UNJBG’ SELECT cod_cliente.¿Cuántos artículos han sido vendidos?.2.3.1.des_articulo FROM Detalle_boleta INNER JOIN Articulo Msc. • Lectura de datos de tablas relacionadas 2.edu. TotalImporte=Cantidad_Vendida * Precio_Unitario FROM detalle_boleta ORDER BY nro_boleta COMPUTE SUM(Cantidad_Vendida * Precio_Unitario) BY nro_boleta .2.4. Uso de COMPUTE BY . nro_articulos_vendidos = COUNT(*) FROM detalle_boleta GROUP BY nro_boleta HAVING COUNT(*) >= 2 . ordene la lista por cantidad.Obtener un listado de todas las ventas realizadas entre el 1 de enero y entre 20 de abril de 1999 SELECT * FROM BoletaVenta WHERE fec_boleta BETWEEN '01/01/99' AND '20/04/99' .5. Usando GROUP BY y HAVING.¿Qué boletas de venta tienen por lo menos 2 artículos vendidos? SELECT nro_boleta. nro_proveedores = COUNT(*) FROM proveedor GROUP BY cod_ciudad .3. Seleccionado filas y eliminando los duplicados de la selección .2.2.Obtener el ruc y el nombre de todos los proveedores cuyo código de la ciudad donde residen sea 002 o 007 SELECT ruc_proveedor.1. nom_cliente FROM cliente WHERE nom_cliente LIKE '%UNJBG%' .5. 2. Obtener la lista de clientes mostrando el nombre y Ruc.2.Haga una consulta que permita saber ¿Cuántas veces un artículo ha sido vendido?.A.1.

cod_articulo = articulo. true SELECT * INTO Articulo2 Msc.cod_articulo = detalle_boleta.7. Usando OUTER JOIN: Nota: Right Outer Join (*=) y Left Outer Join (=*) • Usando sintaxis ANSI (Estandar) SELECT articulo.cod_articulo • Usando sintaxis MS-SQL SELECT articulo.. detalle_boleta. true -A hora si podrá realizar esta operación SELECT * INTO ClientesSinRuc FROM Cliente WHERE ruc_cliente IS NULL or ruc_cliente=' ' • Eliminando filas de una tabla DELETE: Elimina registros de una tabla Sintaxis: DELETE FROM NombreTabla [WHERE CondiciónFiltro1 [AND | OR CondiciónFiltro2 .*.cod_articulo • Usando sintaxis MS-SQL SELECT detalle_boleta. Usando CROSS JOIN ..8. detalle_boleta.*. 'select into/bulkcopy'. Edgar Taya Acosta-etayaa@unjbg.6.]] 2.3.cantidad_vendida FROM Detalle_Boleta RIGHT OUTER JOIN Articulo ON articulo.Obtener un listado de los artículos vendidos indicando la nombre y la cantidad vendida de cada uno.2.des_articulo. • SubConsultas 2. La lista debe incluir los artículos que no registran ventas • Realice una consulta que muestre las boletas emitidas en el mes de febrero y en el 18 de abril de 1999 y además que muestre el nombre del cliente que hizo la compra.edu.5.cantidad_vendida FROM Detalle_Boleta.des_articulo.5. detalle_boleta. Detalle_boleta 2.cod_articulo. de Ingeniería en Informática y Sistemas Asignatura: Base de Datos y Sistemas Distribuidos Periodo: 2011 ON detalle_boleta.* FROM BoletaVenta CROSS JOIN Detalle_boleta • Usando sintaxis MS-SQL SELECT boletaventa. detalle_boleta. Obtenga un listado de todos los clientes que no tienen RUC y envíe el resultado a la tabla ClientesSinRuc -¿Qué requisito debe verificarse para que esta operación sea permitida? Sp_dboption 'Tienda72m'. Obtener un listado de todos los artículos que tienen ventas registradas.pe Página: 5 . Articulo WHERE detalle_boleta.Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería / E.cod_articulo 2. SELECT des_articulo FROM Articulo WHERE cod_articulo IN ( SELECT cod_articulo FROM Detalle_Boleta ) .cod_articulo *= detalle_boleta.cod_articulo .Realice una consulta que muestre el nombre del cliente que hizo compras pero que no tiene RUC • Enviando el resultado de una consulta a otro archivo 2.Obtenga todas las combinaciones posibles para las tablas boleta venta y detalle de boleta • Usando sintaxis ANSI (Estandar) SELECT boletaventa.* FROM BoletaVenta.A. Primeramente obtenga una copia de la tabla articulo: sp_dboption 'Tienda72m'.cod_articulo = articulo. Articulo WHERE articulo. articulo.P. 'select into/bulkcopy'.des_articulo FROM Detalle_boleta.

pe Página: 6 . • Responda lo siguiente: -¿Qué es consulta de tipo 1? -¿Qué es consulta de tipo 2? -¿Qué es consulta de tipo 3? -¿Qué es consulta de tipo 4? -¿Qué es consulta de tipo 5? -¿Qué es consulta de tipo 6? • Hacer un ejemplo para cada tipo de consulta.mdf -ee:\mssql7\log\errorlog • odbcping /Sserver81 /Usa /P • net pause mssqlserver • net continue mssqlserver • net stop mssqlserver (En version 6. de Ingeniería en Informática y Sistemas Asignatura: Base de Datos y Sistemas Distribuidos Periodo: 2011 FROM Articulo /* ó también puede ser FROM Tienda72m. WHERE apellido LIKE ‘[C-P]arsen’ busca apellidos de autores que terminen con arsen y comiencen con cualquier carácter individual entre C y P...P. todos los artículos cuyo stock actual sea menor a 25 DELETE FROM Articulo2 WHERE stk_actual_articulo < 25 • . Edgar Taya Acosta-etayaa@unjbg.edu.9. Analisis y Diseño de sistemas de James Senn y el Libro Análisis Estructurado de GanneSarson. teniendo en cuenta las tablas de la tienda comercial • Que realizan los siguientes comandos.Verificar si los articulos fueron eliminados Actualización de filas de una tabla UPDATE: Actualiza registros de una tabla con nuevos valores..] WHERE CondiciónFiltro1 [AND | OR CondiciónFiltro2 ..nro_boleta = detalle_boleta.Tarea Encargada: Para realizar la tarea lea el libro de Análisis y Diseño de Sistemas de Kendall y Kendall (Diseño de Consultas). Msc. • sqlservr -c -de:\mssql7\data\master. Ejemplo WHERE título LIKE ‘%equipo%’ busca todos los títulos de libros que contengan la palabra ‘equipo’ en cualquier parte del título.nro_boleta ) from boletaventa.A. Cualquier carácter individual Cualquier carácter individual del intervalo ([a-f]) o el conjunto ([abcdef]) especificado. siempre y cuando su precio unitario sea por lo menos 30 soles UPDATE Articulo2 SET stk_actual_articulo = stk_actual_articulo + 10 WHERE pu_articulo >= 30 .Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería / E. por ejemplo Carsen. etc. detalle_boleta III.. Sintaxis: UPDATE NombreTabla SET Nombre_Columna1 = eExpresión1 [. Larsen.x use: NET STOP SQLSERVER) • osql /U sa /P /Q "EXIT(SELECT * FROM cliente)" /d tienda85m /s server81 En Query Analyser: • SHUTDOWN • sp_helplanguage • SET LANGUAGE Spanish • En la cláusula: expresión [NOT] LIKE 'cadena' ¿que permite los sgtes.]] 2. Nombre_Columna2 = eExpresión2 . caracteres comodines?: carácter Comodí n % _ [] Descripción Cualquier cadena de cero o más caracteres.Articulo */ . WHERE nombre LIKE ‘_ean’ busca todos los nombres de cuatro letras que finalicen con ean. Cambiar el stock actual de los artículos incrementándolo en 10 para cada uno de los artículos.Verificar si los articulos tienen actualizado sus respectivos stock actuales • Calcular el importe en detalle de boleta • Calcular Total boleta con la suma total de importe de detalle boleta respectivo update boletaventa set Tot_boleta = ( select sum(importe) from detalle_boleta where boletaventa.. Karsen.Eliminar en la tabla articulo2.

conjunto ([^abcdef]) especificado. de Ingeniería en Informática y Sistemas Asignatura: Base de Datos y Sistemas Distribuidos Periodo: 2011 [^] Cualquier carácter individual que no se WHERE apellido LIKE ‘de[^l]%’ busca todos los apellidos de autores que encuentre en el intervalo ([^a-f]) o el comienzan con de y en los que la siguiente letra no sea l. Edgar Taya Acosta-etayaa@unjbg.pe Página: 7 .edu.A. Msc.Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería / E.P.

Sign up to vote on this title
UsefulNot useful

Master Your Semester with Scribd & The New York Times

Special offer: Get 4 months of Scribd and The New York Times for just $1.87 per week!

Master Your Semester with a Special Offer from Scribd & The New York Times