Está en la página 1de 104

Introducci n a SQL

Introduccin a SQL

Pg . - 1

Introduccin a SQL

Pg . - 2

Trminos y Conceptos Bsicos - Objetivos


Al concluir esta seccin estar capacitado para: Definir SQL Definir un sistema manejador de bases de datos relacional Listar y definir los trminos de una base de datos Listar las tablas que estn en la base de datos IMCLASS Reconocer como se insertan y extraen datos desde una base de datos.

Objetivos

En esta seccin aprender los conceptos bsicos de una base de datos, y sern definidos los trminos usados para referenciar entidades. Tambin se incluye una breve explicacin del sistema manejador de bases de datos relacionales y como se insertan y extraen datos en una base de datos.

Introduccin a SQL

Pg . - 3

SQL
Structured Query Language (Lenguaje de consulta estructurado)

Es una forma estndar de consulta de datos especficos Es una forma de extraer y manipular datos de una base de datos Usado para todas las funciones de bases de datos, incluyendo administracin, creacin de esquemas y datos recuperables Puede ser usado de forma implcita dentro de una aplicacin

Introduccin a SQL

Pg . - 4

Base de Datos
Definicin: Un cuerpo o conjunto de datos en el cual existen relaciones entre sus elementos Ejemplo: SURCE97 Mov_Est

SURCE97 Proyecto

Est_fin

Oficio

Ofi_Pro

Introduccin a SQL

Pg . - 5

Sistema Manejador De Base De Datos (DBMS)


Definicin: Es un programa que permite la definicin de estructuras de bases de datos, el almacenamiento y la recuperacin de datos de estas estructuras.

Administrador

BD
Usuarios

SQL anywhere

SURCE97

Servidor
Tabla Conjunto de renglones o lista de valores Anlogo a un archivo

Columna

Anlogo a un campo de un registro Cada columna en un rengln dado tiene un valor nico de dato Cada columna es de un tipo de dato nico Anlogo a un registro de un archivo Todos los renglones de una tabla tienen el mismo conjunto de columnas Una o ms columnas cuyo contenido es nico dentro de la tabla y puede ser usado para identificar los renglones de otra tabla. Una o ms columnas de una tabla que existe como llave primaria en otra tabla. Los nombres de las columnas de las llaves forneas no tienen que ser iguales a los nombres de las columnas de las llaves primarias.

Rengln

Llave Primaria

Llave Fornea

Introduccin a SQL

Pg . - 6

Tablas
Nombres de Columnas

Ent_fed
22

Proyec
97/000001 97/000002 97/000003 01 02 01

Munici

Eje_fis
1997 1997 1997

Renglones

22 22

Columnas

Ejemplo: La tabla PROYECTO contiene informacin de los proyectos

Llaves Primarias
Cada rengln puede ser accesado por una llave primaria nica En todos los renglones, algunas columnas o grupos de columnas debern identificar nicamente este rengln.

Introduccin a SQL

Pg . - 7

Tabla Proyecto
Llave Primaria

Ent_fed
22 22 22

Proyec
97/000001 97/000002 97/000003 01 02 01

Munici

Eje_fis
1997 1997 1997

La concatenacin de Ent_fed + Proyec es un identificador nico para cada producto, por eso es una llave primaria.

Visin General: Crear una Tabla


1. El Diseador de una base de datos crea las tablas create table PROYECTO (ent_fed char(2) not null, proyec char(12) not null, munici char(3) not null, progra char(2) null) 2. En una tabla que esta creada, se pueden insertar datos insert PROYEC (26,97/000002,02,SS)

Introduccin a SQL

Pg . - 8

Visin General: Extraer datos de una Tabla


Extraer datos de una tabla select * from PROYECTO Nombres Convencionales Forma corta nombre_tabla.nombre_columna Forma completa base_datos.propietario.nombre_tabla.nombre_columna Ejemplo: PROYECTO.name SURCE97.dba.PROYECTO.munici SURCE97.admdeleg.PROYMIO.nom_com

Nombres convencionales

Defaults El valor default para el propietario es el de la base actual El valor default para la base de datos es el de la base de datos actual Usar el dba Propietario de la base de datos Utilice dba si el propietario de la tabla es tambin el propietario de la base de datos.

Introduccin a SQL

Pg . - 9

Sumario
Structured Query Language (SQL) -es una forma estndar para

obtener y manipular datos de una base de datos. entre sus elementos.

Base de datos - Un cuerpo de datos en el cual existe una relacin Sistema manejador de base de datos - Programa que permite la

definicin de estructuras de bases de datos, el almacenamiento y la recuperacin de estas estructuras.

Trminos - Tabla, columna, rengln, llave primaria. Nombres convencionales - BD.propietario.nom_tabla.nom_columna

Introduccin a SQL

Pg . - 10

Joins y Subconsultas - Objetivos


Al concluir esta seccin estar capacitado para: Elaborar consultas y subconsultas en base a una o varias operaciones join Realizar subconsultas con joins externos Extraer un conjunto de renglones de la misma tabla con ms de una subconsulta Renombrar el resultado de una subconsulta

Introduccin a SQL

Pg . - 11

La clusula KEY JOIN


KEY JOIN indica una operacin join Una consulta puede ser simplificada en su estructura al utilizar un KEY JOIN Ejemplo (sin utlizar KEY JOIN) select proyec, nom_ofi from PROYECTO, MUNICI where PROYECTO.ent_fed = MUNICI.ent_fed and PROYECTO.munici = MUNICI.munici Ejemplo (utlizando KEY JOIN) select proyec, nom_ofi from PROYECTO key join MUNICI

Resultado sin KEY JOIN


proyec 97/000029 97/000030 97/000031 97/000063 97/000064 97/000065 97/001905 97/000069 97/000070 97/000071 97/000072 97/000066 97/000067 97/000068 97/000006 munici Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada

Resultado con KEY JOIN


proyec 97/000029 97/000030 97/000031 97/000063 97/000064 97/000065 97/001905 97/000069 97/000070 97/000071 97/000072 97/000066 97/000067 97/000068 97/000006 munici Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada Ensenada

Introduccin a SQL

Pg . - 12

KEY JOIN con ms de una tabla


Listar los proyectos, su tipo y el municipio al que pertenecen para el fondo 1 y el programa SB select proyec, nom_ofi, descri from PROYECTO key join MUNICI key join LINEAM where fondo = 1 and progra = 'SB' order by PROYECTO.munici

Resultado
proyec 97/000355 97/000356 97/000351 97/000352 97/000358 97/000357 97/000353 97/000354 97/0307 97/000359 97/000360 nom_ofi Ensenada Ensenada Mexicali Mexicali Tecate Tecate Tijuana Tijuana Tijuana Concejo Mpal. de playas de Rosarito Concejo Mpal. de playas de Rosarito descri Social Social Social Social Social Social Social Social Apoyo Social Social

Introduccin a SQL

Pg . - 13

KEY LEFT OUTER JOIN / KEY RIGHT OUTER JOIN


Al especificar una operacin join en una consulta puede suceder el caso que alguna de las tablas no contenga datos para establecer la relacin, esto reflejara un resultado incompleto o bien no se obtendra ningn registro Supongamos dos tablas A y B A key left outer join B El resultado incluye los renglones de A que no esten contenidos en B y los que adems cumplen la condicin de la relacin A key right outer join B El resultado incluye los renglones de B que no esten contenidos en A y los que adems cumplen la condicin de la relacin

Ejemplos
select PRO_ESP.proyec, CAR_GEN.descri from PRO_ESP key left outer join CAR_GEN where PRO_ESP.munici = 1 order by PRO_ESP.proyec
proyec 00053 97/000006 97/000007 97/000008 97/000009 97/000029 97/000030 97/000031 97/000063 97/000064 97/000065 97/000066 97/000067 descri (NULL) (NULL) CONSTRUCCION DE 4 AULAS TIPO REGIONAL EN E.P.E.LA ESPERANZA (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) (NULL)

select PRO_ESP.proyec, CAR_GEN.descri from PRO_ESP key join CAR_GEN where PRO_ESP.munici = 1 order by PRO_ESP.proyec
proyec 97/000007 sgc01 descri CONSTRUCCION DE 4 AULAS TIPO REGIONAL EN E.P.E.LA ESPERANZA Pavimentacin de Av. Prueba mediante maquinaria de plancha al calor.

Introduccin a SQL

Pg . - 14

KEY LEFT OUTER JOIN / KEY RIGHT OUTER JOIN (Continuacin)


Los valores que se desean desplegar en el resultado de la consulta y que no se encuentran en alguna de las tablas utilizadas para la operacin join aparecen como NULL Otra forma de representar el KEY LEFT/RIGHT OUTER JOIN es utlizando en el WHERE las columnas que establezcan el join WHERE A.columna1 *= B.columna1 (KEY LEFT OUTER JOIN) AND A.columna2 *= B.columna2 (KEY LEFT OUTER JOIN) WHERE A.columna1 =* B.columna1 (KEY RIGHT OUTER JOIN) AND A.columna2 =* B.columna2 (KEY RIGHT OUTER JOIN)

Introduccin a SQL

Pg . - 15

Subconsultas con joins externos


En una subconsulta es posible definir operaciones joins para obtener un resultado (columna o funcin agregada) que forme parte de la lista de columnas de la consulta principal Ejemplo Lista los proyectos del municipio 1 y la descripcin del fondo, programa y subprograma select P.proyec, P.fondo, (select F.nombre from FONDO F where P.eje_fis = F.eje_fis and P.fondo = F.fondo), P.progra, (select PR.descri from PROGRAMA PR where P.eje_fis = PR.eje_fis and P.fondo = PR.fondo and P.progra = PR.progra), P.subpro, (select S.descri from SUBPROG S where P.eje_fis = S.eje_fis and P.fondo = S.fondo and P.progra = S.progra and P.subpro = S.subpro) from PROYECTO P where P.munici = 1 Resultado
proyec 97/000029 97/000030 97/000031 97/000063 97/000064 97/000065 97/001905 97/000069 97/000070 97/000071 97/000072 97/000066 97/000067 fondo 2 2 2 2 2 2 2 2 2 2 2 2 2 nombre Fondo para Empleo Fondo para Empleo Fondo para Empleo Fondo para Empleo Fondo para Empleo Fondo para Empleo Fondo para Empleo Fondo para Empleo Fondo para Empleo Fondo para Empleo Fondo para Empleo Fondo para Empleo Fondo para el Desarrollo Regional y el el Desarrollo Regional y el el Desarrollo Regional y el el Desarrollo Regional y el el Desarrollo Regional y el el Desarrollo Regional y el el Desarrollo Regional y el el Desarrollo Regional y el el Desarrollo Regional y el el Desarrollo Regional y el el Desarrollo Regional y el el Desarrollo Regional y el el Desarrollo Regional y el progra SG SG SG SD SD SD SS SI SI SI SI SI SI descri ELECTRIFICACION ELECTRIFICACION ELECTRIFICACION ALCANTARILLADO ALCANTARILLADO ALCANTARILLADO ASISTENCIA SOCIAL Y SERVICIOS COMUNITARIOS VIALIDADES URBANAS VIALIDADES URBANAS VIALIDADES URBANAS VIALIDADES URBANAS VIALIDADES URBANAS VIALIDADES URBANAS subpro 01 01 01 03 03 03 01 01 01 01 01 01 01 descri Urbana Urbana Urbana Construccin Construccin Construccin Nutricin, Alimentacin y Salud Reconstruccin Reconstruccin Reconstruccin Reconstruccin Reconstruccin Reconstruccin

Introduccin a SQL

Pg . - 16

97/000068 97/000006 97/000007 97/000008 97/000009

2 2 2 2 2

Empleo Fondo para Empleo Fondo para Empleo Fondo para Empleo Fondo para Empleo Fondo para Empleo

el Desarrollo Regional y el el Desarrollo Regional y el el Desarrollo Regional y el el Desarrollo Regional y el el Desarrollo Regional y el

SI SJ SJ SJ SJ

VIALIDADES URBANAS INFRAESTRUCTURA EDUCATIVA INFRAESTRUCTURA EDUCATIVA INFRAESTRUCTURA EDUCATIVA INFRAESTRUCTURA EDUCATIVA

01 02 02 02 02

Reconstruccin Construccin Construccin Construccin Construccin

Subconsultas con joins externos (continuacin)


Las subconsultas con joins externos que no cumplen la condicin de relacin se presentan con valor NULL Una subconsulta con un join externo solo puede regresar como resultado un valor (columna, funcin agregada) de un rengln Ejemplo Lista los proyectos especficos y la descripcin del municipio y localidad a la que pertenecen select P.proyec, (select M.nom_ofi from MUNICI M where P.ent_fed = M.ent_fed and P.munici = M.munici), (select L.nombre from LOCALI L where P.ent_fed = L.ent_fed and P.munici = L.munici and P.locali = L.locali) from PRO_ESP P

Resultado
proyec 97/000055 97/000056 97/000076 97/000029 97/000030 97/000031 97/000048 97/000049 97/000050 97/000043 97/000044 97/000045 97/000077 97/000078 97/000046 97/000047 97/000057 97/000058 97/000063 97/000064 nom_ofi Tijuana Tijuana Tecate Ensenada Ensenada Ensenada Mexicali Mexicali Mexicali Tijuana Tijuana Tijuana Tecate Tecate Tijuana Tijuana Tijuana Tijuana Ensenada Ensenada nombre TIJUANA TIJUANA LAZARO CARDENAS, COL. POPULAR 89, FRACC POPULAR 89, FRACC POPULAR 89, FRACC PROGRESO,COL. PROGRESO,COL. PROGRESO,COL. CUMBRES, COL. TIJUANA LAZARO CARDENAS, COL. LAZARO CARDENAS, COL. LAZARO CARDENAS, COL. CUMBRES, COL. (NULL) (NULL) (NULL) RUIZ CORTINES RUIZ CORTINES

Introduccin a SQL

Pg . - 17

97/000065 97/000051 97/000052 97/000053

Ensenada Tijuana Tijuana Tijuana

RUIZ CORTINES MURUA, FRACC. LOMAS TAURINAS,COL. (NULL)

Subconsultas con joins externos para una misma tabla


Una subconsulta con joins externos es muy til cuando se requiere obtener un conjunto de valores que estan contenidos en la misma tabla y no pueden extraerse con una sola condicin dentro de la consulta Al resultado de una subconsulta se le puede asignar un nombre que sirva como un identificador ms preciso, esto utilizando la sentencia AS Ejemplo Listar los nombres de los proyectos para el municipio 2 y su estructura financiera federal y estatal para cada uno en la fase de aprobacin select P.proyec, (select E.can_act from EST_FIN E where P.ent_fed = E.ent_fed and P.proyec = E.proyec and E.fase_pre = 3 and E.tipo_inv = 1) as inv_federal, (select E.can_act from EST_FIN E where P.ent_fed = E.ent_fed and P.proyec = E.proyec and E.fase_pre = 3 and E.tipo_inv = 2) as inv_estatal from PROYECTO P where P.munici = 2 Resultado
proyec 97/000048 97/000049 97/000050 97/000472 97/000119 97/000033 97/000034 97/000035 97/000036 97/000037 97/000038 97/000039 97/000040 97/000041 inv_federal inv_estatal 736607.0000 245536.0000 9375.0000 9375.0000 (NULL) (NULL) 97500.0000 32500.0000 (NULL) (NULL) 679330.0000 226443.0000 8646.0000 8646.0000 (NULL) (NULL) 538978.0000 179659.0000 1502771.0000 500924.0000 19126.0000 19126.0000 (NULL) (NULL) 262319.0000 87440.0000 452413.0000 150804.0000

Introduccin a SQL

Pg . - 18

Sumario
La clusula KEY JOIN permite simplificar la operacin join en una

consulta

KEY LEFT/RIGHT OUTER JOIN son empleados cuando se requieren extraer renglones que no cumplan con la operacin join
Otra forma de representar el KEY LEFT/RIGHT OUTER JOIN es

(*= / =*) en el WHERE de las columnas a relacionar

Las subconsultas con joins externos se consideran como columnas a extraer con un solo valor dentro de la consulta principal
El resultado de una subconsulta puede renombrarse por medio de la

sentencia AS

Introduccin a SQL

Pg . - 19

Extraer Datos I - Objetivos


Al concluir esta seccin estar capacitado para: Conectarse a la base de datos apropiada Escribir una consulta usando condiciones para restringir datos extrados Usar expresiones Booleanas en la condicin de la consulta

Objetivos

En esta seccin, aprender a usar los elementos bsicos de SQL para extraer datos desde la base de datos.

Introduccin a SQL

Pg . - 20

SQL Anywhere: Una Visin General

software de cliente

SQL anywhere

software de cliente
El software cliente es usado para accesar al Servidor de SQL Anywhere, el cual en su turno accesa a la base de datos.

Introduccin a SQL

Pg . - 21

Seleccionar una Base de Datos


Desde SQL AnyWhere se puede seleccionar la base de datos

BD BD

SQL Anywhere

SURCE

BD IMCLASS

NOMINA

Introduccin a SQL

Pg . - 22

Recuperacin Simple - select/from


Se utiliza para extraer datos de la base de datos
clusula select para ver las columnas que desee clusula from especifica la(s) tabla(s) de donde son extrados los

datos

Ejemplo (todas las columnas) * indica todas las columnas de la tabla PROYECTO Select * from PROYECTO

Sintaxis

select lista_select from lista_tabla

Resultado
ent_fed 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 . . . proyec 97/C05003 97/C05004 97/C05001 97/C07002 97/C07001 97/C13003 97/C03006 97/C16002 97/C13005 97/C13006 97/C13007 97/C13008 97/C13004 97/C13001 97/C13002 97/C05002 97/C16001 97/C05005 . . . munici 5 5 5 7 7 13 3 16 13 13 13 13 13 13 13 5 16 5 . . . eje_fis 1997 1997 1997 1997 1997 1997 1997 1997 1997 1997 1997 1997 1997 1997 1997 1997 1997 1997 . . . fondo 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 . . . progra SC SE SE SJ SK SG SE SG SG SG SG SG SG SE SD SJ SG SJ . . . subpro 01 03 02 02 02 01 02 01 01 01 01 01 02 02 02 02 02 02 . . . con_pro 00 0A 00 0A 00 0B 00 0B 0B 0B 0B 0B 0B 00 00 0C 0B 0B . . . cat_pes 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 . . . .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. ..................

Introduccin a SQL

Pg . - 23

Recuperacin Simple - (continuacin)


Ejemplo (una columna) Listar solamente la columna proyec de la tabla PROYECTO select proyec from PROYECTO

Resultado
proyec 97/C05003 97/C05004 97/C05001 97/C07002 97/C07001 97/C13003 97/C03006 97/C16002 97/C13005 97/C13006 97/C13007 97/C13008 97/C13004 97/C13001 97/C13002 97/C05002 97/C16001 97/C05005 . . .

Introduccin a SQL

Pg . - 24

Recuperacin Simple - select/from (continuacin)


Ejemplo (ms de una columna) Listar los proyectos y su municipio de la tabla PROYECTO select proyec, munici from PROYECTO

Resultado
proyec 97/C05003 97/C05004 97/C05001 97/C07002 97/C07001 97/C13003 97/C03006 97/C16002 97/C13005 97/C13006 97/C13007 97/C13008 97/C13004 97/C13001 97/C13002 97/C05002 97/C16001 97/C05005 . . . munici 5 5 5 7 7 13 3 16 13 13 13 13 13 13 13 5 16 5 . . .

Introduccin a SQL

Pg . - 25

Reordenar columnas
El orden de columnas en la seleccin ser el orden determinado de las columnas en el resultado Ejemplo Lista los municipios de los proyectos de la tabla PROYECTO select munici, proyec from PROYECTO

Resultado
munici 5 5 5 7 7 13 3 16 13 13 13 13 13 13 13 5 16 5 . . . proyec 97/C05003 97/C05004 97/C05001 97/C07002 97/C07001 97/C13003 97/C03006 97/C16002 97/C13005 97/C13006 97/C13007 97/C13008 97/C13004 97/C13001 97/C13002 97/C05002 97/C16001 97/C05005 . . .

Introduccin a SQL

Pg . - 26

Eliminar Duplicados

distinct elimina renglones duplicados en la salida Ejemplo (sin distinct) Lista los programas que se encuentran en la tabla PROYECTO select progra from PROYECTO

Ejemplo (con distinct) Lista slo una ocurrencia de cada programa de la tabla PROYECTO select distinct progra from PROYECTO

Sintaxis

select [ distinct lista_select ] from tabla

Sin utilizar distinct


progra SC SE SE SJ SK SG SE SG SG SG SG SG SG SE SD SJ SG SJ SJ . . .

Utilizando distinct
progra SC SE SJ SK SG SD UB SF SL TH TJ SH ST TF TE SS SP

Introduccin a SQL

Pg . - 27

distinct

distinct acta sobre el rengln completo Ejemplo Lista slo una ocurrencia de los programas y subprogramas de los proyectos select distinct progra, subpro from PROYECTO

select progra, subpro from PROYECTO


progra SC SE SE SJ SK SG SE SG SG SG SG SG SG SE SD SJ SG SJ SJ SJ . . . subpro 01 03 02 02 02 01 02 01 01 01 01 01 02 02 02 02 02 02 02 02 . . .

select distinct progra, subpro from PROYECTO


progra SC SE SE SJ SK SG SG SD SE UB SC SD SF UB SL SC SE TH UB SD . . . subpro 01 03 02 02 02 01 02 02 01 02 03 01 02 03 02 02 04 02 01 03 . . .

Introduccin a SQL

Pg . - 28

distinct (continuacin)
El distinct es usado para: Encontrar cada valor posible en una columna en particular Agrupar valores en categoras Ejemplo Lista cada municipio de la tabla PRO_ESP select distinct munici from PRO_ESP

Resultado
munici 16 5 13 17 7 6 2 20 15 3 4 14 10 18 19 8 998

Introduccin a SQL

Pg . - 29

Extraccin Calificada - select/from/where

La clusula where limita cuales renglones son extrados Ejemplo Lista los proyectos especficos del municipio con clave 2 select proyec, munici from PRO_ESP where munici = 2

Las condiciones de bsqueda son expresiones booleanas (verdadero, falso) aplicadas a cada rengln para determinar el resultado que deber regresar

Sintaxis

select lista_select from lista_de_tablas where condicin

Resultado
proyec 97/C02001 97/C02002 97/C02003 97/C02004 97/C02005 97/C02007 97/C02008 97/C02009 97/C02010 97/C02006 97/C02013 97/C02014 97/C02011 97/C02012 97/C02016 97/C02015 97/C02017 97/C02018 97/C02019 97/C02020 97/C02021 munici 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

Introduccin a SQL

Pg . - 30

Extraccin Calificada - select/from/where (continuacin)


Calificadores en la clusula where

Operadores de comparacin (=, >, <, >=,<=)


Rangos (between y not between) Caracteres iguales (like y not like) Valores desconocidos (is null e is not null) Listas (in y not in) Combinaciones (and, or) not niega una expresin booleana y palabras claves como like, null,

between y in

Ejemplo de NOT

select proyec, munici from PRO_ESP where munici not between 1 and 5

Resultado
proyec 97/C16002 97/C16001 97/C13009 97/C13010 97/C17001 97/C17002 97/C17003 97/C17004 97/C17005 97/C17006 97/C17008 97/C07002 97/C07001 97/C13003 97/C13005 97/C13006 97/C13007 97/C13008 97/C13004 97/C13001 . . . munici 16 16 13 13 17 17 17 17 17 17 17 7 7 13 13 13 13 13 13 13 . .3 .

Introduccin a SQL

Pg . - 31

select/from/where - Operadores de comparacin


Operador = > < >= <= != <> !> !< Significado igual mayor que menor que mayor o igual que menor o igual diferente que diferente que no es mayor que no es menor que

No es igual a menor que mayor que

<> es igual a != !< es igual a >= !> es igual a <=

Nota

Use comillas en los tipos de datos char, varchar, y datetime; por ejemplo: where proyec = 97/C16002

Introduccin a SQL

Pg . - 32

select/from/where - Operadores de Comparacin

Ejemplo (igual =) Lista los proyectos que pertenecen al programa SK select proyec, nombre from PROYECTO where progra = SS

Resultado
proyec 97/C07001 97/C19016 97/C19006 97/C03018 97/C03019 97/C14014 97/C07006 nombre SISTEMA DE PURIFICACION DE AGUA ESC. PRIM. MIGUEL HIDALGO Y COSTILLA RECONSTRUCCION DE BARDEO EN LA ESC. PRIM. LEONA VICARIO PROTECCION DE LAS VENTANAS EN 3 AULAS ESC. PRIM CUAUHTEMOC REHABILITACION CERCADO PERIMETRAL JARDIN DE NIOS NARCISO MENDOZA REHABILITACION DE CASA DEL MAESTRO Y SERVICIOS SANITARIOS ESC. PRIM. FCO. I. MADERO REHABILITACION DE ESC. PRIM. MIGUEL HIDALGO REHAB. DE ACCESO A LA ESC. SEC. FED. NO. 9 "RICARDO FLORES MAGON"

Ejemplo No igual

Busca los proyectos que no pertenezcan al programa SE select proyec, nombre from PROYECTO where progra != SE Busca los proyectos con un costo total mayor a $300,000 select * from PROYECTO where costo_tot > 300000 Busca los nombres de los proyectos que su primer letra sea menor a C select nombre from PROYECTO where nombre < C

Ejemplo Mayor que Ejemplo Menor que

Introduccin a SQL

Pg . - 33

select/from/where - Rangos
between es usado para especificar un rango inclusivo : los valores

limites son incluidos en la bsqueda

Ejemplo select num_ofi, tipo_inv, cantid from EST_OFI where cantid between 75000 and 100000
not between excluye el valor ms alto y el ms bajo que han sido

especificados

Ejemplo select num_ofi, tipo_inv, cantid from EST_OFI where cantid not between 75000 and 100000

Resultado between
num_ofi COP-DPP-F1-5-0013 COP-DPP-F1-5-0037 COP-DPP-F1-5-0012 COP-DPP-F1-5-0040 COP-DPP-F1-5-0017 COP-DPP-F1-5-0067 tipo_inv 1 1 1 1 1 1 cantid 88850.0000 80933.0000 91285.0000 82209.0000 97693.0000 82571.0000

Resultado not between


num_ofi COP-DPP-F1-5-0026 COP-DPP-F1-5-0026 COP-DPP-F1-5-0026 COP-DPP-F1-5-0036 COP-DPP-F1-5-0036 COP-DPP-F1-5-0015 COP-DPP-F1-5-0015 COP-DPP-F1-5-0044 COP-DPP-F1-5-0044 COP-DPP-F1-5-0041 . . . tipo_inv 1 1 1 1 1 1 1 1 1 1 . . . cantid 7584.0000 63441.0000 39867.0000 49068.0000 122167.0000 17068.0000 180341.0000 552427.0000 723851.0000 228116.0000 . . .

Introduccin a SQL

Pg . - 34

select/from/where - Usar Caracteres


Palabra clave like Utilizada para seleccionar renglones cuyos campos son iguales a la cadena de caracteres especificada Utilizada con datos de tipo caracter Puede usar opciones opciones % _ [] [^] significado cualquier cadena de cero o muchos caracteres cualquier carcter cualquier caracter del conjunto cualquier caracter que no este dentro del rango especificado Encerrar las opciones y las cadenas de caracteres entre comillas

Introduccin a SQL

Pg . - 35

select/from/where - Usar Caracteres (continuacin)


Ejemplo (like usando %)

Busca el nombre de los proyectos que comiencen con la letra P select proyec, nombre from PROYECTO where nombre like P%

Ejemplo (not like usando %) Busca los proyectos cuyo nombre no comience con P select proyec, nombre from PROYECTO where nombre not like P%

Resultado where nombre like P%


proyec 97/C02002 97/C02003 97/C19006 nombre PAVIMENTACION CALLE JUAREZ ENTRE 20 DE NOV. Y FCO. COSIO PAVIMENTACION DE CALLES: ABASOLO, ISMAEL ZUIGA, MORELOS Y 20 DE NOVIEMBRE PROTECCION DE LAS VENTANAS EN 3 AULAS ESC. PRIM CUAUHTEMOC

Resultado where nombre not like P%


proyec 97/C05003 97/C05004 97/C05001 97/C07002 97/C07001 97/C13003 97/C03006 97/C16002 97/C13005 97/C13006 97/C13007 97/C13008 97/C13004 97/C13001 97/C13002 97/C05002 . . . nombre REHAB. DEL SISTEMA DE AGUA POTABLE ( RED DE DISTRIBUCION ) CONSTRUCCION DE GUARNICIONES CONSTRUCCION DE EMPEDRADOS CONSTRUCCION AULA PREESCOLAR CONCEPCION JAIME ESPINOZA COL. EL CARRIZAL SISTEMA DE PURIFICACION DE AGUA ESC. PRIM. MIGUEL HIDALGO Y COSTILLA AMPLIACION RED ELECTRICA BARRIO DE ARRIBA EMPEDRADO DE CALLES AMPLIACION RED ELECTRICA COL. EL TACOTE AMPLIACION RED ELECTRICA BARRIO DE ENMEDIO AMPLIACION RED ELECTRICA COL. BUENOS AIRES AMPLIACION RED ELECTRICA BARRIO DE ABAJO AMPLIACION RED ELECTRICA COL. PROGRESO AMPLIACION RED ELECTRICA COL. NUEVA EMPEDRADO CALLES COL. LAZARO CARDENAS AMPLIACION ALCANTARILLADO SANITARIO COL. BUENOS AIRES CONST. DE CERCO PERIMETRAL ESC. TELESEC. VICENTE GUERRERO . . .

Introduccin a SQL

Pg . - 36

select/from/where - Usar Caracteres (continuacin)


Ejemplo (conjunto de valores) Busca el nombre de los proyectos que comiencen con las letras B, D o P select nombre from PROYECTO where nombre like [BDP]% Ejemplo (rango de caracteres) Busca los proyectos cuyo nombre comience con cualquiera de las letras del rango F a P select nombre from PROYECTO where nombre like [F-P]%

Resultado where nombre like [BDP]%


nombre
PAVIMENTACION CALLE JUAREZ ENTRE 20 DE NOV. Y FCO. COSIO PAVIMENTACION DE CALLES: ABASOLO, ISMAEL ZUIGA, MORELOS Y 20 DE NOVIEMBRE DRENAJE PLUVIAL EN UNIDAD DEPORTIVA DESPIEDRE AGRICOLA CON MAQUINARIA BALASTREO DE CALLES COL. SAN RAFAEL BALASTREO DE CAMINO SACACOSECHAS PTA. AZUL- LADRILLERAS PROTECCION DE LAS VENTANAS EN 3 AULAS ESC. PRIM CUAUHTEMOC

Resultado where nombre like [F-P]%


nombre
INTRODUCCION DEL SISTEMA DE AGUA POTABLE COL. LOS LIRIOS INTRODUCCION DEL SISTEMA DE AGUA POTABLE COL. LOS COLOMOS INTRODUCCION DEL SISTEMA DE AGUA POTABLE COL. NUEVAS PALOMAS INTRODUCION DEL SISTEMA DE AGUA POTABLE COL. BENITO JUAREZ OTE. PAVIMENTACION CALLE JUAREZ ENTRE 20 DE NOV. Y FCO. COSIO PAVIMENTACION DE CALLES: ABASOLO, ISMAEL ZUIGA, MORELOS Y 20 DE NOVIEMBRE NIVELACION Y BALASTREO DE CALLES EN COL. LAZARO CARDENAS IMPLANTACION DE PASTO Y CERCO PERIMETRAL DE 100 HAS. PROTECCION DE LAS VENTANAS EN 3 AULAS ESC. PRIM CUAUHTEMOC GASTOS DEL GRUPO OPERATIVO

Introduccin a SQL

Pg . - 37

select/from/where - Listas
Palabra clave in

Permite seleccionar renglones con columnas cuyo contenido corresponde a alguno de los valores de la lista Ejemplo (in) Busca los proyectos que sean del programa SD o SL select proyec, progra from PROYECTO where progra in (SD, SL)

Resultado
proyec 97/C13002 97/C17037 97/C17038 97/C02008 97/C02014 97/C02018 97/C15005 97/C04001 97/C08005 97/S00001 97/C17033 97/C17034 97/C17035 97/C17036 97/C18005 97/C18006 97/C04008 97/C18008 97/C03017 progra SD SD SD SL SD SD SL SD SD SD SD SD SD SD SD SD SD SD SL

Introduccin a SQL

Pg . - 38

select/from/where - Conectores condicionales


Conectores condicionales con operadores lgicos: and/or

and Conecta dos o ms condiciones Regresa resultado verdaderas Ejemplo: Busca los proyectos del programa SE que se localicen en el municipio con clave 2 select proyec, progra, munici from PROYECTO where progra = SE and munici = 2 slo cuando todas las condiciones son

Resultado
proyec 97/C02001 97/C02004 97/C02005 97/C02007 97/C02011 97/C02012 progra SE SE SE SE SE SE munici 2 2 2 2 2 2

Introduccin a SQL

Pg . - 39

select/from/where - Conectores condicionales


or Conecta dos o ms condiciones Regresa un resultado cuando alguna de las condiciones es verdadera Es inclusivo Ejemplo (or) Busca los proyectos que pertenezcan al programa SD o que sean de modalidad de ejecucin C select proyec, progra, mod_eje from PROYECTO where progra = SD or mod_eje = C

Resultado
proyec 97/C13003 97/C16002 97/C13005 97/C13006 97/C13007 97/C13008 97/C13004 97/C13002 97/C16001 97/C17039 97/C17040 97/C17041 97/C17042 97/C17037 97/C17038 97/C06015 97/06016 97/C06017 97/C06018 97/C02002 97/C02003 97/C02014 97/C02018 97/C20005 97/C15001 97/C13012 . . . progra SG SG SG SG SG SG SG SD SG SC SC SC SC SD SD SG SG SG SG SF SF SD SD SJ UB UB . . . mod_eje C C C C C C C AM C C C C C C C C C C C C C AM AM C C C . . .

Introduccin a SQL

Pg . - 40

select/from/where - Conectores condicionales


(continuacin)
Cuando se utiliza ms de un operador lgico, el orden por default en

el cual son evaluados es: not/and/or

Use parntesis para forzar el orden de evaluacin aclarar la intencin Ejemplo (sin parntesis) Busca los proyectos de los programas SK y SE, aquellos que pertenezcan al programa SE que tengan un costo superior a $200,000.00 select proyec, progra, costo_tot from PROYECTO where progra = SK or progra = SE and costo_tot > 200000

Resultado
proyec 97/C07001 97/C17008 97/C17007 97/C02011 97/C03005 97/C10002 97/C19016 97/C19006 97/C03018 97/C03019 97/C14014 97/C07006 progra SK SE SE SE SE SE SK SK SK SK SK SK costo_tot 27105.0000 287175.0000 213456.0000 286424.0000 326410.0000 256529.0000 32479.0000 7078.0000 46383.0000 23460.0000 92587.0000 82236.0000

Ejemplo utilizando parntesis con and/or select proyec, progra, costo_tot from PROYECTO where (progra = SK or progra = SE) and costo_tot > 200000

Resultado
proyec 97/C17008 97/C17007 97/C02011 97/C03005 97/C10002 progra SE SE SE SE SE costo_tot 287175.0000 213456.0000 286424.0000 326410.0000 256529.0000

Introduccin a SQL

Pg . - 41

Sumario
extraer datos select [distinct] nombre_columna from nombre_tabla [where condiciones_bsqueda]
distinct - elimina renglones duplicados en la salida where - determina exactamente cuales renglones sern extrados

Introduccin a SQL

Pg . - 42

Sumario
Operadores de Comparacin - (=) igual a; (>) mayor que; (<) menor

que; (>=) mayor que o igual; (<=) menor que o igual; (!=) o (<>) diferente a; (!>) no mayor que; (!<) no menor que

between - rango inclusivo: los valores limites son incluidos en la bsqueda select [distinct] nombre_columna from nombre_tabla [where condiciones_bsqueda]
not - niega una expresin

Introduccin a SQL

Pg . - 43

Sumario
like - utilizada para extraer datos de tipo char, varchar, y datatime

% _ [] [^]

cualquier cadena de cero o muchos caracteres cualquier caracter cualquier caracter del conjunto cualquier caracter que no este dentro del rango especificado

and/or - conectores de condiciones


in - selecciona valores que coincidan con algn valor de la lista de

valores

Introduccin a SQL

Pg . - 44

CAPITULO III VISTAS Y PROCEDIMIENTOS ALMACENADOS.

Introduccin a SQL

Pg . - 45

Vistas y Procedimientos Almacenados - Objetivos


Al concluir esta seccin estar capacitado para: Identificar las ventajas que ofrecen las vistas y los procedimientos Crear vistas y procedimientos en la base de datos del SURCE Eliminar las vistas y los procedimientos de una base de datos Realizar consultas tomando como base las vistas y los procedimientos

Introduccin a SQL

Pg . - 46

Vistas
Una vista es considerada como una Tabla Adicional que puede estar construida en base a una consulta especificada al momento de crearla, la cual puede incluir operaciones join, subconsultas o simplemente la consulta de una tabla con sentencias group by, having, etc. La sentencia order by es la nica clusula que no se puede utilizar en la definicin de la vista, esto por el hecho de que los renglones no se encuentran en un orden particular Es importante sealar que las vistas se encuentran almacenadas en la base de datos. De tal manera que al realizar modificaciones a la base de datos, la consulta que se realice de la vista contendr datos actualizados.

Nota: La definicin de vistas y procedimientos es recomendable guardarlos en archivos de texto con extensin SQL

Introduccin a SQL

Pg . - 47

Crear una vista


Sintaxis create view nombre de la vista as sentencias select sin order by Es recomendable anteponer v_ al nombre que se le asigne a la vista, con el fin de identificarlas facilmente en la base de datos Ejemplo: Crear una vista que contenga las descripciones de los programas y subprogramas para el fondo 1 create view v_progra_subpro_fondo as select P.progra, P.descri as nom_progra, S.subpro, S.descri as nom_subprog from PROGRAMA P, SUBPROG S where P.eje_fis = S.eje_fis and P.fondo = S.fondo and P.progra = S.progra and P.fondo = 1

Una vez creada la vista se puede consultar como cualquier tabla

select * from v_progra_subpro_fondo order by progra, subpro Resultado


progra S5 SB SC SC SC SC SC SD SD SD SE SE SE SE SE SF SF SG SG nom_progra PROTECCION Y PRESERVACION ECOLOGICA ESTIMULOS A LA EDUCACION BASICA AGUA POTABLE AGUA POTABLE AGUA POTABLE AGUA POTABLE AGUA POTABLE ALCANTARILLADO ALCANTARILLADO ALCANTARILLADO URBANIZACION URBANIZACION URBANIZACION URBANIZACION URBANIZACION PAVIMENTACION EN COLONIAS POPULARES PAVIMENTACION EN COLONIAS POPULARES ELECTRIFICACION ELECTRIFICACION subpro 01 01 01 02 03 04 05 01 02 03 01 02 03 04 05 01 02 01 02 nom_subpro Reforestacin Apoyo a la Educacin Primaria Rehabilitacin Ampliacin Construccin Conduccin de Agua Dotacin de Agua Rehabilitacin Ampliacin Construccin Construccin de Calles Empedrado y Adoquinamiento de Calles Guarniciones y Banquetas Construccin y Remodelacin de Plazas Cvicas y Jardines Alumbrado Pblico Concreto Asfalto Urbana Rural

Introduccin a SQL

Pg . - 48

Eliminar una vista


Sintaxis drop view nombre de la vista Ejemplo Incluir en la vista v_progra_subpro_fondo la columna fondo y que incluya ambos fondos drop view v_progra_subpro_fondo create view v_progra_subpro_fondo as select P.fondo, P.progra, P.descri as nom_progra, S.subpro, S.descri as nom_subprog from PROGRAMA P, SUBPROG S where P.eje_fis = S.eje_fis and P.fondo = S.fondo and P.progra = S.progra

Consultar la vista para fondo 1

select * from v_progra_subpro_fondo where fondo = 1 order by progra, subpro Resultado


fondo 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 progra S5 SB SC SC SC SC SC SD SD SD SE SE SE SE SE SF SF SG SG nom_progra PROTECCION Y PRESERVACION ECOLOGICA ESTIMULOS A LA EDUCACION BASICA AGUA POTABLE AGUA POTABLE AGUA POTABLE AGUA POTABLE AGUA POTABLE ALCANTARILLADO ALCANTARILLADO ALCANTARILLADO URBANIZACION URBANIZACION URBANIZACION URBANIZACION URBANIZACION PAVIMENTACION EN COLONIAS POPULARES PAVIMENTACION EN COLONIAS POPULARES ELECTRIFICACION ELECTRIFICACION subpro 01 01 01 02 03 04 05 01 02 03 01 02 03 04 05 01 02 01 02 nom_subpro Reforestacin Apoyo a la Educacin Primaria Rehabilitacin Ampliacin Construccin Conduccin de Agua Dotacin de Agua Rehabilitacin Ampliacin Construccin Construccin de Calles Empedrado y Adoquinamiento de Calles Guarniciones y Banquetas Construccin y Remodelacin de Plazas Cvicas y Jardines Alumbrado Pblico Concreto Asfalto Urbana Rural

Introduccin a SQL

Pg . - 49

Procedimientos Almacenados
Un procedimiento es un conjunto de sentencias de SQL y que se guarda en la base de datos Con los procedimientos se amplia la velocidad de ejecucin de las consultas sin reducir la eficiencia en la respuesta del servidor de base de datos. Esto porque el procedimiento es compilado en memoria virtual del cliente En los procedimientos se pueden crear tablas temporales que solamente existirn durante la ejecucin del mismo Los valores resultantes de la ejecucin del procedimiento sern obtenidos de la ltima consulta especificada, siempre y cuando no se envien a una tabla temporal Se define una tabla temporal al anteponer el smbolo # a su nombre

Introduccin a SQL

Pg . - 50

Crear un Procedimiento
Sintaxis create procedure nombre del procedimiento (parametros) result (columna o valor resultante tipo de dato) begin sentencias select end Es recomendable anteponer sp_ al nombre que se le asigne al procedimiento, con el fin de identificarlos facilmente en la base de datos

Introduccin a SQL

Pg . - 51

Crear un Procedimiento (continuacin)


Ejemplo: Crear un procedimiento que presente los proyectos y las instancias que los proponen, norman y ejecutan para la modalidad de inversin SP y submodalidad 00 para el fondo 2

create procedure sp_proy () result (proyec varchar(12), dep_pro varchar (8), nom_dep_pro varchar(90), dep_nor varchar (8), nom_dep_nor varchar(90), dep_eje varchar (8), nom_dep_eje varchar(90)) begin select proyec, dep_nor, dep_pro, dep_eje into #PROY from proyecto where mod_inv = 'SP'and sub_inv = '00'and fondo = 2; select #PROY.proyec, #PROY.dep_pro, DEPEND.descri as nom_dep_pro into #PROY_PRO from DEPEND, #PROY where DEPEND.depend = #PROY.dep_pro; select #PROY.proyec, #PROY.dep_nor, DEPEND.descri as nom_dep_nor into #PROY_NOR from DEPEND, #PROY where DEPEND.depend = #PROY.dep_nor; select #PROY.proyec, #PROY.dep_eje, DEPEND.descri as nom_dep_eje into #PROY_EJE from DEPEND, #PROY where DEPEND.depend = #PROY.dep_eje; select #PROY.proyec, #PROY.dep_pro, #PROY_PRO.nom_dep_pro, #PROY.dep_nor, #PROY_NOR.nom_dep_nor, #PROY.dep_eje, #PROY_EJE.nom_dep_eje from #PROY, #PROY_PRO, #PROY_NOR, #PROY_EJE where #PROY.proyec = #PROY_PRO.proyec and #PROY.proyec = #PROY_NOR.proyec and #PROY.proyec = #PROY_EJE.proyec end;

Introduccin a SQL

Pg . - 52

Eliminar y Ejecutar un Procedimiento


Sintaxis para eliminar drop procedure nombre del procedimiento Sintaxis para ejecutar nombre del procedimiento parmetro 1, parmetro 2, parmetro n Ejecutar el procedimiento sp_proy

Resultado
proyec 97/001067 97/000610 97/001069 97/000428 97/000905 97PRUEB A2040 C-00053 C-00053A dep_pro 00000020 02000112 02000112 02000112 00000020 02000503 nom_dep_pro SECRETARIA DE DESARROLLO SOCIAL GOBIERNO DEL ESTADO GOBIERNO DEL ESTADO GOBIERNO DEL ESTADO SECRETARIA DE DESARROLLO SOCIAL XV AYUNTAMIENTO DE ENSENADA SECRETARIA DE EDUCACION PUBLICA SECRETARIA DE EDUCACION PUBLICA dep_nor 00000020 02000216 00000020 02000109 00000020 00000018 nom_dep_nor SECRETARIA DE DESARROLLO SOCIAL I. C. B. C. SECRETARIA DE DESARROLLO SOCIAL S. E. B. S. SECRETARIA DE DESARROLLO SOCIAL SECRETARIA DE ENERGIA, MINAS E INDUSTRIA PARAESTATAL COPLADE COPLADE dep_eje 02000503 02000101 02000106 02000101 00000020 02000503 nom_dep_eje XV AYUNTAMIENTO DE ENSENADA S.A.H.O.P.E. SRIA. DE LA CONTRALORIA S.A.H.O.P.E. SECRETARIA DE DESARROLLO SOCIAL XV AYUNTAMIENTO DE ENSENADA SECRETARIA DE DESARROLLO SOCIAL SECRETARIA DE DESARROLLO SOCIAL

00000011 00000011

02000214 02000214

00000020 00000020

Introduccin a SQL

Pg . - 53

Procedimientos con Parmetros


Ejemplo Eliminar el procedimiento sp_proy e incluir al mismo los parmetros para modalidad de inversin, submodalidad de inversin y fondo

drop procedure sp_proy create procedure sp_proy (lti_fondo tinyint, ls_mod_inv varchar(3), ls_sub_inv varchar(3)) result (proyec varchar(12), dep_pro varchar (8), nom_dep_pro varchar(90), dep_nor varchar (8), nom_dep_nor varchar(90), dep_eje varchar (8), nom_dep_eje varchar(90)) begin select proyec, dep_nor, dep_pro, dep_eje into #PROY from proyecto where mod_inv = @ls_sub_inv and sub_inv = @ls_sub_inv and fondo = @lti_fondo; Ejecutar el procedimiento sp_proy 2, SP, 00 Resultado
proyec 97/001067 97/000610 97/001069 97/000428 97/000905 97PRUEB A2040 C-00053 dep_pro 00000020 02000112 02000112 02000112 00000020 02000503 nom_dep_pro SECRETARIA DE DESARROLLO SOCIAL GOBIERNO DEL ESTADO GOBIERNO DEL ESTADO GOBIERNO DEL ESTADO SECRETARIA DE DESARROLLO SOCIAL XV AYUNTAMIENTO DE ENSENADA SECRETARIA DE EDUCACION PUBLICA dep_nor 00000020 02000216 00000020 02000109 00000020 00000018 nom_dep_nor SECRETARIA DE DESARROLLO SOCIAL I. C. B. C. SECRETARIA DE DESARROLLO SOCIAL S. E. B. S. SECRETARIA DE DESARROLLO SOCIAL SECRETARIA DE ENERGIA, MINAS E INDUSTRIA PARAESTATAL COPLADE dep_eje 02000503 02000101 02000106 02000101 00000020 02000503 nom_dep_eje XV AYUNTAMIENTO DE ENSENADA S.A.H.O.P.E. SRIA. DE LA CONTRALORIA S.A.H.O.P.E. SECRETARIA DE DESARROLLO SOCIAL XV AYUNTAMIENTO DE ENSENADA SECRETARIA DE DESARROLLO SOCIAL

00000011

02000214

00000020

Introduccin a SQL

Pg . - 54

Sumario
Una vista es una tabla adicional que puede estar conformada en base a un conjunto de sentencias de SQL, exceptuando el order by Un procedimiento es un conjunto de sentencias de SQL que permite una mayor velocidad en la ejecucin de una consulta Los procedimientos y las vistas son almacenados en la base de datos Para crear una vista o un procedimiento se recomienda editarlo en un archivo de texto y posteriormente ejecutarlo con una instruccin read

Introduccin a SQL

Pg . - 55

Extraer Datos II - Objetivos


Al concluir esta seccin estar capacitado para: Renombrar encabezados de columnas de los datos extrados Utilizar funciones numricas en la extraccin de datos Definir el significado de un valor NULL Ordenar la salida de datos

Objetivos:

En esta seccin aprender a ordenar el resultado de una consulta. Adems aprender a trabajar con valores nulos (null) y a obtener datos derivados del uso de operaciones aritmticas.

Introduccin a SQL

Pg . - 56

Renombrar Columnas
Existen dos formas de renombrar un encabezado de columna
1. Utilice nombre_columna_nueva = nombre_columna (ANSI-89

standard) Ejemplo select ent_fed, Clave_Proyecto = proyec from PROYECTO where progra = TH

Sintaxis

select nombre_columna_nueva = nombre_columna_original [, ...] select nombre_columna_nueva = nombre_columna_original [, ...]

Nota

Para poner el encabezado de una columna con un espacio utilice comillas ( ). SQL reserva algunos caracteres para su operacin (-, *, /, %, etc.), por lo tanto evite utilizar estos en el nombre del encabezado. select Clave del Proyecto = proyec from PROYECTO where progra = TH

Resultado
Clave del Proyecto 97/C02016 97/C13013 97/C02021

Introduccin a SQL

Pg . - 57

Renombrar Columnas (continuacin)


2. Utilice un espacio en blanco para separar nombre_columna y

nombre_nueva_columna Ejemplo select ent_fed, proyec Clave_Proyecto from PROYECTO where progra = TH
Cuidado: Al omitir una coma en la lista select, la columna ser

tomada como encabezado y no como columna.

Qu salida produce la siguiente instruccin? select ent_fed, proyec munici from PROYECTO where progra = TH

Resultado usando coma


ent_fed 18 18 18 proyec 97/C02016 97/C13013 97/C02021 munici 2 13 2

Resultado no usando coma


ent_fed 18 18 18 munici 97/C02016 97/C13013 97/C02021

Introduccin a SQL

Pg . - 58

Cadena de Caracteres en el Resultado de la Consulta


Es posible adicionar una cadena de caracteres a la clusula select Ejemplo (cadena de caracteres) select El proyecto es:, proyec from PROYECTO where proyec = '97/C02016'

Resultado
El proyecto es: El proyecto es: proyec 97/C02016

Introduccin a SQL

Pg . - 59

Expresiones Numricas - Operadores Aritmticos


Smbolo + * / % Operacin adicin substraccin multiplicacin divisin mdulo

Las operaciones pueden usarse en cualquier columna numrica Utilizado en cualquier clusula que permita una expresin Ejemplo (multiplicacin) select proyec, cantid *pre_uni from DET_CAR

Resultado
proyec 97/C07002 97/S00001 cantid * costo 252535640.476900 569824.000000

Ejemplo (divisin) select proyec, costo_tot/12 from PROYECTO where proyec = 97/C02016 Resultado
proyec 97/C02016 costo_tot / 12 22638.0833333

Introduccin a SQL

Pg . - 60

Valores NULL
Un valor NULL es un valor desconocido Un null no implica un cero o un espacio en blanco; es un valor especial que significa informacin no disponible Is null debe ser utilizado para determinar valores null contenidos en una columna; la sintaxis = null es vlida pero no recomendada. Un valor null nunca es igual a otro valor null Los valores null se consideran en el ordenamiento y en los grupos Algunas columnas son definidas para permitir valores NULL Si un elemento es null en una operacin el resultado ser null

Introduccin a SQL

Pg . - 61

select / order by
La clusula order by ordena el resultado de la consulta (por default en forma ascendente) Las columnas declaradas en el order by no es necesario que se encuentren en la lista_select Cuando se utiliza el order by, los valores NULL son listados al principio Ejemplo select proyec, munici from PROYECTO order by proyec Ejemplo (usando ms de una columna) select proyec, munici from PROYECTO order by munici, proyec

Sintaxis

select [ distinct ] lista_select from tabla [ where condiciones ] [ order by { columna / expresin } [ asc | desc ] [, ... ] ]

Resultado: order by proyec


proyec 96/C20007 97/06016 97/08006 97/C02001 97/C02002 97/C02003 97/C02004 97/C02005 97/C02006 97/C02007 97/C02008 97/C02009 97/C02010 97/C02011 97/C02012 97/C02013 . . munici 20 6 8 2 2 2 2 2 2 2 2 2 2 2 2 2 . .

Resultado: order by munici, proyec


proyec 97/C02001 97/C02002 97/C02003 97/C02004 97/C02005 97/C02006 97/C02007 97/C02008 97/C02009 97/C02010 97/C02011 97/C02012 97/C02013 97/C02014 97/C02015 97/C02016 . . munici 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 . .

Introduccin a SQL

Pg . - 62

select/order by (continuacin)
Ejemplo (ordenar por una columna derivada) Liste el costo total de los productos select costo_tot / 12, proyec from PROYECTO order by costo_tot / 12 Ejemplo (columna que no se declara en la lista_select) select proyec, munici from PROYECTO order by progra

Resultado order by costo_tot / 12


costo_tot / 12 532.4166667 589.8333333 665.5000000 692.5000000 881.1666667 884.9166667 929.4166667 956.5000000 964.8333333 988.6666667 1055.1666667 . . proyec 97/C17029 97/C19006 97/C03011 97/C08005 97/C02010 97/C03009 97/C14003 97/C03016 97/C02008 97/C13009 97/C06015 . .

Resultado order by progra (la columna no esta en lista_select)


proyec 97/C05003 97/C17039 97/C17040 97/C17041 97/C17042 97/C02010 97/C02006 97/C02013 . . munici 5 17 17 17 17 2 2 2 . .

Introduccin a SQL

Pg . - 63

Sumario
Renombrar columnas - select ttulo_columna = nombre_columna [, ... ] select nombre_columna ttulo_columna Operadores aritmticos - (+) adicin; (-) substraccin; (*) multiplicacin; (/) divisin; (%) mdulo Valor null - Es un valor desconocido, las operaciones con null resultan null Is null - Usado para determinar un valor null en una columna Clusula order by - Ordena el resultado de una columna (ascendente, por defecto)

Introduccin a SQL

Pg . - 64

Organizar y Resumir Datos - Objetivos


Al concluir esta seccin estar capacitado para: Utilizar las funciones agregadas Organizar datos en grupos (group by) Establecer condiciones para agrupar los datos (having)

Objetivos

En esta seccin aprender a incorporar funciones agregadas, obtener datos agrupados y la conjuncin de ambos en las consultas.

Introduccin a SQL

Pg . - 65

Funciones Agregadas
Funcin count(*) count(nombre_columna) max(nombre_columna) min(nombre_columna) sum(nombre_columna) avg(nombre_columna) Obtiene Nmero de renglones en una tabla Nmero de renglones en la columna que no contengan valor null Valor mximo en la columna Valor mnimo en la columna Valor total de la columna Valor promedio de la columna

Las funciones agregadas ignoran los valores null (excepto count(*)) sum y avg operan con valores numricos Slo un rengln es resultado (si no se utiliza la clusula group by) Las funciones agregadas no se usan en la clusula where

Sintaxis

select nombre_funcin_agregada ( [ distinct ] expresin ) from nombre_tabla [ where . . . condiciones ]

Introduccin a SQL

Pg . - 66

Funcin Agregada - count


count obtiene el nmero de renglones que cumplen la condicin Ejemplo (nmero de renglones localizados) select count (*) from CON_EJE Resultado count(*) 6

Ejemplo (nmero de renglones en la columna que no tienen valor null) select count (con_pej) from CON_EJE Resultado count (con_pej) 0

Introduccin a SQL

Pg . - 67

Funciones Agregadas - max/min


max encuentra el valor mayor en la columna Ejemplo select max(costo_tot) from PROYECTO Resultado max(costo_tot)
976800.0000

min encuentra el valor menor en la columna Ejemplo select min(costo_tot) from PROYECTO Resultado min(costo_tot)
100.0000

Utilice la siguiente lista como referencia para los resultados anteriores


proyec 97/1800897 97/001 4 97/C17029 97/C19006 97/C03011 97/C08005 97/C02010 97/C03009 97/C14003 97/C03016 97/C02008 97/C13009 97/C06015 97/C14007 97/C18001 . . . 97/C03005 97/C17037 97/C16005 97/C18005 97/C17036 97/C05012 97/C17038 97/C18008 97/S00001 costo_tot 100.0000 5000.0000 5000.0000 6389.0000 7078.0000 7986.0000 8310.0000 10574.0000 10619.0000 11153.0000 11478.0000 11578.0000 11864.0000 12662.0000 12830.0000 13372.0000 . . . 326410.0000 432235.0000 443717.0000 444207.0000 444333.0000 552029.0000 632251.0000 693956.0000 976800.0000

Introduccin a SQL

Pg . - 68

Funciones Agregadas - sum/avg


sum obtiene la suma de los renglones de una columna Ejemplo select sum(can_act) from EST_FIN where proyec = 97/C07002 and fase_pre = 3 Resultado sum(can_act)
100985.0000

avg obtiene la suma de los renglones de una columna y lo divide entre el nmero de estos Ejemplo select avg (can_act ) from EST_FIN where proyec = 97/C07002 and fase_pre = 3 Resultado avg(can_act)
33661.66666667

Utilize la siguiente lista como referencia para los resultados anteriores


proyec 97/C07002 97/C07002 97/C07002 can_act 68670.0000 12118.0000 20197.0000

Introduccin a SQL

Pg . - 69

Funciones Agregadas
En la clusula SELECT se puede utilizar ms de una funcin agregada Ejemplo select min(costo_tot), max(costo_tot) from PROYECTO Resultado min(costo_tot)
100.0000

max(costo_tot)
976800.0000

Introduccin a SQL

Pg . - 70

Funciones Agregadas - distinct


distinct elimina los valores duplicados antes de ejecutar una funcin agregada Se puede utilizar con sum, avg y count (opcional) No puede ser usado con min, max y count(*) Tambin se puede utilizar con count(nombre_columna) Se utiliza slo con nombre_columna y no con expresiones aritmticas

Introduccin a SQL

Pg . - 71

select/group by
group by organiza los datos dentro de grupos, formados en base al contenido de una o varias columnas Frecuentemente es usado con funciones agregadas en la lista_select La funcin agregada se aplica en cada grupo Los valores null en la columna agrupada son tratados como un grupo Ejemplo Agrupe los proyectos por programa y calcula el costo promedio para cada uno. select progra, costo_promedio = avg(costo_tot) from PROYECTO group by progra

Sintaxis

select [ distinct ] lista_select [ from tabla [, ... ] ] [ where condiciones ] [group by expresin_sin_funcin_agregada [, ... ] ]

Resultado
progra SC SE SJ SK SG SD UB SF . . . costo_promedio 66207.62500000 87279.39560440 81132.82758621 44475.42857143 136395.71428571 290927.43750000 113651.93103448 195730.50000000 . . .

Introduccin a SQL

Pg . - 72

select/group by (continuacin)
Los grupos se pueden formar por medio de una columna o utilizando una expresin que no contenga una funcin agregada Ejemplo select sum(can_act), proyec, count(proyec) from EST_FIN where fase_pre = 3 group by PROYEC Los grupos no se pueden formar por medio del ttulo de la columna Normalmente el group by contiene las columnas y expresiones en la lista_select El violar esta regla puede dar un resultado inesperado, pero si la lista_select contiene una funcin agregada el resultado es correcto

Resultado
sum(can_act) 27763.0000 39954.0000 14048.0000 261573.0000 243327.0000 53210.0000 16669.0000 130662.0000 65929.0000 72990.0000 184760.0000 100985.0000 27105.0000 77889.0000 111075.0000 83002.0000 . . . 169135.0000 15312.0000 183002.0000 proyec 97/C13005 97/C13006 97/C13007 97/C13008 97/C13004 97/C13001 97/C13002 97/C05002 97/C05003 97/C05004 97/C05001 97/C07002 97/C07001 97/C13003 97/C03006 97/C16002 count(proyec 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 . . . 3 3 3

97/C16007 97/C10005 97/C10006

. . .

Introduccin a SQL

Pg . - 73

group by con una clusula where


La clusula where filtra los renglones antes de agruparlos Aplica una condicin a la tabla antes de formar los grupos No acepta funciones agregadas Ejemplo Lista las costos totales que ha ejercido cada dependencia ejecutora en el programa de urbanizacion select dep_eje, sum(costo_tot) from PROYECTO where progra = SE group by dep_eje

Resultado
dep_eje 18018002 18018003 18018005 18018006 18018008 18018010 18018013 18018014 18018015 18018017 18018018 18018019 18018020 sum(costo_tot) 606305.0000 692703.0000 448609.0000 445752.0000 580049.0000 359305.0000 125663.0000 273952.0000 443685.0000 3370364.0000 29937.0000 277525.0000 288576.0000

Introduccin a SQL

Pg . - 74

group by con la clusula having


La clusula having restringe los grupos Aplica una condicin a los grupos despus de formarse Ejemplo Obtenga el costo promedio de los programas, adems agrpelos por programa y subprograma y solamente muestre aquellos que presenten un precio promedio mayor a 60.000 select progra, subpro, avg(costo_tot) from PROYECTO group by progra, subpro having avg(costo_tot) > 60.000 having es normalmente usada con una funcin agregada

Resultado
progra SC SE SE SJ SK SG SG SD SE UB SC SD SF UB SL SC SE TH UB sub_pro 01 03 02 02 02 01 02 02 01 02 03 01 02 03 02 02 04 02 01 avg(costo_tot) 34383.88888889 122067.06250000 88240.84482759 78109.40740741 36541.80000000 126520.18181818 172606.00000000 249340.75000000 53974.20000000 94352.75000000 203166.50000000 377503.42857143 195730.50000000 148763.26666667 60213.00000000 50762.44444444 41325.00000000 271657.00000000 51605.83333333

Introduccin a SQL

Pg . - 75

Sumario
Funciones Agregadas count - obtiene el nmero de registros que cumplen la condicin max - encuentra el valor mximo de la columna min - encuentra el valor mnimo de la columna sum - suma los renglones de la columna especificada avg - obtiene el valor promedio de una columna isnull - substituye un valor null por uno real group by - organiza los renglones en grupos having - restringe los grupos

Sintaxis del elemento select

select [ distinct ] lista_select [ from tabla [, ... ] ] [ where condiciones ] [ group by [all] expresin_sin_funcin_agregada [, ... ] ] [ having condiciones ] [ order by { nombre_columna | nmero_lista_select | expresin } [ asc | desc ] [, ... ] ]

Introduccin a SQL

Pg . - 76

Joins - Objetivos
Al concluir esta seccin estar capacitado para: Realizar un join basado en la igualdad Utilizar un join incluyendo condiciones Establecer un join como operacin de unin para varias tablas

Objetivos

Join es la operacin que permite el modelo relacional. En esta seccin aprender los conceptos de relacionar columnas de una a otra tabla. As como tambin a establecer relaciones de varias tablas.

Introduccin a SQL

Pg . - 77

Joins

MUNICI
munici
0 1 2 3 . . .

ent_fed
0 18 18 18 . . .

nom_ofi
Municipio para Areas Centrales Municipio para Delegacin Municipio para Coplade ACAPONETA . . .

nom_com
Municipio para Areas Centrales Delegacin Coplade ACAPONETA . . .

tipo_num
AE AE AE B1 . . .

...
... ... ... . . . .

PROYECTO
munici
1 1 2 2 2 . . .

ent_fed
18 18 18 18 18 . . .

proyec
97/C05003 97/C05004 97/C05001 97/C07002 97/C07001 . . .

eje_fis
1997 1997 1997 1997 1997 . . . 1 1 1 1 1 . . .

fondo

progra
SC SE SE SJ SK . . .

... ... ... ... ... ... . . .

Introduccin a SQL

Pg . - 78

Consultar dos tablas


MUNICI
ent_fed
18 18 18 .

PROYECTO
ent_fed
18 18 18

munici
9999 9998 1 .

proyec
97/C05004 97/C05001 97/C07002 5 5 7

munici
1997 1997 1997

eje_fis

ent_fed
18 18 18 .

TABLA RESULTANTE munici proyec


9999 9998 1 . 97/C05004 97/C05001 97/C07002 5 5 7

munici

eje_fis
1997 1997 1997

Consultar dos tablas

La operacin join permite extraer datos de dos o ms tablas Join es la parte central del modelo relacional Combina tablas en base a valores iguales de los renglones de cada tabla

Introduccin a SQL

Pg . - 79

Pasos para establecer el join


1. Decida las columnas que necesita consultar 2. Utilice el diagrama Entidad-Relacin para observar las relaciones de las tablas que requiera 3. En el diagrama Entidad-Relacin siga las lneas de relacin para identificar las columnas que conectan las tablas

Introduccin a SQL

Pg . - 80

Operacin Join
PROYECT O ent_fed proyec munici eje_fis fondo progra subpro con_pro cat_pes nombre tipo_cob fase_pro costo_tot mod_inv sub_inv mod_reg mod_eje lineam dep_pro dep_nor dep_eje ele_bm lug_reg OFI_PRO ent_fed proyec num_ofi ent_emi munici lug_reg OFICIO num_ofi ent_emi ent_rec lis_mun eje_fis fondo tipo_ofi fec_emi fec_reg emisor recept ofi_rel tipo_aso lug_reg

N 1

1 N

Las lneas de relacin ayudan a encontrar el join que conecta las tablas

Introduccin a SQL

Pg . - 81

Operacin join (continuacin)


Join es una operacin multi-tabla. Sintaxis select [ tabla. ] nombre_columna, [... ] from { tabla } { , tabla } [, ... ] [ where condiciones ] where: es la clusula central que se utiliza para relacionar las tablas en el join Los valores null nunca se usan en el join (porque un valor null no es igual a otro valor null) Las columnas que establecen el join no necesariamente deben estar en la clusula select. Las columnas con el mismo nombre en varias tablas deben ser precedidas por el nombre de la tabla

where

Los operandos empleados en la clusula where no necesariamente tienen que ser datos del mismo tipo, pero deben ser del tipo que SQL Anywhere implcitamente convierte.

Introduccin a SQL

Pg . - 82

Consultar tablas usando el Join


Ejemplo select OFICIO.num_ofi, OFICIO.fondo, OFICIO.tipo_ofi, EST_OFI.tipo_inv, EST_OFI.cantid from OFICIO, EST_OFI where OFICIO.num_ofi = EST_OFI.num_ofi

Resultado
num_ofi COP-DPP-F1-5-0042 COP-DPP-F1-5-0042 COP-DPP-F1-5-0042 COP-DPP-F1-5-0004 COP-DPP-F1-5-0004 COP-DPP-F1-5-0004 COP-DPP-F1-5-0004 COP-DPP-F1-5-0004 COP-DPP-F1-5-0004 ... ... COP-DPP-F1-5-0033 COP-DPP-F1-5-0074 COP-DPP-F1-5-0086 COP-DPP-F1-5-0086 COP-DPP-F1-5-0086 COP-DPP-F1-5-0086 COP-DPP-F1-5-0086 COP-DPP-F1-5-0086 COP-DDP-F2-5-1000 COP-DDP-F2-5-1000 COP-DDP-F2-5-1000 fondo 1 1 1 1 1 1 1 1 1 ... ... 1 1 1 1 1 1 1 1 1 1 1 tipo_ofi 7 7 7 7 7 7 7 7 7 ... ... 7 7 7 7 7 7 7 7 7 7 7 tipo_inv 1 2 5 1 2 5 1 2 5 ... ... 1 5 1 2 5 1 2 5 1 1 2 cantid 200762.0000 35429.0000 59048.0000 56442.0000 9960.0000 16600.0000 115065.0000 20305.0000 33843.0000 ... ... 286433.0000 101117.0000 10412.0000 1838.0000 3062.0000 124442.0000 21960.0000 36600.0000 150000.0000 200000.0000 100000.0000

OFICIO

EST_OFI

Introduccin a SQL

Pg . - 83

Joins basados en la igualdad


Un rengln en una tabla hace referencia a un rengln en otra tabla, porque el contenido de las columnas de cada tabla son iguales Ejemplo Liste las CLCs y su beneficiario select CLC.clc, CLC_FED.benefi from CLC, CLC_FED where CLC.clc = CLC_FED.clc

Resultado
clc 1800012 1800164 1800159 1800160 1800161 ... ... 1800378 1800379 1800380 1800381 1800397 benefi C. JOSE FELIX TORRES HARO,\X0D\X0APRESIDENTE MUNICIPAL C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR FREGOSO ... ... C. FELIPE HARO FREGOSO C. FELIPE HARO FREGOSO C. FELIPE HARO FREGOSO C. FELIPE HARO FREGOSO C.P. JUAN RAMON CERVANTES GOMEZ

Introduccin a SQL

Pg . - 84

Joins basados en la igualdad (continuacin)


Ejemplo Liste los proyectos refrendados, la inversion ejercida, avance fsico y financiero de estos, as como el numero de beneficiarios directos. select PRO_ESP.proyec, PRO_ESP.ben_ind, REFRENDO.ava_fin, REFRENDO.ava_fis from PRO_ESP, REFRENDO where PRO_ESP.proyec = REFRENDO.proyec

Resultado
proyec 96/C09046 ben_ind 60 ava_fin 20.00 ava_fis 20.00

Introduccin a SQL

Pg . - 85

Producto Cartesiano
Si no se especifican en el where las columnas utilizadas para relacionar las tablas, el sistema asume que se desea obtener la combinacin de los renglones de cada tabla

Esto se conoce como producto cartesiano

Ejemplo Combine la tabla Fondo con la tabla Proyecto select FONDO.nombre, PROYECTO.proyec from PROYECTO, FONDO

Resultado
nombre Fondo para el Desarrollo Regional y el Empleo Fondo para el Desarrollo Regional y el Empleo Fondo para el Desarrollo Regional y el Empleo Fondo para el Desarrollo Regional y el Empleo Fondo para el Desarrollo Regional y el Empleo Fondo para el Desarrollo Regional y el Empleo Fondo para el Desarrollo Regional y el Empleo Fondo para el Desarrollo Regional y el Empleo Fondo para el Desarrollo Regional y el Empleo Fondo para el Desarrollo Regional y el Empleo ... ... Fondo de Desarrollo Social Municipal Fondo de Desarrollo Social Municipal Fondo de Desarrollo Social Municipal Fondo de Desarrollo Social Municipal Fondo de Desarrollo Social Municipal Fondo de Desarrollo Social Municipal Fondo de Desarrollo Social Municipal Fondo de Desarrollo Social Municipal Fondo de Desarrollo Social Municipal proyec 97/C05003 97/C05004 97/C05001 97/C07002 97/C07001 97/C14027 97/C02044 97/C14028 97/C02045 97/C14029 ... ... 97/C05003 97/C05004 97/C05001 97/C07002 97/C14027 97/C02044 97/C14028 97/C02045 97/C14029

Explicacin: La tabla proyecto contiene 972 renglones y 2 la tabla fondo, por lo tanto el resultado es: 972 * 2 = 1944 renglones.

Introduccin a SQL

Pg . - 86

Joins con order by


Ejemplo (clusula adicional: order by) Listar los oficios, su emisor, receptor y estructura financiera, as como la cantidad que aporta cada elemento que participe en la definicin de sta (tipo de inversin) y ordene por el nmero de oficio select OFICIO.num_ofi, OFICIO.emisor, OFICIO.recept, EST_OFI.tipo_inv, EST_OFI.cantid from OFICIO, EST_OFI where OFICIO.num_ofi = EST_OFI.num_ofi order by OFICIO.num_ofi

Resultado
num_ofi 001/97 001/97 001/97 001/97 002/97 002/97 003/97 003/97 0036/97 0036/97 OA-CPDM-130-97 OA-CPDM-130-97 OA-CPDM-130-97 OA-CPDM-130-97 OA-CPDM-130-97 OA-CPDM-130-97 S/N/97 S/N/97 S/N004 S/N004 emisor AYTO. AYTO. AYTO. AYTO. AYTO. AYTO. AYTO. AYTO. AYTO. AYTO. DE DE DE DE DE DE DE DE DE DE JALA JALA JALA JALA TEPIC TEPIC SAN BLAS SAN BLAS SANTIAGO SANTIAGO recept SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL tipo_inv 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 cantid 193253.0000 34103.0000 184375.0000 32537.0000 63750.0000 11250.0000 27971.0000 4936.0000 18329.0000 3235.0000 11420.0000 2015.0000 2317.0000 409.0000 156290.0000 27580.0000 2731000.0000 409650.0000 243544.0000 42978.0000

AYTO. DE EL NAYAR AYTO. DE EL NAYAR AYTO. DE EL NAYAR AYTO. DE EL NAYAR AYTO. DE EL NAYAR AYTO. DE EL NAYAR SEDESOL SEDESOL SEDESOL (JORN.AGR.) SEDESOL (JORN.AGR.)

Introduccin a SQL

Pg . - 87

Joins con group by


Ejemplo (clusula adicional: funcin agregada y group by) Liste los oficios, sus emisores y receptores as como la cantidad total que se ha definido en la estructura de ste, agrupe por nmero de oficio, emisor y receptor y ordene por nmero de oficio. select EST_OFI.num_ofi, OFICIO.emisor, OFICIO.recept, sum(EST_OFI.cantid) from OFICIO, EST_OFI where OFICIO.num_ofi = EST_OFI.num_ofi group by EST_OFI.num_ofi, OFICIO.emisor, OFICIO.recept order by EST_OFI.num_ofi

Resultado
num_ofi 001/97 002/97 003/97 0036/97 004/97 005-NIOS/97 005/97 006/97 0070-DPD/97 020/97 ... ... COP-DPP-FI-5-0069 COP-DPP-FI-5-0081 COP-DPP-FI-5-0099 COP-DPP-FI-5-0102 COP-DPP-FI-5-0115 COP-DPP-FI-5-0128 COP-DPP-FI-5-0148 OA-CPDM-130-97 S/N/97 S/N004 emisor AYTO. DE JALA AYTO. DE TEPIC AYTO. DE SAN BLAS AYTO. DE SANTIAGO SEDESOL(JORN.AGR.) AYTO. DE HUAJICORI SEDESOL AYTO. DE SAN PEDRO LGS. AYTO. DE XALISCO SEDESOL ... ... GOB. DEL ESTADO GOB. DEL ESTADO GOB. DEL ESTADO GOB. DEL ESTADO GOB. DEL ESTADO GOB. DEL ESTADO GOB. DEL ESTADO AYTO. DE EL NAYAR SEDESOL SEDESOL (JORN.AGR.) recept SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL GOB. DEL EDO. SEDESOL SEDESOL SEDESOL SEDESOL ... ... AYTO. DEL NAYAR AYTO. DEL NAYAR AYTO. DEL NAYAR AYTO. DEL NAYAR AYTO. DEL NAYAR AYTO. DE RUIZ AYTO. DE SAMAO SEDESOL SEDESOL SEDESOL sum(EST_OFI.cantid) 444268.0000 75000.0000 32907.0000 21564.0000 2247432.0000 563580.0000 566609.0000 6823.0000 412992.0000 2214413.0000 ... ... 971757.0000 965967.0000 1028593.0000 30795.0000 82369.0000 12384.0000 24942.0000 200031.0000 3140650.0000 286522.0000

Introduccin a SQL

Pg . - 88

Alias
Para no teclear repetidamente el nombre de la tabla, se utiliza el alias dentro de la consulta El alias puede usarse en cualquier parte de la consulta Ejemplo Listar los oficios, emisores, receptores y el tipo de oficio select T.descri, O.num_ofi, O.emisor, O.recept from TIPO_OFI T, OFICIO O where T.tipo_ofi = O.tipo_ofi order by T.tipo_ofi

Sintaxis

select lista_select from tabla1 alias_para_tabla1, tabla2 alias_para_tabla2 where alias_para_tabla1.nombre_columna = alias_para_tabla2.nombre_columna

Resultado
descri Propuesta Propuesta Propuesta Propuesta Propuesta Propuesta Propuesta Propuesta ... ... Aprobacin Aprobacin Aprobacin Aprobacin num_ofi 020/97 S/N/97 004/97 S/N004 005/97 086-01/97 0070-DPD/97 COP-142/97 ... ... 25-541711-F2-0032 25-541711-F2-0033 COP-DPP-FI-0160/97 COP-DPP-F1-5-0188 emisor SEDESOL SEDESOL SEDESOL(JORN.AGR.) SEDESOL (JORN.AGR.) SEDESOL SEDESOL (EMPLEO) AYTO. DE XALISCO AYTO. DE BAHIA DE BANDERAS ... ... SEDESOL SEDESOL GOB. DEL ESTADO GOB. DEL ESTADO recept SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL AYTO. STA. MA. ORO SEDESOL SEDESOL ... ... AYTO. DE XALISCO AYTO.DE JALA AYTO. DE SAMAO AYTO. DE AHUACATLAN

Introduccin a SQL

Pg . - 89

Joins con condiciones adicionales (en la clusula where)


Ejemplo (condicin adicional) Liste los oficios, emisor y receptor, en los que las invesiones de la estructura financiera sean menor o igual a 10,000.00 select O.num_ofi, O.emisor, O.recept, E.tipo_inv, E.cantid from Oficio O, EST_OFI E where O.num_ofi = E.num_ofi and E.cantid <= 10000.00

Resultado
num_ofi COP-DPP-F1-5-0030 COP-DPP-F1-5-0026 COP-DPP-F1-5-0026 COP-DPP-F1-5-0026 COP-DPP-F1-5-0026 COP-DPP-F1-5-0036 COP-DPP-F1-5-0015 ... ... 25-541711-F2-0030 25-541711-F2-0030 25-541711-F2-0031 25-541711-F2-0031 25-541711-F2-0031 emisor GOB. DEL GOB. DEL GOB. DEL GOB. DEL GOB. DEL GOB. DEL GOB. DEL ... ... SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL recept AYTO. AYTO. AYTO. AYTO. AYTO. AYTO. AYTO. ... ... AYTO. AYTO. AYTO. AYTO. AYTO. tipo_inv 2 1 2 5 2 2 2 ... ... 2 2 2 1 2 cantid 5240.0000 7584.0000 1338.0000 2231.0000 7035.0000 8658.0000 3012.0000 ... ... 1470.0000 3966.0000 2015.0000 2317.0000 409.0000

ESTADO ESTADO ESTADO ESTADO ESTADO ESTADO ESTADO

DE IXTLAN DEL RIO STA. MA. DEL ORO STA. MA. DEL ORO STA. MA. DEL ORO STA. MA. DEL ORO AMATLAN DE CAAS AMATLAN DE CAAS DE DE DE DE DE ACAPONETA ACAPONETA EL NAYAR EL NAYAR EL NAYAR

Introduccin a SQL

Pg . - 90

Joins con ms de dos tablas


En la clusula from se deben listar todas las tablas que se utilizan en la consulta (ya sea que se extraigan o no datos de las mismas). En la clusula where se deben listar todas las condiciones necesarias para conectar las tablas. No es necesario desplegar la columna utilizada para unir ms de dos tablas. Ejemplo. Listar la descripcin del tipo de oficio, el oficio, emisor, receptor y la estructura financiera (tipo de invesin y cantidad) select T.descri, O.num_ofi, O.emisor, O.recept, E.tipo_inv, E.cantid from TIPO_OFI T, OFICIO O, EST_OFI E where T.tipo_ofi = O.tipo_ofi and O.num_ofi = E.num_ofi order by O.tipo_ofi, O.num_ofi

Resultado
descri Propuesta Propuesta Propuesta Propuesta Propuesta Propuesta Propuesta Propuesta Propuesta Propuesta Propuesta ... ... Aprobaci n Aprobaci n Aprobaci n Aprobaci n Aprobaci n num_ofi 001/97 001/97 001/97 001/97 002/97 002/97 003/97 003/97 0036/97 0036/97 004/97 ... ... COP-DPP-FI-5-0128 COP-DPP-FI-5-0128 COP-DPP-FI-5-0148 COP-DPP-FI-5-0148 COP-DPP-FI-5-0148 emisor AYTO. DE JALA AYTO. DE JALA AYTO. DE JALA AYTO. DE JALA AYTO. DE TEPIC AYTO. DE TEPIC AYTO. DE SAN BLAS AYTO. DE SAN BLAS AYTO. DE SANTIAGO AYTO. DE SANTIAGO SEDESOL(JORN.AGR.) ... ... GOB. DEL ESTADO GOB. DEL ESTADO GOB. DEL ESTADO GOB. DEL ESTADO GOB. DEL ESTADO recept SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL SEDESOL ... ... AYTO. DE RUIZ AYTO. DE RUIZ AYTO. DE SAMAO AYTO. DE SAMAO AYTO. DE SAMAO tipo_inv 1 2 1 2 1 2 1 2 1 2 1 ... ... 1 2 1 2 5 cantid 193253.0000 34103.0000 184375.0000 32537.0000 63750.0000 11250.0000 27971.0000 4936.0000 18329.0000 3235.0000 199359.0000 ... ... 10526.0000 1858.0000 13769.0000 2431.0000 8742.0000

Introduccin a SQL

Pg . - 91

Joins con ms de dos tablas (continuacin)


Cuando n tablas se utilizan con el join, necesariamente se requieren n-1 condiciones join, esto para evitar un producto cartesiano. Ejemplo (tres tablas - dos condiciones). De las CLCs liste el beneficiario y las claves de los proyectos para los cuales se est liberando el recurso select C.clc, CF.benefi, CE.proyec from CLC C, CLC_FED CF, CLC_EST CE where (C.clc = CF.clc ) and (CF.clc = CE.clc and CF.sec_clcf = CE.sec_clcf)

Resultado
clc 1800012 1800012 1800012 1800012 1800012 1800164 1800159 1800160 1800161 1800162 1800163 1800183 1800108 1800003 1800003 1800003 1800003 1800105 1800106 1800107 1800109 1800110 1800153 ... ... 1800378 1800379 1800380 1800381 benefi C. JOSE FELIX TORRES HARO,\X0D\X0APRESIDENTE C. JOSE FELIX TORRES HARO,\X0D\X0APRESIDENTE C. JOSE FELIX TORRES HARO,\X0D\X0APRESIDENTE C. JOSE FELIX TORRES HARO,\X0D\X0APRESIDENTE C. JOSE FELIX TORRES HARO,\X0D\X0APRESIDENTE C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR F. C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIAR FREGOSO C. SALVADOR AGUIR FREGOSO C. SALVADOR AGUIAR FREGOSO PROFR. AGUSTIN AGUILAR IBARRA ... ... C. FELIPE HARO FREGOSO C. FELIPE HARO FREGOSO C. FELIPE HARO FREGOSO C. FELIPE HARO FREGOSO MUNICIPAL MUNICIPAL MUNICIPAL MUNICIPAL MUNICIPAL proyec 97/C17028 97/C17029 97/C17030 97/C17031 97/C17032 97/C03019 97/C03013 97/C03017 97/C03016 97/C03015 97/C03018 97/C03020 97/C03005 97/C03001 97/C03002 97/C03006 97/C03007 97/C03004 97/C03009 97/C03011 97/C03003 97/C03008 97/C02021 97/C19029 97/C19028 97/C19027 97/C19030

Introduccin a SQL

Pg . - 92

Sumario
Sintaxis: select [ tabla ].nombre_columna, [ ...] from { tabla }, { tabla }, [ ...] [ where condiciones ] Producto cartesiano - todas las posibles combinaciones de los renglones de cada tabla. Alias - mediante una abreviatura permite referenciar tablas dentro de un elemento simple del SQL Join con mltiples tablas - cuando n tablas son utilizadas con el join, n-1 condiciones son necesarias para evitar el producto cartesiano.

Sintaxis del alias

select lista_select from nombre_tabla nombre_alias1, nombre_tabla nombre_alias2 where nombre_alias1.nombre_columna = nombre_alias2.nombre_columna

Introduccin a SQL

Pg . - 93

Subconsultas - Objetivos
Al concluir esta seccin estar capacitado para: Usar una subconsulta como un mtodo alternativo de la clusula join Usar subconsultas para funciones adicionales de la clusula join

Objetivos

En esta seccin aprender a consultar las bases de datos usando selects anidados (subconsultas).

Introduccin a SQL

Pg . - 94

Subconsulta - Un ejemplo introductorio


Qu proyectos se tienen para el Fondo para el Desarrollo Regional y el Empleo? 1. Busque la clave para el Fondo para el Desarrollo Regional y el Empleo select fondo from fondo where nombre = Fondo para el Desarrollo Regional y el Empleo Resultado: 2

2. Busque los proyectos para los cuales el fondo sea igual a 2 select * from proyecto where fondo = 2

Resultado para la consulta 2


ent_fed 18 18 18 18 18 18 18 18 ... ... 18 18 18 18 18 18 18 18 18 18 proyec 97/S00221 97/S00095 97/S00001 97/S00016 97/S00053 97/S00054 97/S00055 97/S00056 ... ... 97/S00287 97/S00282 97/S00281 97/S00280 97/S00278 97/S00291 97/S00293 97/S00289 97/S00290 97/S00288 munici 14 14 4 998 18 16 14 7 ... ... 8 9 9 9 9 7 7 7 7 7 eje_fis 1997 1997 1997 1997 1997 1997 1997 1997 ... ... 1997 1997 1997 1997 1997 1997 1997 1997 1997 1997 fondo 2 2 2 2 2 2 2 2 ... ... 2 2 2 2 2 2 2 2 2 2 progra TH SS SD SS TB TB TB TB ... ... TF UB UB UB UB TE TE TF TF TE subpro 02 06 01 08 01 01 01 01 ... ... 04 03 03 03 03 01 01 01 01 01 con_pro 00 00 00 00 00 00 00 00 ... ... 00 0A 0A 0A 0A 00 00 00 00 00 cat_pes 2 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 nombre DESPIEDRE MANUAL EQUIPAMIENTO DE COCINA REHABILITACION DEL SISTEMA DE ALCANTARILLADO SANIT. GASTOS DEL GRUPO OPERATIVO (JORNALEROS AGRICOLAS) TORTILLERIA TORTILLERIA TORTILLERIA TORTILLERIA ... ... PATIOS ASOLEADEROS PARA EL CAFE MACHETEO DE CAMINO DE ACCESO MACHETES DE CAMINO DE ACCESO CONSERVACION DEL CAMINO DE ACCESO AL POBLADO RAHABILITACION DEL CAMINO DE TERRACERIA REHABILITACION DE LIENZOS EN PAECELAS Y POTREROS REHABILITACION DE LIENZOS EN PARCELAS Y POTREROS REHABILITACION DE HUERTOS DE DURAZNO REHABILITACION DE HUERTAS DE DURAZNO REHABILITACION DE LIENZOS EN PARCELAS Y POTREROS

... ...

Introduccin a SQL

Pg . - 95

Subconsulta - Un ejemplo introductorio


La siguiente subconsulta obtiene un resultado igual que el ejemplo anterior. Utilizar un select anidado. select * from proyecto where fondo = (select fondo from fondo where nombre = Fondo para el Desarrollo Regional y el Empleo)

Resultado
ent_fed 18 18 18 18 18 18 18 18 18 18 18 18 18 18 ... ... proyec 97/S00221 97/S00095 97/S00001 97/S00016 97/S00053 97/S00054 97/S00055 97/S00056 97/S00057 97/S00058 ... ... 97/S00059 97/S00289 97/S00290 97/S00288 munici 14 14 4 998 18 16 14 7 7 7 7 7 7 7 ... ... eje_fis 1997 1997 1997 1997 1997 1997 1997 1997 1997 1997 ... ... 1997 1997 1997 1997 fondo 2 2 2 2 2 2 2 2 2 2 ... ... 2 2 2 2 progra TH SS SD SS TB TB TB TB TB TB ... ... TB TF TF TE subpro 02 06 01 08 01 01 01 01 01 01 ... ... 01 01 01 01 con_pro cat_pes 00 2 00 0 00 00 00 00 00 00 00 00 ... ... 00 00 00 00 0 0 0 0 0 0 0 0 0 2 2 2 ... ... nombre DESPIEDRE MANUAL EQUIPAMIENTO DE COCINA REHABILITACION DEL SISTEMA DE ALCANTARILLADO S. GASTOS DEL GRUPO OPERATIVO (JORNALEROS AGRICO. TORTILLERIA TORTILLERIA TORTILLERIA TORTILLERIA PANADERIA (TERMINACION) TIENDA DE ABASTO ... ... TORTILERIA REHABILITACION DE HUERTOS DE DURAZNO REHABILITACION DE HUERTAS DE DURAZNO REHABILITACION DE LIENZOS EN PARCELAS Y POTREROS

Introduccin a SQL

Pg . - 96

Subconsulta - Vista General


Una subconsulta es una clusula select, usada como una expresin

que forma parte de otra clusula select, update, insert o delete resultado dentro de la clusula exterior de consulta where

La subconsulta (select anidado) al ser evaluada substituye su

Las subconsultas son usadas: Porque algunas veces son ms fcil de entender que un join, el cual lleva a cabo algn propsito Para efectuar algunas tareas que en otro caso sera imposible realizar utilizando un join (por ejemplo usar una funcin agregada)

Sintaxis completa de subconsulta

select lista_select [ from { tabla } [ ,...] ] [ where condiciones ] {operador_de_comparacin} ( select lista_select_subconsulta [ from { tabla } [ ,...] [ where condiciones ] ) Notas de la sintaxis
Slo las columnas de la lista_select en la primera

declaracin select son desplegadas

La lista_select_subconsulta puede incluir slo un nombre

de columna, ms de una columna no se evaluar

Introduccin a SQL

Pg . - 97

Restricciones de Subconsultas
Si la clusula where de la consulta exterior incluye un nombre de

columna, sta necesitar un join compatible con el nombre de la columna en la lista_select_subconsulta into

Una subconsulta no puede incluir las clusulas order by, compute o El distinct no puede ser usado con subconsultas que incluyan una

clusula group by

Introduccin a SQL

Pg . - 98

Niveles Mltiples de Anidacin


Una subconsulta puede contener una ms subconsultas No existe un nivel mximo de anidamiento Ejemplo: (dos subconsultas) Listar los proyectos que se encuetran en propuesta por el municipio 2 select * from proyecto where munici = 2 and fase_pro = (select fase_pre from fase_pre where descri = 'Propuesta')

Resultado
ent_fed 18 18 18 18 proyec 97/S00139 97/S00020 97/S00021 97/S00022 munici 2 2 2 2 eje_fis 1997 1997 1997 1997 fondo 2 2 2 2 progra SS S5 S5 S5 subpro 06 07 07 07 con_pro cat_pes 00 0 00 00 00 0 0 0 nombre ORGANIZACION PARA EL CONSUMO (GRUPOS OPER.) PRODUCCION DE 50,000 PLANTAS MANTENIMIENTO DE 50,000 PLANTAS PLANTACION Y NOVILIZACION SOCIAL, CARGA Y DESCARGA DE 15,000 OPERATIVOS

Introduccin a SQL

Pg . - 99

Subconsultas que regresan Mltiples Renglones


Si la subconsulta regresa ms de un valor, debe usar in en la clusula

where de la consulta exterior en lugar de = Ejemplo Liste los oficios que se encuentran en aprobacin y su estructura financiera select num_ofi, tipo_inv, cantid from est_ofi where num_ofi in (select num_ofi from oficio where tipo_ofi in (select tipo_ofi from TIPO_OFI where descri like 'Aprobaci_n'))

Resultado
num_ofi COP-DPP-F1-5-0042 COP-DPP-F1-5-0042 COP-DPP-F1-5-0042 COP-DPP-F1-5-0004 COP-DPP-F1-5-0004 COP-DPP-F1-5-0004 COP-DPP-F1-5-0004 COP-DPP-F1-5-0004 COP-DPP-F1-5-0004 COP-DPP-F1-5-0033 COP-DPP-F1-5-0033 COP-DPP-F1-5-0033 ... ... 25-541711-F2-0033 25-541711-F2-0033 25-541711-F2-0033 25-541711-F2-0033 COP-DPP-FI-0160/97 COP-DPP-FI-0160/97 COP-DPP-F1-5-0188 COP-DPP-F1-5-0188 tipo_inv 1 2 5 1 2 5 1 2 5 1 2 5 ... ... 1 2 1 2 2 1 1 2 cantidad 200762.0000 35429.0000 59048.0000 56442.0000 9960.0000 16600.0000 115065.0000 20305.0000 33843.0000 286433.0000 50547.0000 84247.0000 ... ... 193253.0000 34103.0000 184375.0000 32537.0000 17159778.0000 97238744.0000 190140.0000 33554.0000

Introduccin a SQL

Pg . - 100

Subconsultas que regresan Mltiples Renglones (Continuacin)


Ejemplo Liste la clave de los proyectos, nombre y costo total de los especficos y que pertenecen al municipio de TEPEZALA. select proyec, nombre, costo_tot from proyecto where proyec in (select proyec from pro_esp where munici = (select munici from munici where nom_ofi = 'TEPEZALA'))

Resultado
proyec 97/C8012 97/08006 97/S00056 97/S00062 97/S00107 97/V17089 97/S00178 97C/08024 97/S00003 nombre CONSTRUCCION CERCO PERIMETRAL EN BENEFICIO HUMEDO DE CAFE EMPEDRADO DE CALLES COL. NAVARREO TORTILLERIA FRUTERIA Y TIENDA DE ABASTO MEJORAMIENTO DE TECHOS, PISOS Y MUROS BECAS NIOS ESC. PRIMARIA LEONA VICARIO T. V. HUERTO COMUNITARIO ESC. PRIM. " 20 DE NOVIEMBRE " CONSTRUCCION DE PLANTA DE TRATAMIENTO costo_tot 68590.0000 73830.0000 45865.0000 64310.0000 60000.0000 21712.0000 1245.0000 22656.0000 1817200.0000

Introduccin a SQL

Pg . - 101

Subconsultas con Operadores de Comparacin


Las subconsultas pueden realizar algunas tareas que las clusulas join no pueden hacer Una clusula where en una declaracin select no puede incluir una funcin agregada Una subconsulta puede incluir una funcin agregada Ejemplo (mayor que y una funcin agregada) Liste los proyectos, sus nombres y costo total de los que se encuentran en aprobacin; adems que el costo total de estos proyectos sea menor al promedio de las cantidades aprobadas de todos los proyectos. select proyec, nombre, costo_tot from proyecto where fase_pro = (select fase_pre from fase_pre where descri like 'Aprobaci_n') and costo_tot < (select avg (can_act) from est_fin where fase_pre = (select fase_pre from fase_pre where descri like 'Aprobaci_n')) Regresa error si una subconsulta obtiene ms de un valor para un operador de comparacin

Sintaxis

select lista_select [ from { tabla } [,...] ] [ where expresin { = | != | > | >= | < | <= } [ any | all ] ] (subconsulta)

Resultado
proyec 97/C07001 97/C13005 97/C13007 ... ... 97/C02045 97/C14029 nombre SISTEMA DE PURIFICACION DE AGUA ESC. PRIM. MIGUEL HIDALGO Y COSTILLA AMPLIACION RED ELECTRICA BARRIO DE EN MEDIO AMPLIACION RED ELECTRICA BARRIO DE ABAJO ... ... DESAYUNOS ESCOLARES ESC. PRIMARIA IGNACIO ZARAGOZA T.V. ESCUELA PRIMARIA JUAN ESCUTIA costo _tot 27105.0000 27763.0000 14048.0000 18548.0000 22656.0000

... ...

Introduccin a SQL

Pg . - 102

Ejemplo de error select proyec, nombre, costo_tot from proyecto where fase_pro = (select fase_pre from fase_pre where descri like 'Aprobaci_n') and costo_tot < (select can_act from est_fin where fase_pre = (select fase_pre from fase_pre where descri like 'Aprobaci_n')) Al ejecutar la instruccin indica Error: Subquery cannot return more than one result.

Subconsultas con Operadores de Comparacin (Continuacin)


Ejemplo (dos condiciones) Liste los proyectos que estn actualizados cuyo costo total sea menor al promedio de los costos totales de todos los proyectos (Propuesta, Actualizacin, Aprobacin, etc.) select * from proyecto where fase_pro = (select fase_pre from fase_pre where descri = Autorizacin) and costo_tot < (select avg(costo_tot) from proyecto)

Resultado
ent_fed 18 18 18 18 18 18 18 18 proyec 97/08006 97/C8012 97/S0005 6 97/S0006 2 97/S0010 7 97/S0017 8 97C/0802 4 97/V1708 9 munici 8 8 7 2 15 12 8 17 eje_fis 1997 1997 1997 1997 1997 1997 1997 1997 fondo 1 1 2 2 2 2 1 1 progra SE TF TB TB SH SS SB SB subpro 02 04 01 01 01 08 01 01 con_pro cat_pes 00 0 00 00 00 0B 00 00 00 0 0 0 0 0 1 1 nombre EMPEDRADO DE CALLES COL. NAVARREO CONSTRUCCION CERCO PERIMETRAL EN BENEFICIO ... TORTILLERIA FRUTERIA Y TIENDA DE ABASTO MEJORAMIENTO DE TECHOS, PISOS Y MUROS HUERTO COMUNITARIO ESC. PRIM. " 20 DE NOVIEMBRE " BECAS NIOS ESC. PRIMARIA LEONA VICARIO T. V.

Introduccin a SQL

Pg . - 103

Sumario
Una Subconsulta - es una clusula select, usada como una

expresin en parte de otra clusula select, update, insert, or delete.

El resultado de la subconsulta - sustituye valores dentro de la consulta exterior

Subconsulta - debe contener una o ms subconsultas

Sintaxis

select lista_select [ from { tabla } [,...] ] [ where condicin ] {operador de comparacin} ( select lista_select_subconsulta [ from { tabla } [ ,... ] [ where condiciones ] [ group by expresin [,...] ] [ having condicin ] [ order by { { tabla }. ] columna | nmero_lista_select | expresin } [ asc | desc] [,...] ] [ compute rengln ( columna ) [ ,... ] ] [ by columna [ ,... ] ] )

Introduccin a SQL

Pg . - 104

También podría gustarte