Escolar Documentos
Profissional Documentos
Cultura Documentos
de Ingeniera en Informtica y Sistemas Asignatura: Base de Datos y Sistemas Distribuidos Periodo: 2011
Clusula
FROM WHERE seleccionar. GROUP BY HAVING ORDER BY
Descripcin
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 especficos. Utilizada para expresar la condicin 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 Pgina: 1
Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniera / E.A.P. de Ingeniera en Informtica y Sistemas Asignatura: Base de Datos y Sistemas Distribuidos Periodo: 2011
FROM lista_de_tablasWHERE condiciones_de_bsqueda Ejemplo 1: SELECT * FROM cliente Ejemplo 2: SELECT Articulo.Cod_articulo, articulo.nom_articulo FROM Articulo WHERE Articulo.stk_minimo < 10 Sintaxis MS-SQL : SELECT [ALL | DISTINCT] select_list [INTO [new_table_name]] [FROM {table_name | view_name}[(optimizer_hints)] [[, {table_name2 | view_name2}[(optimizer_hints)] [..., {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_Seleccin [AS Nombre_Columna] [, Elemento_Seleccin [AS Nombre_Columna] ...] FROM Tabla [Alias] [[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN Tabla [Local] [ON Tabla [Alias].Nombre_Columna = Tabla [Alias].Nombre_Columna [INTO Destino] [WHERE CondicinCombinacin [AND CondicinCombinacin ...] [AND | OR CondicinFiltro [AND | OR CondicinFiltro ...]]] [GROUP BY ColumnaGrupo [, ColumnaGrupo ...]] [HAVING CondicinFiltro] [UNION [ALL] ComandoSELECT ] [ORDER BY Elemento_Orden [ASC | DESC] [, Elemento_Orden [ASC | DESC] ...]] Ejemplo: A. Simple SELECT: todas las filas, todas las columnas SELECT * FROM cliente B. Simple SELECT: subconjunto de Columnas, todas las filas SELECT cod_cliente, nom_cliente, ruc_cliente FROM cliente C. Simple SELECT: Subconjunto de filas, Subconjunto de Columnas SELECT cod_articulo, total = sum (pu_articulo) FROM articulo WHERE pu_articulo < $10000 AND stk_minimo_articulo IS NOT NULL
Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniera / E.A.P. de Ingeniera en Informtica y Sistemas Asignatura: Base de Datos y Sistemas Distribuidos Periodo: 2011
F. 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
II.- Practica Primeramente verificar que las tablas contengan los datos de las practica anterior Lectura de columnas seleccionadas de una tabla 2.1.1. Lectura de todas las columnas de una tabla - Ejecutar una consulta que muestre todos los datos de la tabla proveedores SELECT * FROM proveedor 2.1.2. Consultando las columnas Seleccionadas - Efectuar una consulta que muestre, Ruc, nombre y telfono de cada cliente
2.1.3. Cambiando los ttulos de las columnas - Efectuar la consulta anterior de manera que muestre los siguientes ttulos: RUC, Nombre y Telfono - Realice una consulta que calcule el importe de cada artculo vendido 2.1.4. Obteniendo columnas calculadas o computadas - Efectuar una consulta que muestre el cdigo, nombre y telfono del cliente, pero en una sola columna Lectura de filas seleccionadas de una tabla 2.2.1. Seleccionando filas en base a comparaciones - Obtener una lista de todas las ciudades cuyo DDN sea 054 SELECT * FROM ciudad Msc. Edgar Taya Acosta-etayaa@unjbg.edu.pe Pgina: 3
Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniera / E.A.P. de Ingeniera en Informtica y Sistemas Asignatura: Base de Datos y Sistemas Distribuidos Periodo: 2011
WHERE cod_ddn = '054' 2.2.2. Seleccionado filas en base a rangos - 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' - Realice una consulta que muestre las ventas realizadas en el mes de enero y febrero de ao 1999 2.2.3. Seleccionado filas en base a listas - Obtener el ruc y el nombre de todos los proveedores cuyo cdigo de la ciudad donde residen sea 002 o 007 SELECT ruc_proveedor, nom_proveedor FROM proveedor WHERE cod_ciudad IN ('02','07') 2.2.4. Seleccionado filas en base a cadena de caracteres - Obtenga el cdigo y nombre de todos los clientes cuyo nombre contenga la palabra UNJBG SELECT cod_cliente, nom_cliente FROM cliente WHERE nom_cliente LIKE '%UNJBG%' - Realice una consulta que muestre todos los artculos cuyo nombre empiece con la letra D 2.2.5. Seleccionado filas y eliminando los duplicados de la seleccin
- Obtener un listado de todos artculos vendidos (solo muestre el cdigo) en las boletas
SELECT DISTINCT cod_articulo FROM detalle_boleta Ordenando los resultados 2.3.1. Obtener la lista de clientes mostrando el nombre y Ruc, la lista deber estar ordenado por Ruc. 2.3.2. Obtener la lista de los datos de detalle de boleta, ordene la lista por cantidad, cdigo de articulo SELECT * FROM detalle_boleta ORDER BY Cantidad_vendida, cod_articulo Generacin de resmenes 2.4.1. Usando funciones resumen COUNT - Averige cuntas artculos existen? SELECT COUNT(*) FROM articulo - Cuntos artculos han sido vendidos?. SELECT COUNT(DISTINCT cod_articulo) FROM detalle_boleta 2.4.2. Usando GROUP BY y HAVING. Uso de COMPUTE BY - Cuntos proveedores hay en cada ciudad? SELECT cod_ciudad, nro_proveedores = COUNT(*) FROM proveedor GROUP BY cod_ciudad - Qu boletas de venta tienen por lo menos 2 artculos vendidos? SELECT nro_boleta, nro_articulos_vendidos = COUNT(*) FROM detalle_boleta GROUP BY nro_boleta HAVING COUNT(*) >= 2 - Realice una consulta que calcule la suma total de los importes de cada detalle de boleta SELECT nro_boleta, cod_articulo, TotalImporte=Cantidad_Vendida * Precio_Unitario FROM detalle_boleta ORDER BY nro_boleta COMPUTE SUM(Cantidad_Vendida * Precio_Unitario) BY nro_boleta - Haga una consulta que permita saber Cuntas veces un artculo ha sido vendido?. Lectura de datos de tablas relacionadas 2.5.1. Usando INNER JOIN - Obtener un listado de todos los artculos vendidos indicando el cdigo y nombre del articulo. Usando sintaxis ANSI (Estandar) SELECT detalle_boleta.cod_articulo, articulo.des_articulo FROM Detalle_boleta INNER JOIN Articulo Msc. Edgar Taya Acosta-etayaa@unjbg.edu.pe Pgina: 4
Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniera / E.A.P. de Ingeniera en Informtica y Sistemas Asignatura: Base de Datos y Sistemas Distribuidos Periodo: 2011
ON detalle_boleta.cod_articulo = articulo.cod_articulo Usando sintaxis MS-SQL SELECT detalle_boleta.cod_articulo, articulo.des_articulo FROM Detalle_boleta, Articulo WHERE detalle_boleta.cod_articulo = articulo.cod_articulo 2.5.2. Usando CROSS JOIN - Obtenga todas las combinaciones posibles para las tablas boleta venta y detalle de boleta Usando sintaxis ANSI (Estandar) SELECT boletaventa.*, detalle_boleta.* FROM BoletaVenta CROSS JOIN Detalle_boleta Usando sintaxis MS-SQL SELECT boletaventa.*, detalle_boleta.* FROM BoletaVenta, Detalle_boleta 2.5.3. Usando OUTER JOIN: Nota: Right Outer Join (*=) y Left Outer Join (=*)
Usando sintaxis ANSI (Estandar) SELECT articulo.des_articulo, detalle_boleta.cantidad_vendida FROM Detalle_Boleta RIGHT OUTER JOIN Articulo ON articulo.cod_articulo = detalle_boleta.cod_articulo Usando sintaxis MS-SQL SELECT articulo.des_articulo, detalle_boleta.cantidad_vendida FROM Detalle_Boleta, Articulo WHERE articulo.cod_articulo *= detalle_boleta.cod_articulo
- Obtener un listado de los artculos vendidos indicando la nombre y la cantidad vendida de cada uno. La lista debe incluir los artculos 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 adems que muestre el nombre del cliente que hizo la compra. SubConsultas 2.6. Obtener un listado de todos los artculos que tienen ventas registradas. SELECT des_articulo FROM Articulo WHERE cod_articulo IN ( SELECT cod_articulo FROM Detalle_Boleta ) - 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.7. Obtenga un listado de todos los clientes que no tienen RUC y enve el resultado a la tabla ClientesSinRuc -Qu requisito debe verificarse para que esta operacin sea permitida? Sp_dboption 'Tienda72m', 'select into/bulkcopy', true -A hora si podr realizar esta operacin 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 CondicinFiltro1 [AND | OR CondicinFiltro2 ...]]
2.8. Primeramente obtenga una copia de la tabla articulo: sp_dboption 'Tienda72m', 'select into/bulkcopy', true SELECT * INTO Articulo2 Msc. Edgar Taya Acosta-etayaa@unjbg.edu.pe Pgina: 5
Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniera / E.A.P. de Ingeniera en Informtica y Sistemas Asignatura: Base de Datos y Sistemas Distribuidos Periodo: 2011
FROM Articulo
- Eliminar en la tabla articulo2, todos los artculos cuyo stock actual sea menor a 25 DELETE FROM Articulo2 WHERE stk_actual_articulo < 25 - Verificar si los articulos fueron eliminados Actualizacin de filas de una tabla UPDATE: Actualiza registros de una tabla con nuevos valores. Sintaxis: UPDATE NombreTabla SET Nombre_Columna1 = eExpresin1 [, Nombre_Columna2 = eExpresin2 ...] WHERE CondicinFiltro1 [AND | OR CondicinFiltro2 ...]]
2.9. Cambiar el stock actual de los artculos incrementndolo en 10 para cada uno de los artculos, 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 - 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.nro_boleta = detalle_boleta.nro_boleta ) from boletaventa, detalle_boleta
III.- Tarea Encargada: Para realizar la tarea lea el libro de Anlisis y Diseo de Sistemas de Kendall y Kendall (Diseo de Consultas), Analisis y Diseo de sistemas de James Senn y el Libro Anlisis Estructurado de GanneSarson. 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, teniendo en cuenta las tablas de la tienda comercial Que realizan los siguientes comandos. sqlservr -c -de:\mssql7\data\master.mdf -ee:\mssql7\log\errorlog odbcping /Sserver81 /Usa /P net pause mssqlserver net continue mssqlserver net stop mssqlserver (En version 6.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 clusula: expresin [NOT] LIKE 'cadena' que permite los sgtes. caracteres comodines?:
carcter Comod n % _ [] Descripcin Cualquier cadena de cero o ms caracteres. Cualquier carcter individual Cualquier carcter individual del intervalo ([a-f]) o el conjunto ([abcdef]) especificado.
Ejemplo
WHERE ttulo LIKE %equipo% busca todos los ttulos de libros que contengan la palabra equipo en cualquier parte del ttulo. WHERE nombre LIKE _ean busca todos los nombres de cuatro letras que finalicen con ean. WHERE apellido LIKE [C-P]arsen busca apellidos de autores que terminen con arsen y comiencen con cualquier carcter individual entre C y P, por ejemplo Carsen, Larsen, Karsen, etc.
Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniera / E.A.P. de Ingeniera en Informtica y Sistemas Asignatura: Base de Datos y Sistemas Distribuidos Periodo: 2011 [^] Cualquier carcter 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. conjunto ([^abcdef]) especificado.