Você está na página 1de 32

MADRID 2002 Manual para Analistas y programadores IBM AS / 400 1. Que es el SQL? 2. Consultas bsicas 3. Consultas avanzadas 4.

Funciones 5. Agrupamientos 6. Consultas sobre varias tablas 7. Actualizacin 8. Borrar 9. Insertar Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 1

Que es el SQL? El SQL ( Estructure Query Lnguage ) es un lenguaje de programacin q ue nos permite trabajar con bases de datos tanto a nivel usuario como a nivel ad ministrador , permitindonos acceder a la informacin que contienen. El SQL se puede utilizar desde una terminal o puede estar embebido dentro de un programa el cua l puede haber sido desarrollado en lenguajes como RPG , COBOL , FORTRAN , VISUAL BASIC , etc. El estructure query languaje se ha divulgado en los ltimos quince ao s pudiendo encontrar aplicaciones del mismo tanto en ordenadores personales , re des de PC , mainframe y Host. Nos permite realizar consultas y tareas de adminis tracin en forma amigable y con poco esfuerzo. Consultar , actualizar , crear y bo rrar registros como as tambin tablas, es una tarea sencilla con SQL. Como todo len guaje tiene su sintaxis y semntica la cual desarrollaremos siguiendo las especifi caciones de IBM. Cabe aclarar que el SQL se encuentra estandarizado por el ANSI ( Instituto Americano de Normas ) y por la ISO ( International Standards Organiz ation ). Este lenguaje esta compuesto por: Palabras predefinidas Nombres de obje tos !" Tablas !" Campos Constantes Signos Con ellos construiremos las sentencias para acceder, actualizar , insertar y bor rar informacin de las bases de datos. Dentro de las sentencias que utiliza SQL la s podemos clasificar segn su objetivo: Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 2

Las sentencias que nos permiten trabajar con datos !"SELECT : Nos permite realiz ar consultas sobre una tabla !"INSERT : Con esta sentencia insertamos registros a una tabla !" UPDATE : Nos permite actualizar , modificar datos dentro de una t abla !"DELETE : Con esta sentencia borramos registros de una tabla. Las sentencias que nos permiten definir datos !"CREATE : Con esta sentencia pode mos crear tablas. DROP : Nos permite destruir tablas. Las sentencias de control de datos !"GRANT : Nos permite otorgar autorizacin a us uarios para que puedan acceder a una tabla. REVOKE : Con esta sentencia podemos revocar una autorizacin de acceso a una tabla. Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 3

Consultas bsicas en SQL Anteriormente expresamos que la sentencia SQL que nos per mite realizar consultas en : SELECT Supongamos que tenemos un tabla definida segn la siguiente definicin llamada SECTOR CODS SECD 5 30 N A 0 Los registros de este archivo contienen la siguiente informacin sobre los rubros de acciones en donde tiene inversiones una compaa petrolera. CODS 10 20 30 SECD SE CTOR TECNOLOGAS SECTOR CONSUMO SECTOR FARMACEUTICO Vamos a realizar una consulta para poder visualizar los registros de esta tabla. La sentencia que escribiremos en la lnea de comandos del SQL ser la siguiente: Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 4

SELECT * FROM SECTOR Luego de ejecutar esta sentencia observaremos en la pantalla el siguiente result ado. CODS 10 20 30 SECD SECTOR TECNOLOGAS SECTOR CONSUMO SECTOR FARMACEUTICO Estamos visualizando todos los registros de este archivo y todos sus campos. La semntica bsica de la sentencia SELECT es la siguiente SELECT ( campos a visualizar ) FROM nombre del archivo Cuando queremos ver todos los campos que se encuentra n definidos en la tabla utilizamos el signo * y cuando queremos ver algn o alguno s campos debemos enumerar sus nombres segn la DDS. Supongamos que queremos ver so lamente el contenido del campo CODS, entonces escribiremos la siguiente sentenci a: SELECT CODS FROM SECTOR Podemos decir que tanto SELECT como FROM son palabras predefinidas y CODS y SECTOR son nombres de objetos, en este caso el primero es el nombre de un campo y el segundo un nombre de archivo. Entonces para poder ge neralizar la interpretacin de la sentencia SELECT y su sintaxis podemos decir : SELECT cam01, camp02, camp03, campXX FROM nombre del archivo Observamos que despus de SELECT o escribimos * para visualizar todos los campos o escribimos una lista de campos que queremos visualizar en nuestra consulta. Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 5

Vamos consultar nuestra pequea base de datos y queremos visualizar solamente aque llos sectores cuyo cdigo sea superior a 10. SELECT * FROM SECTOR WHERE CODS > 10 Hemos condicionado nuestra consulta con la palabra predefinida WHERE dicindole qu e solamente deseamos visualizar los registros cuyo cdigo de sector sean mayores a 10 y para eso tambin hemos utilizado la constante numrica 10 y el signo matemtico de mayor. Al ejecutar esta consulta observaremos en nuestra pantalla los siguien tes datos: CODS 20 30 SECD SECTOR CONSUMO SECTOR FARMACEUTICO Las constantes alfanumricas se escriben entre comillas y se las aplica a campos a lfanumricos y las constantes numricas sin comillas y se las aplica a campos numrico s. A continuacin tenemos definida una nueva tabla llamada ACCION segn los siguient es datos. CODAT CODST DESAT PAIS 5 5 35 3 N N A A 0 0 Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 6

Ahora trabajaremos sobre ella y realizaremos nuevas consultas. El contenido de l a misma es el siguiente : CODAT 10 15 45 70 25 35 20 30 50 40 CODST 10 10 30 10 10 30 20 20 20 10 DESAT BBVA TELECOMUNICACIONES RENTA 4 TECNOLOGIA BANKPYME MULTISALUD BCH INTERNE T CARMINAGNAC TECHNOLOGIES BBL INVT. FOOD & DEVE BAWESTO SECTOR CONSUMO FONDOESP ACE FINANCIERO FRAMLINGTON FINANCIAL FINSBURY TECHNOLOGY TR PAIS ES ES ES ES FR BL ES ES UK UK SELECT * FROM ACCION WHERE CODS = 30 Luego de ejecutar esta sentencia observarem os por pantalla los siguientes datos CODAT CODST DESAT 45 30 BANKPYME MULTISALUD 35 30 BBL INVT. FOOD & DEVE PAIS ES BL SELECT CODAT, DESAT, PAIS FROM ACCION WHERE PAIS = ES Observamos que queremos real izar una consulta que nos muestre las acciones de empresas espaolas y para eso he mos condicionado la bsqueda por medio del campo PAIS = ES . Considrese que ES es una constante alfanumrica y por lo tanto debe ir entre comillas. Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 7

CODAT 10 15 45 70 20 30 DESAT BBVA TELECOMUNICACIONES RENTA 4 TECNOLOGIA BANKPYME MULTISALUD BCH INTERNE T BAWESTO SECTOR CONSUMO FONDOESPACE FINANCIERO PAIS ES ES ES ES ES ES Realizaremos otra consulta en base a la anterior pero con operadores lgicos. Quer emos seleccionar las acciones espaolas del sector tecnolgico. SELECT CODAT, DESAT FROM ACCION WHERE PAIS = ES AND CODS = 10 El resultado ser el siguiente: CODAT 10 15 70 40 DESAT BBVA TELECOMUNICACIONES RENTA 4 TECNOLOGIA BCH INTERNET FINSBURY TECHNOLOG Y TE Ahora queremos visualizar todos los registros del archivo que no sean acciones d e empresas de Espaa. SELECT CODAT , DESAT FROM ACCION WHERE PAIS <> ES Observemos e l operador de comparacin <> esto quiere decir que deseamos que se cumpla la condi cin campo PAIS distinto de ES Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 8

(Espaa). El resultado que obtendremos en nuestra pantalla ser siguiente : CODAT DESAT 25 CARMINAGNAC TECHNOLOGIES 35 BBL INVT. FOOD & DEVE 50 FRAMLINGTON FINANCIAL 40 FINSBURY TECHNOLOGY TR Ahora trabajaremos sobre otra tabla llamada MOVIA movimiento de acciones en dond e se encuentran almacenados las operaciones de compra y venta de la cartera de l a empresa. Esta tabla esta definida segn la siguiente DDS: CODAA CODSS FECT PCU CANC IMPC PVU CANV IMPV CC CV EST 5 5 8 9 9 11 9 9 11 9 9 1 N N N N N N N N N N N A 0 0 0 2 0 2 2 0 2 2 2 Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 9

Los datos en ella son los siguientes: CODAA CODS 10 10 50 20 10 10 70 10 35 30 45 30 10 10 20 20 70 10 20 20 FECT 2002 0424 20020428 20020428 20020428 20020428 20020428 20020505 20020505 20020510 200 20510 PCU 10 15 11 8 12 9 11 6 9 6 CANC 1000 500 1000 3000 1000 1000 1000 2000 1 000 1000 IMPC 9880 7410 10860 23730 11820 8860 10860 11870 8920 5935 PVU 12 16 1 3 14 13 CANV 1000 500 1000 1000 1000 IMPV 11860 7890 12830 13780 12830 CC 120 90 140 270 180 140 140 130 80 65 CV 140 110 170 EST V V V C 220 V C 170 V C C C Se nos pide realizar una consulta para visualizar las acciones de BBVA Telecomun icaciones que se han vendido SELECT * FROM MOVIA WHERE EST = V AND CODA=10 En resu ltado ser el siguiente: CODAA 10 10 10 COD S 10 10 10 FECT PCU 20020424 20020428 20020210 10 11 11 CANC IMPC PVU 12 13 13 CANV IMPV CC CV EST 1000 9880 1000 10860 1000 10860 1000 11860 120 140 V 1000 12830 140 170 V 1000 12830 140 170 V Obsrvese el uso del operador lgico AND. Ahora queremos visualizar todos los movimi entos de acciones cdigo 50 y 35 mostrando cdigo de accin, precio unitario en la com pra, importe de compra, precio unitario de venta e importe de venta: SELECT CODA A, PCU, IMPC, PVU, IMPV FROM MOVIA WHERE CODA IN(50, 35) Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 10

En resultado ser el siguiente: CODAA 50 35 PCU 15 12 IMPC 7410 11820 PVU 16 14 IMPV 7890 13780 Obsrvese que hemos utilizado en predicado ( NOT ) IN este nos permite listar aque llos registros cuyo campo CODAA tenga los valores 50 o 35. Ahora realizaremos un a consulta de todas las acciones que pertenezcan al sector consumo y farmacutico. Nuestra sentencia SQL ser: SELECT * FROM MOVIA WHERE CODSS IN(20, 30) Visualizar emos en nuestro ordenador la siguiente informacin: CODAA 50 35 45 20 20 CODSS 20 30 30 20 20 FECT PC U CANC 500 1000 1000 2000 1000 IMPC 7410 11820 8860 11870 5935 PVU 16 14 CANV 500 1000 IMPV 7890 13780 CC 90 180 140 130 65 CV EST 20020428 15 20020428 12 20020428 9 20020505 6 20020510 6 110 V 220 V C C C Ahora queremos visualizar aquellas acciones cuyos cdigos no sean 10 y 50 entonces nuestra sentencia ser: SELECT * FROM MOVIA WHERE CODSS NOT IN(10, 30) ORDER BY I MPC CODAA 20 20 CODSS 20 20 FECT PC 20020510 20020505 CANC 1000 2000 IMPC 5935 11870 PVU CANV IMPV CC 65 130 CV EST C C U 6 6 En la siguiente consulta deseamos visualizar todos los movimientos de acciones a nteriores al mes de mayo por lo que nuestra sentencia SQL ser: Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 11

SELECT * FROM MOVIA WHERE FECT < 20020501 CODAA CODS S 10 10 50 20 10 10 70 10 35 30 45 30 FECT 20020424 20020428 20020428 20020428 20020428 20020428 PCU 10 15 11 8 12 9 CANC 1000 500 1000 3000 1000 1000 IMPC 9880 7500 10860 23730 11820 8860 PVU 12 16 13 14 CANV 1000 500 1000 1000 IMPV 11860 7890 12830 13780 CC 120 90 140 270 180 140 CV EST 140 V 110 V 170 V C 220 V C Queremos realizar la misma consulta pero que la informacin se genere ordenada por cdigo de sector SELECT * FROM MOVIA WHERE FECT < 20020501 ORDER BY CODS CODAA 10 10 70 50 35 45 CODS 10 10 10 20 30 30 FECT PCU CANC 20020424 10 1000 20 020428 11 1000 20020428 8 3000 20020428 15 500 20020428 12 1000 20020428 9 1000 IMPC 9880 10860 23730 7410 11820 8860 PVU 12 13 16 14 CANV 1000 1000 500 1000 IM PV 11860 12830 7890 13780 CC 120 140 270 90 180 140 CV EST 140 V 170 V C 110 V 2 20 V C Con el predicado ORDEN BY podemos ordenar la informacin a visualizar por el campo que sea mas adecuado para la presentacin de la misma. Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 12

Consultas avanzadas Hemos llegado a un punto donde realizares consultas avanzada s Queremos calcular la Rentabilidad luego de impuesto de los movimientos de acci ones vendidas en base a la informacin que se encuentra en la tabla MOVIA. Definam os la formula de rentabilidad en la compra y venta de acciones considerando que sobre el importe que resulta de restar el importe de venta menos el de compra se tributa el 10 % de impuesto. Los importes de venta y compra son netos de comisi ones. R = (((IMPV IMPC) * 0.90) / IMPC ) * 100 Aclaremos con un ejemplo numrico e n base al primer registro de la tabla: R = ((( 11860 9880) * 0.90) / 9880 + CC * 100 = 17,86 Nuestra sentencia SQL ser la siguiente SELECT CODAA, IMPC, IMPV, ((( IMPV IMPC) * 0.90 ) / IMPC + CC ) * 100 FROM MOVIA WHERE EST= V ORDER BY CODA , C ODS El resultado ser el siguiente CODAA IMPC 10 9880 10 10860 10 10860 35 11820 5 0 7410 IMPV 11860 12830 12830 13780 7890 COL-4 18,03 15,32 15,32 12,92 4,82 Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 13

Obsrvese el uso del predicado ORDER BY pata ordenar la informacin por un campo o c ampos determinados Como vemos hemos seleccionado las acciones vendidas por medio del campo EST para garantizarnos que al efectuar los clculos el campo importe de venta contuviese valores distintos de cero pero tambin podramos usar el predicado IS (NOT ) NULL. SELECT CODAA, IMPC, IMPV, ((( IMPV IMPC) * 0.90 ) / IMPC + CC) * 100 FROM MOVIA WHERE IMPV IS NOT NULL ORDER BY CODA EL resultado seria el mism o. Ahora tenemos que seleccionar las acciones vendidas entre el 20/04/2002 y el 25/04/2002 y calcular su rentabilidad. SELECT CODAA, IMPC, IMPV, ((( IMPV IMPC) * 0.90 ) / IMPC + CC) * 100 FROM MOVIA WHERE IMPV IS NOT NULL AND FECT BETWEEN 2 0020420 AND 20020425 ORDER BY CODA El resultado es el siguiente: CODAA 10 IMPC IMPV COL-4 9880 11860 18,03 Con el predicado (NOT) BETWEEN podemos realizar una seleccin entre rangos de un c ampo numrico. Aclaremos este concepto con un ejemplo. Nos piden Seleccionar todos los movimientos de la tabla que no estn comprendidos entre las siguientes fechas : 28/04/2002 Y 05/05/2002 SELECT CODAA, IMPC, IMPV, CC, CV FROM MOVIA WHERE FECT NOT BETWEEN 20020428 AND 20020505 ORDER BY IMPC Obtendremos luego de ejecutar l a sentencia la siguiente informacin: Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 14

CODAA 20 70 10 IMPC 5935 8920 9880 CC 65 80 11860 120 IMPV CV 140 Recordemos la tabla ACCION y supongamos que queremos seleccionar todas aquellos registros cuyo nombre de accin comiencen con BB CODAT 10 15 45 70 25 35 20 30 50 40 CODST 10 10 30 10 10 30 20 20 20 10 DESAT BBVA TELECOMUNICACIONES RENTA 4 TEC NOLOGIA BANKPYME MULTISALUD BCH INTERNET CARMINAGNAC TECHNOLOGIES BBL INVT. FOOD & DEVE BAWESTO SECTOR CONSUMO FONDOESPACE FINANCIERO FRAMLINGTON FINANCIAL FINS BURY TECHNOLOGY TR PAIS ES ES ES ES FR BL ES ES UK UK SELECT * FROM ACCION WHERE DESAT LIKE BB% ORDER BY DESA El resultado de aplicar el predicado ( NOT ) LIKE Ser el siguiente CODA CODS DESA 35 30 BBL INVT. FOOD & DEVE 10 10 BBVA TELECOMUNICACIONES PAIS BL ES Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 15

Seleccionar todos los nombres de acciones que contengan TEC dentro del campo DES A SELECT * FROM ACCION WHERE DESAT LIKE %TEC% ORDER BY DESAT CODAT CODST DESAT 10 10 BBVA TELECOMUNICACIONES 25 10 CARMINAGNAC TECHNOLOGIES 4 0 10 FINSBURY TECHNOLOGY TR 15 10 RENTA 4 TECNOLOGIA PAIS ES FR UK ES Ahora queremos visualizar las acciones cuyo nombre finalice en ES Ordenada por n ombre SELECT * FROM ACCION WHERE DESAT LIKE %ES ORDER BY DESAT CODAT CODST DESAT P AIS 10 10 BBVA TELECOMUNICACIONES ES 25 10 CARMINAGNAC FR TECHNOLOGIES Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 16

Funciones Las funciones SQL nos permiten realizar operaciones con datos contenid os en las tablas. Funcin LENGHT Con esta funcin podemos conocer la longitud de los datos contenidos en un determinado campo. Queremos visualizar aquellos nombre d e acciones que tengan 12 caracteres CODAT 10 15 45 70 25 35 20 30 50 40 CODST 10 10 30 10 10 30 20 20 20 10 DESAT BBVA TELECOMUNICACIONES RENTA 4 TECNOLOGIA BAN KPYME MULTISALUD BCH INTERNET CARMINAGNAC TECHNOLOGIES BBL INVT. FOOD & DEVE BAW ESTO SECTOR CONSUMO FONDOESPACE FINANCIERO FRAMLINGTON FINANCIAL FINSBURY TECHNO LOGY TR PAIS ES ES ES ES FR BL ES ES UK UK SELECT DESAT FROM ACCION WHERE LENGHT (DESAT) = 12 En resultado ser el siguiente CODAT CODST DESAT 70 10 BCH INTERNET PAIS ES Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 17

Ahora queremos visualizar aquellos nombres de acciones que tengan mas de 19 cara cteres SELECT DESAT FROM ACCION WHERE LENGHT(DESA) > 19 ORDER BY DESAT Obtendremos la s iguiente lista CODAT CODST DESAT 10 10 BBVA TELECOMUNICACIONES 25 10 CARMINAGNAC TECHNOLOGIES 35 30 BBL INVT. FOOD & DEVE 20 20 BAWESTO SECTOR CONSUMO 30 20 FON DOESPACE FINANCIERO 50 20 FRAMLINGTON FINANCIAL 40 10 FINSBURY TECHNOLOGY TR FUN CION SUBSTR Al aplicar esta funcin a un campo alfanumrico obtendremos una subcaden a del mismo cuyo comienzo y longitud debemos definir en los argumentos de la fun cin: Queremos visualizar el campo DESA a partir del tercer carcter y con una longi tud de siete caracteres, entonces nuestra bsqueda se expresara de la siguiente fo rma PAIS ES FR BL ES ES UK UK SELECT CODAT, SUBSTR ( DESAT , 3 , 7 ) FROM ACCION Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 18

CODAT 10 25 35 20 30 50 40 DESAT VA TELE RMINAGN L INVT. WESTO S NDOESP AMLING FINSBURY TECHNOLOGY TR Ahora necesitamos visualizar el campo DESA en sus primeros 10 caracteres de aque llos nombres que tengan mas de 15 caracteres. SELECT CODAT, SUBSTR( DESAT, 1, 10 ) WHERE LENGHT ( DESAT) > 15 ORDER BY DESAT CODAT 20 35 10 25 40 30 50 DESAT BAWESTO SE BBL INVT. FO BBVA TELEC CARMINAGNA FINSBURY T FONDOESPAC FRAMLI NGTO Funcin SUM Con esta funcin podemos sumar los campos numricos dentro de una tabla. Supongamos que necesitamos saber Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 19

SELECT SUM (IMPV), SUM(IMPC), SUM(CV), SUM(CC), ( SUM (IMPV) SUM(IMPC) FROM MOVI A WHERE EST = V CODAA 10 50 10 70 35 45 10 20 70 20 CODSS 10 20 10 10 30 30 10 20 10 20 FECT PC U 20020424 10 20020428 15 20020428 11 20020428 8 20020428 12 20020428 9 20020505 11 20020505 6 20020510 9 20020510 6 CANC 1000 500 1000 3000 1000 1000 1000 2000 1000 1000 IMPC 9880 7410 10860 23730 11820 8860 10860 11870 8920 5935 PVU 12 16 13 14 13 CANV 1000 500 1000 1000 1000 IMPV 11860 7890 12830 13780 12830 CC 120 90 140 270 180 140 140 130 80 65 CV EST 140 V 110 V 170 V C 220 V C 170 V C C C Luego de ejecutar la sentencia visualizaremos en nuestra pantalla la siguiente i nformacin COL-1 59860 COL-2 50830 COL-3 810 COL-4 670 COL-5 8360 Funcin MAX Nos permite conocer el valor mximo de un campo numrico dentro de una tab la Supongamos que queremos conocer los mximos de importe de compra, importe de venta , comisin de compra y comisin de venta, entonces nuestra sentencia SQL ser: Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 20

SELECT MAX(IMPC) , MAX( IMPV) , MAX (CC) , MAX(CV) FROM MOVIA WHERE EST=V COL-1 11860 COL-2 13780 COL-3 180 COL-4 220 Funcin MIN Nos permite conocer el valor minimo de un campo numrico dentro de una t abla Supongamos que queremos conocer los valores mininos de importe de compra , importe de venta, comisin de compra y comisin de venta, de las acciones vendidas, entonces nuestra sentencia SQL ser: SELECT MIN(IMPC) , MIN( IMPV) , MIN (CC) , MIN(CV) FROM MOVIA WHERE EST=V COL-1 7410 COL-2 7890 COL-3 90 COL-4 110 Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 21

Funcin AVG Nos permite conocer el valor promedio de un campo numrico dentro de una tabla Supongamos que queremos conocer los valores promedio de importe de compra , importe de venta, comisin de compra y comisin de venta, entonces nuestra senten cia SQL ser: SELECT AVG(IMPC) , AVG( IMPV) , AVG (CC) , AVG(CV) FROM MOVIA WHERE EST=V COL-1 10166 COL-2 11838 COL-3 134 COL-4 162 Funcin COUNT Nos permite conocer la cantidad de registros que tiene una tabla o u n subconjunto de la misma Por ejemplo deseamos conocer cuantos registros de acci ones sin vender tenemos en nuestra tabla MOVIA SELECT COUNT (*) FROM MOVIA WHERE EST <> V Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 22

Ahora deseamos calcular el promedio de comisiones de compras sin usar la funcin A VG entonces nuestra sentencia SQL ser : SELECT SUM (CC) , COUNT (*), CC/COUNT(*) FROM MOVIA WHERE EST <> C COL-1 670 COL-2 5 COL-3 134 Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 23

Agrupamientos El SQL nos permite formar grupos de filas segn un determinado criterio por interm edio del predicado GROUP BY. Deseamos conocer el importe promedio de compras y e l importe promedio de ventas para cada sector de acciones vendidas segn los datos de nuestra tabla CODAA CODS 10 10 50 20 10 10 70 10 35 30 45 30 10 10 20 20 70 10 20 20 FECT 20020424 20020428 20020428 20020428 20020428 20020428 20020505 20020505 200 20510 20020510 PCU 10 15 11 8 12 9 11 6 9 6 CANC 1000 500 1000 3000 1000 1000 1000 2000 1000 1000 IMPC 9880 7410 10860 23730 11820 8860 10860 11870 8920 5935 PVU 12 16 13 14 13 CANV 1000 500 1000 1000 1000 IMPV 11860 7890 12830 13780 12830 CC 120 90 140 270 180 140 140 130 80 65 CV EST 140 V 110 V 170 V C 220 V C 170 V C C C SELECT CODAA , AVG (IMPC), AVG (IMPV) FROM MOVIA WHERE EST = V GROUP BY CODAA ORDE R BY CODAA Observaremos en pantalla la siguiente informacin CODAA 10 35 50 Col-1 Col-2 10533,3333 12506,6667 11820 13780 7410 7890 Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 24

Cuando agrupamos muchas veces no deseamos considerar determinados grupos por lo que para excluirlos utilizaremos el predicado HAVING SELECT CODAA , AVG (IMPC), AVG (IMPV) FROM MOVIA WHERE EST = V GROUP BY CODAA HAVI NG AVG (IMPC) > 8000 ORDER BY COD El resultado sera CODAA 10 35 Col-1 Col-2 10533,3333 12506,6667 11820 13780 Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 25

Consultas sobre mas de una tabla Hasta el momento hemos trabajado con tablas en forma independiente pero supongamos que queremos visualizar la informacin del mov imiento de acciones ( MOVIA ) y que nos aparezca en pantalla el nombre de la emp resa a la cual pertenece la accin ( ACCION ) . Para ello SQL nos brinda una maner a de realizar un JOIN entre bases de datos relacinales. SELECT CODAA, DESAT , IMPC , IMPV , FROM ACCION, MOVIA WHERE CODAT = CODAA ORDER BY DESA CODAA 45 20 20 35 10 10 10 70 70 50 DESA BANKPYME MULTISALUD BAWESTO SECTOR CONSUMO BAWESTO SECTOR CONSUMO BBL INVT. FOOD & DEVE BBVA TELECOMUNICACIONES BBVA TELECOMUNICACIONES BBVA TELECOMUNICACIONES BCH INTERNET BCH INTERNET FRAMLINGTON FINANCIAL IMPC 8860 11870 5935 11820 9880 10860 10860 23730 8920 7410 IMPV 13780 11860 12830 12830 7890 Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 26

Actualizacin En muchas ocasiones deberemos actualizar las tablas ya sea un regist ro o varios registros. El lenguaje SQL nos brinda la sentencia UPDATE la que per mite actualizar el contenido de los campos de un registro existente. CODAA CODS 10 10 50 20 10 10 70 10 35 30 45 30 10 10 20 20 70 10 20 20 FECT 2002 0424 20020428 20020428 20020428 20020428 20020428 20020505 20020505 20020510 200 20510 PCU 10 15 11 8 12 9 11 6 9 6 CANC 1000 500 1000 3000 1000 1000 1000 2000 1 000 1000 IMPC 9880 7410 10860 23730 11820 8860 10860 11870 8920 5935 PVU 12 16 1 3 14 13 CANV 1000 500 1000 1000 1000 IMPV 11860 7890 12830 13780 12830 CC 120 90 140 270 180 140 140 130 80 65 CV EST 140 V 110 V 170 V C 220 V C 170 V C C C Deseamos actualizar la informacin de la acciones cdigo 20 grabando los datos corre spondiente a importe unitario de venta , importe de venta, comisin de venta , can tidad vendida y estado igual a V UPDATE MOVIA SET PVU=8 , CV = 150, IMPV= 15850, E ST=V, CANV=2000 WHERE CODAA=20 AND FECT = 20020505 CODAA CODS 10 10 50 20 10 10 70 10 35 30 45 30 10 10 20 20 70 10 20 20 FECT 20020424 20020428 20020428 20020428 20020428 20020428 20020505 20020505 200 20510 20020510 PCU 10 15 11 8 12 9 11 6 9 6 CANC 1000 500 1000 3000 1000 1000 1000 2000 1000 1000 IMPC 9880 7410 10860 23730 11820 8860 10860 11870 8920 5935 PVU 12 16 13 14 13 8 CANV 1000 500 1000 1000 1000 2000 IMPV 11860 7890 12830 13780 12830 15850 CC 120 90 140 270 180 140 140 130 80 65 CV EST 140 V 110 V 170 V C 220 V C 170 V 150 V C C Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 27

Ahora debemos actualizar el registro cuya fecha de transaccin es 10/05/2002 UPDAT E MOVIA SET PVU=8 , CV = 80, IMPV= 7920, EST=V, CANV=1000 WHERE CODAA=20 AND FECT = 20020515 CODAA 10 50 10 70 35 45 10 20 70 20 COD S 10 20 10 10 30 30 10 20 10 20 FECT PCU 20020424 20020428 20020428 20020428 20020428 20020428 20020505 20020505 2002051 0 20020510 10 15 11 8 12 9 11 6 9 6 CANC 1000 500 1000 3000 1000 1000 1000 2000 1000 1000 IMPC PVU 9880 7410 10860 23730 11820 8860 10860 11870 8920 5935 12 16 13 14 13 8 8 CANV IMPV CC CV EST 140 V 110 V 170 V C 220 V C 170 V 150 V C 80 V 1000 11860 120 500 7890 90 1000 12830 140 270 1000 13780 180 140 1000 12830 140 2000 15850 130 80 1000 7920 65 Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 28

Borrar La operacin de borrar uno , varios o todos los registros de una tabla esta contemplada por la sentencia DELETE. Supongamos que queremos borrar de nuestra tabla ACCION aquellas cuyo cdigo de pas sea UK CODA 10 15 45 70 25 35 20 30 50 40 CODS 10 10 30 10 10 30 20 20 20 10 DESA BBVA TELECOMUNICACIONES RENTA 4 TECNOLOG IA BANKPYME MULTISALUD BCH INTERNET CARMINAGNAC TECHNOLOGIES BBL INVT. FOOD & DE VE BAWESTO SECTOR CONSUMO FONDOESPACE FINANCIERO FRAMLINGTON FINANCIAL FINSBURY TECHNOLOGY TR PAIS ES ES ES ES FR BL ES ES UK UK DELETE FROM ACCION WHERE PAIS = UK El resultado luego de la ejecucin de esta senten cia es la siguiente CODA 10 15 45 70 25 35 20 30 CODS 10 10 30 10 10 30 20 20 DESA BBVA TELECOMUNICACIONES RENTA 4 TECNOLOGIA BANKPYME MULTISALUD BCH INTERNET CARMINAGNAC TECHNOLOGIES BBL INVT. FOOD & DEVE BAWESTO SECTOR CONSUMO FONDOESPA CE FINANCIERO PAIS ES ES ES ES FR BL ES ES Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 29

Ahora supongamos que nos piden borrar todos los movimientos de acciones vendidas cuya fecha de transaccin es anterior a mayo del 2002. CODAA 10 50 10 70 35 45 10 20 70 20 COD SS 10 20 10 10 30 30 10 20 10 20 FECT PC U 20020424 20020428 20020428 20020428 20020428 20020428 20020505 20020505 200205 10 20020510 10 15 11 8 12 9 11 6 9 6 CANC 1000 500 1000 3000 1000 1000 1000 2000 1000 1000 IMPC PVU 9880 7410 10860 23730 11820 8860 10860 11870 8920 5935 12 16 13 14 13 CANV IMPV CC CV EST 140 V 110 V 170 V C 220 V C 170 V C C C 1000 11860 120 500 7890 90 1000 12830 140 270 1000 13780 180 140 1000 12830 140 130 80 65 DELETE FROM MOVIA WHERE EST = V AND FECT < 20020501 El resultado que obtenemos es el siguiente CODAA 70 45 10 20 70 20 COD SS 10 30 10 20 10 20 FECT PCU 20020428 20020428 2002 0505 20020505 20020510 20020510 8 9 11 6 9 6 CANC IMPC PVU CANV IMPV CC CV EST 3000 23730 1000 8860 1000 10860 2000 11870 1000 8920 1000 5935 13 270 C 140 C 1000 12830 140 170 V 130 C 80 C 65 C Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 30

Insertar La manera de insertar un registro sentencia INSERT INTO Nos haba quedado la ego de realizar la ultima sentencia DELETE CODAA 70 45 10 20 70 20 COD SS 10 30 10 20 0505 20020505 20020510 20020510 8 9 11 6 9

en una tabla esta contemplada por la tabla MOVIA con los siguientes datos lu 10 20 FECT PCU 20020428 20020428 2002 6 CANC IMPC PVU CANV IMPV CC CV EST

3000 23730 1000 8860 1000 10860 2000 11870 1000 8920 1000 5935 13 270 C 140 C 1000 12830 140 170 V 130 C 80 C 65 C Deseamos agregar los datos correspondientes a una compra de acciones del 10/05/2 002. INSERT INTO MOVIA VALUES ( 70, 20, 20020610, 10, 1000, 9800, 0, 0, 0, 200, 0, C ) En resultado es el siguiente: CODAA 70 45 10 20 70 20 70 COD S 10 30 10 20 10 20 20 FECT PCU 20020428 20020428 20020505 20020505 20020510 20020510 20020610 8 9 11 6 9 6 10 CANC IMPC PVU CANV IMPV CC CV EST 3000 23730 1000 8860 1000 10860 2000 11870 1000 8920 1000 5935 1000 9800 13 270 C 140 C 1000 12830 140 170 V 130 C 80 C 65 C 200 C Autor: DANIEL HUGO ENRIQUEZ LEIVAS Publicado en http://www.recursos-as400.com con la autorizacin del autor 31

Você também pode gostar