UNIDAD IV

 

Comandos DDL DML DCL Clausulas Consulta Cursores TP Volver

CONSULTAS SIMPLES

 

1. Mostrar nombres de oficinas de la Región Centro.

SELECT nombre
FROM oficina
WHERE región = ' CENTRO' ;

2. Mostrar Vendedores cuyas ventas superan  la meta.

       SELECT *
       FROM vendedor
       WHERE ventas > meta ;

3. Mostrar valor del inventario de los productos clasificado por valor

        SELECT codpro, nombre, preunitario*stock
        FROM producto;
        ORDER BY preunitario*stock

4. Mostrar los códigos de los empleados que son directores de oficina

        SELECT director
        FROM oficina;

       En pantalla se desplegara el siguiente pantallazo:

                                               110
                                               115
                                               120
                                               120

Como el código 120 tiene las oficinas 030 y 040 a cargo aparecerá 2 veces. Esto se soluciona utilizando la cláusula DISTINTC.

                SELECT  DISTINTC director
                FROM oficina;

En pantalla se desplegara el siguiente pantallazo:


                                               110
                                               115
                                               120


CONSULTAS MULTITABLA

Mostrar los Clientes con el respectivo nombre del vendedor que lo atiende.

                SELECT codcli, cliente.nombre, vendedor.nombre
                FROM cliente, vendedor
                WHERE cliente.codven = vendedor.codven

En este caso mostrara de la Tabla CLIENTE los atributos codcli y nombre y de la Tabla VENDEDOR mostrara el nombre

 

Mostrar ventas realizadas indicando nombres del cliente y del producto en vez de los códigos.

                SELECT numero, cliente.nombre, producto.nombre, cantidad, valor
                FROM pedidos, cliente, producto
                WHERE pedidos.codcli = clientes.codcli
                AND pedidos.codpro = producto.codpro;

 

CONSULTAS SUMATORIAS

Función Operación Ejemplo
COUNT {* | (nombre-columna)} Cuenta numero de filas Select count (*) from oficina; Cuenta el numero de oficinas.
AVG   (nombre-columna) Calcula el promedio de todos los valores de la columna Select avg(meta) from vendedor; Calcula promedio de la meta
MAX  (nombre-columna) Calcula el valor mayor de la columna Select max(valor) from pedidos Calcula mayor venta realizada
MIN (nombre-columna) Calcula el menor valor de la columna Select min(valor) from pedidos Calcula menor venta realizada
SUM (nombre-columna) Calcula suma de los valores de la columna Select sum(valor) from pedidos Calcula suma de todas las ventas realizadas.

 
Mostrar mejor venta realizada


      SELECT  max(ventas)
      FROM vendedor;
               
Mostrar numero de vendedores que han superado la meta

                SELECT  count(codven)
                FROM vendedor
                WHERE ventas > meta;

Mostrar compras totales del cliente cuyo código es 81

                SELECT count (valor)
                FROM cliente
                WHERE codcli = 81;

 

CONSULTAS CON ROMPIMIENTO DE CONTROL

Para rompimientos de control se utiliza la cláusula  group by . Si la consulta solicitada requiere que algún conjunto de filas cumpla con una condición, se utiliza el comando having  en vez del where.

 

Mostrar total compras de cada cliente


                SELECT codcli "Cliente", sum (valor) "Total"
                FROM pedidos
                GROUP BY codcli
;

                Producirá el siguiente pantallazo:

                Cliente                                    Total

                      3                                       7,500

                      4                                      20,000

                      7                                      32,000

Mostrar numero de vendedores por oficina

                SELECT codofi, count(*)
                FROM oficina
                GROUP BY codofi;

De la tabla de pedidos mostrar el promedio de compras de  aquellos clientes que realizaron en total pedidos superiores a los $ 15,000

                SELECT codcli, avg (valor)
                FROM pedidos
                GROUP BY codcli
                HAVING sum (valor) > 15000;

 

SUBCONSULTAS

Otra de las facilidades que nos permite SQL es incluir una o mas consultas dentro de una consulta, como se muestra a continuación.

Mostrar vendedores de la  oficina de VILLANUEVA

 

  SELECT codven, nombre FROM vendedor WHERE codofi = (SELECT codofi

   FROM oficina  WHERE nombre = 'VILLANUEVA');

 

Mostrar el total de compras de aquellos clientes que han realizado mas de 2 compras

 

              SELECT codcli, sum (valor)
                FROM pedidos
                GROUP BY codcli
                HAVING count (codcli) > 2;

 

Mostrar clientes que son atendidos por vendedores de las oficinas región Centro

 

             SELECT codcli
                FROM cliente
                WHERE codven IN (SELECT  codven
                                                  FROM vendedor
                                                  WHERE codofi = (SELECT codofi
                                                                                   FROM oficina
                                                                                   WHERE región = 'CENTRO');

   También podría ser:

 

             SELECT codcli
                FROM cliente, vendedor, oficina
                WHERE cliente.codven = vendedor.codcli
                AND  vendedor.codofi = oficina.codofi
                AND  oficina.region = ' CENTRO ';

 

INFORMES CON SQL

 

Como ya hemos visto, con SQL se puede crear la estructura de la base de datos, se pueden actualizar estos, pero la herramienta más poderosa es para crear informes refinados, rápidos y bien formateados. Permitiendo un manejo sencillo sobre los títulos, cabeceras de columnas, subtotales y totales. Es el uso más común de SQL, consultas e impresión de informes.

 

PRINCIPALES COMANDOS

 

REMARK: Comentarios. Se puede abreviar a REM

 

SET HEADSEP <carácter>: Indica cual es el carácter utilizado para partir un titulo en 2 o más líneas.


TTITLE: Titulo superior


BTITLE: Titulo inferior


COLUMN: Columnas del informe


BREAK ON: Donde imprimir subtotales o totales


COMPUTE SUM: Hace que SQL calcule totales


SET LINE SIZE: Caracteres por línea


SET PAGE SIZE: Líneas por pagina


SPOOL: Redirecciona el informe para un archivo


/* Comentarios entre varias líneas */


Ejemplo:

 

REM Programa ejemplo de informe con SQL
REM Descripción : Informe de ventas por articulo.

SET HEADSEP  !

TTITLE ' INFORME DE VENTAS DETALLADO ! POR ARTICULO '
BTTILE                 ' COMPAÑÍA XYZ '

COLUMN nombre  HEADING ' Nombre ! Producto ' format a18 word -wrapped à siga en la siguiente línea
COLUMN cantidad   HEADING ' Unidades '
COLUMN  valor         HEADING ' Valor ! Venta '
BREAK ON nompro   SKIP 2 à salte 2 líneas antes de imprimir subtotales
COMPUTE SUM OF valor ON nompro

SET LINESIZE     80
SET PAGESIZE    50

SPOOL  informe.lst à el informe es guardado en un archivo llamado informe.lst

SELECT  nombre, cantidad, valor
FROM pedido, producto
WHERE pedido.codpro = producto.codpro
ORDER BY nompro;

                              

 INFORME DE VENTAS DETALLADO POR ARTICULO

 

Nombre                                 Unidades                                               Valor
Producto                                                                                              Venta

 

ESCOBAS                               5                                              7,500

                 1                                            9,000

                                                                       sub             16,500

 

CEPILLOS                                 5                                         11,000

                                                                       Sub             11,000

JABON FAB                               4                                         32,000

                                                                        Sub            32,000

                                                                        Tot             59,500

 

VISTAS

Una vista es una consulta que esta permanentemente almacenada en la base de datos y a la que se le asigna un nombre. Es como una tabla virtual. No puede ser modificada, gasta espacio pero es muy veloz para consultas y se actualiza automáticamente.

Sintaxis:

CREATE VIEW nombre-vista AS
SELECT {* | {nombre-columna(s),}
FROM {nombre-tabla(s),}
[WHERE condición]
[ORDER BY {expresion | nombre-columna [ASC | DESC]}];

Ejemplo:

Crear una vista con el nombre Vista 1 que contenga los campos codpro, nombre, cantidad, valor desde las tablas pedido y producto cuando el código del producto de las tablas sean iguales.

CREATE VIEW vista 1 AS
SELECT codpro, nombre, cantidad, valor
FROM pedido, producto
WHERE pedido.codpro = producto.codpro;

Para eliminar una vista se utiliza la sentencia:

DROP VIEW nombre-vista;

 

      Volver

 

*