Sie sind auf Seite 1von 59

Introducci

n
a
SQL

Introduccin a SQL Pg . - 1
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.

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 . - 2
Base de Datos
Definicin: Un cuerpo o conjunto de datos en el cual existen
relaciones entre sus elementos

Ejemplo:
SURCE97
SURCE97
Proyecto
Mov_Est

Est_fin

Oficio
Ofi_Pro

Introduccin a SQL Pg . - 3
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 SURCE97
SQL anywhere
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
Rengln
Anlogo a un registro de un archivo
Todos los renglones de una tabla tienen el mismo conjunto de
columnas
Llave Primaria

Una o ms columnas cuyo contenido es nico dentro de la


tabla y puede ser usado para identificar los renglones de otra
tabla.
Llave Fornea

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.

Tablas

Nombres de Columnas

Ent_fed Proyec Munici Eje_fis


22 97/000001 01 1997

Renglones 22 97/000002 02 1997

22 97/000003 01 1997

Columnas

Introduccin a SQL Pg . - 4
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.

Tabla Proyecto
Llave Primaria

Ent_fed Proyec Munici Eje_fis


22 97/000001 01 1997

22 97/000002 02 1997

22 97/000003 01 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 . - 5
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.

Sumario

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


obtener y manipular datos de una base de datos.

Base de datos - Un cuerpo de datos en el cual existe una relacin


entre sus elementos.

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 . - 6
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

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 Resultado con KEY JOIN


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

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

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

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 select PRO_ESP.proyec, CAR_GEN.descri


from PRO_ESP key left outer join CAR_GEN from PRO_ESP key join CAR_GEN
where PRO_ESP.munici = 1 where PRO_ESP.munici = 1
order by PRO_ESP.proyec order by PRO_ESP.proyec

proyec descri proyec descri


00053 (NULL) 97/000007 CONSTRUCCION DE 4 AULAS TIPO
REGIONAL EN E.P.E.LA ESPERANZA
97/000006 (NULL) sgc01 Pavimentacin de Av. Prueba mediante maquinaria
de plancha al calor.
97/000007 CONSTRUCCION DE 4 AULAS TIPO
REGIONAL EN E.P.E.LA ESPERANZA
97/000008 (NULL)
97/000009 (NULL)
97/000029 (NULL)
97/000030 (NULL)
97/000031 (NULL)
97/000063 (NULL)
97/000064 (NULL)
97/000065 (NULL)
97/000066 (NULL)
97/000067 (NLL)

Introduccin a SQL Pg . - 8
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)

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

Introduccin a SQL Pg . - 9
proyec fondo nombre progra descri subpro descri
97/000029 2 Fondo para el Desarrollo Regional y el SG ELECTRIFICACION 01 Urbana
Empleo
97/000030 2 Fondo para el Desarrollo Regional y el SG ELECTRIFICACION 01 Urbana
Empleo
97/000031 2 Fondo para el Desarrollo Regional y el SG ELECTRIFICACION 01 Urbana
Empleo
97/000063 2 Fondo para el Desarrollo Regional y el SD ALCANTARILLADO 03 Construccin
Empleo
97/000064 2 Fondo para el Desarrollo Regional y el SD ALCANTARILLADO 03 Construccin
Empleo
97/000065 2 Fondo para el Desarrollo Regional y el SD ALCANTARILLADO 03 Construccin
Empleo
97/001905 2 Fondo para el Desarrollo Regional y el SS ASISTENCIA SOCIAL Y SERVICIOS 01 Nutricin,
Empleo COMUNITARIOS Alimentacin y
Salud
97/000069 2 Fondo para el Desarrollo Regional y el SI VIALIDADES URBANAS 01 Reconstruccin
Empleo
97/000070 2 Fondo para el Desarrollo Regional y el SI VIALIDADES URBANAS 01 Reconstruccin
Empleo
97/000071 2 Fondo para el Desarrollo Regional y el SI VIALIDADES URBANAS 01 Reconstruccin
Empleo
97/000072 2 Fondo para el Desarrollo Regional y el SI VIALIDADES URBANAS 01 Reconstruccin
Empleo
97/000066 2 Fondo para el Desarrollo Regional y el SI VIALIDADES URBANAS 01 Reconstruccin
Empleo
97/000067 2 Fondo para el Desarrollo Regional y el SI VIALIDADES URBANAS 01 Reconstruccin
Empleo
97/000068 2 Fondo para el Desarrollo Regional y el SI VIALIDADES URBANAS 01 Reconstruccin
Empleo
97/000006 2 Fondo para el Desarrollo Regional y el SJ INFRAESTRUCTURA EDUCATIVA 02 Construccin
Empleo
97/000007 2 Fondo para el Desarrollo Regional y el SJ INFRAESTRUCTURA EDUCATIVA 02 Construccin
Empleo
97/000008 2 Fondo para el Desarrollo Regional y el SJ INFRAESTRUCTURA EDUCATIVA 02 Construccin
Empleo
97/000009 2 Fondo para el Desarrollo Regional y el SJ INFRAESTRUCTURA EDUCATIVA 02 Construccin
Empleo

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 nom_ofi nombre
97/000055 Tijuana TIJUANA
97/000056 Tijuana TIJUANA
97/000076 Tecate LAZARO CARDENAS, COL.
97/000029 Ensenada POPULAR 89, FRACC
97/000030 Ensenada POPULAR 89, FRACC
97/000031 Ensenada POPULAR 89, FRACC
97/000048 Mexicali PROGRESO,COL.
97/000049 Mexicali PROGRESO,COL.
97/000050 Mexicali PROGRESO,COL.
97/000043 Tijuana CUMBRES, COL.
97/000044 Tijuana TIJUANA
97/000045 Tijuana LAZARO CARDENAS, COL.
97/000077 Tecate LAZARO CARDENAS, COL.
97/000078 Tecate LAZARO CARDENAS, COL.
97/000046 Tijuana CUMBRES, COL.
97/000047 Tijuana (NULL)
97/000057 Tijuana (NULL)
97/000058 Tijuana (NULL)

Introduccin a SQL Pg . - 10
97/000063 Ensenada RUIZ CORTINES
97/000064 Ensenada RUIZ CORTINES
97/000065 Ensenada RUIZ CORTINES
97/000051 Tijuana MURUA, FRACC.
97/000052 Tijuana LOMAS TAURINAS,COL.
97/000053 Tijuana (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 inv_federal inv_estatal
97/000048 736607.0000 245536.0000
97/000049 9375.0000 9375.0000
97/000050 (NULL) (NULL)
97/000472 97500.0000 32500.0000
97/000119 (NULL) (NULL)
97/000033 679330.0000 226443.0000
97/000034 8646.0000 8646.0000
97/000035 (NULL) (NULL)
97/000036 538978.0000 179659.0000
97/000037 1502771.0000 500924.0000
97/000038 19126.0000 19126.0000
97/000039 (NULL) (NULL)
97/000040 262319.0000 87440.0000
97/000041 452413.0000 150804.0000

Introduccin a SQL Pg . - 11
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

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 . - 12
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.

Seleccionar una Base de Datos


Desde SQL AnyWhere se puede seleccionar la base de datos

BD
BD
NOMINA
BD
SQL Anywhere SURCE
IMCLASS

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

Introduccin a SQL Pg . - 13
Sintaxis select lista_select
from lista_tabla

Resultado

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

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 . - 14
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 munici
97/C05003 5
97/C05004 5
97/C05001 5
97/C07002 7
97/C07001 7
97/C13003 13
97/C03006 3
97/C16002 16
97/C13005 13
97/C13006 13
97/C13007 13
97/C13008 13
97/C13004 13
97/C13001 13
97/C13002 13
97/C05002 5
97/C16001 16
97/C05005 5
. .
. .
. .

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 proyec
5 97/C05003
5 97/C05004
5 97/C05001

Introduccin a SQL Pg . - 15
7 97/C07002
7 97/C07001
13 97/C13003
3 97/C03006
16 97/C16002
13 97/C13005
13 97/C13006
13 97/C13007
13 97/C13008
13 97/C13004
13 97/C13001
13 97/C13002
5 97/C05002
16 97/C16001
5 97/C05005
. .
. .
. .

Introduccin a SQL Pg . - 16
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 Utilizando distinct


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

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

Introduccin a SQL Pg . - 17
select progra, subpro select distinct progra, subpro
from PROYECTO from PROYECTO
progra subpro progra subpro
SC 01 SC 01
SE 03 SE 03
SE 02 SE 02
SJ 02 SJ 02
SK 02 SK 02
SG 01 SG 01
SE 02 SG 02
SG 01 SD 02
SG 01 SE 01
SG 01 UB 02
SG 01 SC 03
SG 01 SD 01
SG 02 SF 02
SE 02 UB 03
SD 02 SL 02
SJ 02 SC 02
SG 02 SE 04
SJ 02 TH 02
SJ 02 UB 01
SJ 02 SD 03
. . . .
. . . .
. . . .

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 . - 18
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 munici
97/C02001 2
97/C02002 2
97/C02003 2
97/C02004 2
97/C02005 2
97/C02007 2
97/C02008 2
97/C02009 2
97/C02010 2
97/C02006 2
97/C02013 2
97/C02014 2
97/C02011 2
97/C02012 2
97/C02016 2
97/C02015 2
97/C02017 2
97/C02018 2
97/C02019 2
97/C02020 2
97/C02021 2

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

Introduccin a SQL Pg . - 19
Ejemplo de NOT select proyec, munici
from PRO_ESP
where munici not between 1 and 5

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

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 <> es igual a !=

menor que !< es igual a >=

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

Ejemplo Busca los proyectos que no pertenezcan al programa SE


No igual select proyec, nombre
from PROYECTO
where progra != SE

Ejemplo Busca los proyectos con un costo total mayor a $300,000


Mayor que select *
from PROYECTO
where costo_tot > 300000
Ejemplo Busca los nombres de los proyectos que su primer letra sea
Menor que menor a C
select nombre
from PROYECTO
where nombre < C

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

Introduccin a SQL Pg . - 21
num_ofi tipo_inv cantid
COP-DPP-F1-5-0013 1 88850.0000
COP-DPP-F1-5-0037 1 80933.0000
COP-DPP-F1-5-0012 1 91285.0000
COP-DPP-F1-5-0040 1 82209.0000
COP-DPP-F1-5-0017 1 97693.0000
COP-DPP-F1-5-0067 1 82571.0000

Resultado not between


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

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

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%

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

Resultado where nombre not like P%


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

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 Resultado
where nombre where nombre
like [BDP]% like [F-P]%
nombre nombre
PAVIMENTACION CALLE JUAREZ ENTRE 20 DE NOV. Y FCO. COSIO INTRODUCCION DEL SISTEMA DE AGUA POTABLE COL. LOS LIRIOS
INTRODUCCION DEL SISTEMA DE AGUA POTABLE COL. LOS COLOMOS
PAVIMENTACION DE CALLES: ABASOLO, ISMAEL ZUIGA, MORELOS Y 20 DE NOVIEMBRE
INTRODUCCION DEL SISTEMA DE AGUA POTABLE COL. NUEVAS PALOMAS
DRENAJE PLUVIAL EN UNIDAD DEPORTIVA INTRODUCION DEL SISTEMA DE AGUA POTABLE COL. BENITO JUAREZ OTE.
PAVIMENTACION CALLE JUAREZ ENTRE 20 DE NOV. Y FCO. COSIO
DESPIEDRE AGRICOLA CON MAQUINARIA
PAVIMENTACION DE CALLES: ABASOLO, ISMAEL ZUIGA, MORELOS Y 20 DE NOVIEMBRE
BALASTREO DE CALLES COL. SAN RAFAEL NIVELACION Y BALASTREO DE CALLES EN COL. LAZARO CARDENAS
IMPLANTACION DE PASTO Y CERCO PERIMETRAL DE 100 HAS.
BALASTREO DE CAMINO SACACOSECHAS PTA. AZUL- LADRILLERAS
PROTECCION DE LAS VENTANAS EN 3 AULAS ESC. PRIM CUAUHTEMOC
PROTECCION DE LAS VENTANAS EN 3 AULAS ESC. PRIM CUAUHTEMOC GASTOS DEL GRUPO OPERATIVO

Introduccin a SQL Pg . - 23
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 progra
97/C13002 SD
97/C17037 SD
97/C17038 SD
97/C02008 SL
97/C02014 SD
97/C02018 SD
97/C15005 SL
97/C04001 SD
97/C08005 SD
97/S00001 SD
97/C17033 SD
97/C17034 SD
97/C17035 SD
97/C17036 SD
97/C18005 SD
97/C18006 SD
97/C04008 SD
97/C18008 SD
97/C03017 SL

select/from/where - Conectores condicionales


Conectores condicionales con operadores lgicos: and/or

and
Conecta dos o ms condiciones
Regresa resultado slo cuando todas las condiciones son
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

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

Introduccin a SQL Pg . - 24
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 progra mod_eje
97/C13003 SG C
97/C16002 SG C
97/C13005 SG C
97/C13006 SG C
97/C13007 SG C
97/C13008 SG C
97/C13004 SG C
97/C13002 SD AM
97/C16001 SG C
97/C17039 SC C
97/C17040 SC C
97/C17041 SC C
97/C17042 SC C
97/C17037 SD C
97/C17038 SD C
97/C06015 SG C
97/06016 SG C
97/C06017 SG C
97/C06018 SG C
97/C02002 SF C
97/C02003 SF C
97/C02014 SD AM
97/C02018 SD AM
97/C20005 SJ C
97/C15001 UB C
97/C13012 UB C
. . .
. . .
. . .

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 progra costo_tot
97/C07001 SK 27105.0000

Introduccin a SQL Pg . - 25
97/C17008 SE 287175.0000
97/C17007 SE 213456.0000
97/C02011 SE 286424.0000
97/C03005 SE 326410.0000
97/C10002 SE 256529.0000
97/C19016 SK 32479.0000
97/C19006 SK 7078.0000
97/C03018 SK 46383.0000
97/C03019 SK 23460.0000
97/C14014 SK 92587.0000
97/C07006 SK 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 progra costo_tot
97/C17008 SE 287175.0000
97/C17007 SE 213456.0000
97/C02011 SE 286424.0000
97/C03005 SE 326410.0000
97/C10002 SE 256529.0000

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

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 . - 26
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

CAPITULO III

VISTAS Y
PROCEDIMIENTOS
ALMACENADOS.

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 . - 27
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

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 nom_progra subpro nom_subpro
S5 PROTECCION Y PRESERVACION ECOLOGICA 01 Reforestacin

Introduccin a SQL Pg . - 28
SB ESTIMULOS A LA EDUCACION BASICA 01 Apoyo a la Educacin Primaria
SC AGUA POTABLE 01 Rehabilitacin
SC AGUA POTABLE 02 Ampliacin
SC AGUA POTABLE 03 Construccin
SC AGUA POTABLE 04 Conduccin de Agua
SC AGUA POTABLE 05 Dotacin de Agua
SD ALCANTARILLADO 01 Rehabilitacin
SD ALCANTARILLADO 02 Ampliacin
SD ALCANTARILLADO 03 Construccin
SE URBANIZACION 01 Construccin de Calles
SE URBANIZACION 02 Empedrado y Adoquinamiento de Calles
SE URBANIZACION 03 Guarniciones y Banquetas
SE URBANIZACION 04 Construccin y Remodelacin de Plazas Cvicas y Jardines
SE URBANIZACION 05 Alumbrado Pblico
SF PAVIMENTACION EN COLONIAS POPULARES 01 Concreto
SF PAVIMENTACION EN COLONIAS POPULARES 02 Asfalto
SG ELECTRIFICACION 01 Urbana
SG ELECTRIFICACION 02 Rural

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

Introduccin a SQL Pg . - 29
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

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

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

Introduccin a SQL Pg . - 30
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;

liminar 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 dep_pro nom_dep_pro dep_nor nom_dep_nor dep_eje nom_dep_eje


97/001067 00000020 SECRETARIA DE 00000020 SECRETARIA DE 02000503 XV AYUNTAMIENTO DE
DESARROLLO DESARROLLO ENSENADA
SOCIAL SOCIAL
97/000610 02000112 GOBIERNO DEL 02000216 I. C. B. C. 02000101 S.A.H.O.P.E.
ESTADO
97/001069 02000112 GOBIERNO DEL 00000020 SECRETARIA DE 02000106 SRIA. DE LA
ESTADO DESARROLLO CONTRALORIA
SOCIAL
97/000428 02000112 GOBIERNO DEL 02000109 S. E. B. S. 02000101 S.A.H.O.P.E.
ESTADO
97/000905 00000020 SECRETARIA DE 00000020 SECRETARIA DE 00000020 SECRETARIA DE
DESARROLLO DESARROLLO DESARROLLO SOCIAL
SOCIAL SOCIAL
97PRUEBA 02000503 XV 00000018 SECRETARIA DE 02000503 XV AYUNTAMIENTO DE
2040 AYUNTAMIENTO ENERGIA, MINAS ENSENADA
DE ENSENADA E INDUSTRIA
PARAESTATAL
C-00053 00000011 SECRETARIA DE 02000214 C O P LAD E 00000020 SECRETARIA DE
EDUCACION DESARROLLO SOCIAL
PUBLICA
C-00053A 00000011 SECRETARIA DE 02000214 C O P LAD E 00000020 SECRETARIA DE
EDUCACION DESARROLLO SOCIAL
PUBLICA

Introduccin a SQL Pg . - 31
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 dep_pro nom_dep_pro dep_nor nom_dep_nor dep_eje nom_dep_eje
97/001067 00000020 SECRETARIA DE 00000020 SECRETARIA DE 02000503 XV AYUNTAMIENTO DE
DESARROLLO DESARROLLO ENSENADA
SOCIAL SOCIAL
97/000610 02000112 GOBIERNO DEL 02000216 I. C. B. C. 02000101 S.A.H.O.P.E.
ESTADO
97/001069 02000112 GOBIERNO DEL 00000020 SECRETARIA DE 02000106 SRIA. DE LA
ESTADO DESARROLLO CONTRALORIA
SOCIAL
97/000428 02000112 GOBIERNO DEL 02000109 S. E. B. S. 02000101 S.A.H.O.P.E.
ESTADO
97/000905 00000020 SECRETARIA DE 00000020 SECRETARIA DE 00000020 SECRETARIA DE
DESARROLLO DESARROLLO DESARROLLO SOCIAL
SOCIAL SOCIAL
97PRUEBA 02000503 XV 00000018 SECRETARIA DE 02000503 XV AYUNTAMIENTO DE
2040 AYUNTAMIENTO ENERGIA, MINAS ENSENADA
DE ENSENADA E INDUSTRIA
PARAESTATAL
C-00053 00000011 SECRETARIA DE 02000214 C O P LAD E 00000020 SECRETARIA DE
EDUCACION DESARROLLO SOCIAL
PUBLICA

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 . - 32
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.

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 . - 33
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 proyec munici
18 97/C02016 2
18 97/C13013 13
18 97/C02021 2

Resultado no usando coma


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

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: proyec
El proyecto es: 97/C02016

Introduccin a SQL Pg . - 34
xpresiones 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 cantid * costo
97/C07002 252535640.476900
97/S00001 569824.000000

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

Resultado
proyec costo_tot / 12
97/C02016 22638.0833333

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 . - 35
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: Resultado:
order by proyec order by munici, proyec
proyec munici proyec munici
96/C20007 20 97/C02001 2
97/06016 6 97/C02002 2
97/08006 8 97/C02003 2
97/C02001 2 97/C02004 2
97/C02002 2 97/C02005 2
97/C02003 2 97/C02006 2
97/C02004 2 97/C02007 2
97/C02005 2 97/C02008 2
97/C02006 2 97/C02009 2
97/C02007 2 97/C02010 2
97/C02008 2 97/C02011 2
97/C02009 2 97/C02012 2
97/C02010 2 97/C02013 2
97/C02011 2 97/C02014 2
97/C02012 2 97/C02015 2
97/C02013 2 97/C02016 2
. . . .
. . . .

Introduccin a SQL Pg . - 36
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 proyec
532.4166667 97/C17029
589.8333333 97/C19006
665.5000000 97/C03011
692.5000000 97/C08005
881.1666667 97/C02010
884.9166667 97/C03009
929.4166667 97/C14003
956.5000000 97/C03016
964.8333333 97/C02008
988.6666667 97/C13009
1055.1666667 97/C06015
. .
. .

Resultado
order by progra (la columna no esta en lista_select)
proyec munici
97/C05003 5
97/C17039 17
97/C17040 17
97/C17041 17
97/C17042 17
97/C02010 2
97/C02006 2
97/C02013 2
. .
. .

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 . - 37
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.

Funciones Agregadas
Funcin Obtiene
count(*) Nmero de renglones en una tabla
count(nombre_columna) Nmero de renglones en la columna
que no contengan valor null
max(nombre_columna) Valor mximo en la columna
min(nombre_columna) Valor mnimo en la columna
sum(nombre_columna) Valor total de la columna
avg(nombre_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 ]

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

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

Introduccin a SQL Pg . - 39
proyec can_act
97/C07002 68670.0000
97/C07002 12118.0000
97/C07002 20197.0000

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) max(costo_tot)


100.0000 976800.0000

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 . - 40
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 costo_promedio
SC 66207.62500000
SE 87279.39560440
SJ 81132.82758621
SK 44475.42857143
SG 136395.71428571
SD 290927.43750000
UB 113651.93103448
SF 195730.50000000
. .
. .
. .

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

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

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 sum(costo_tot)
18018002 606305.0000
18018003 692703.0000
18018005 448609.0000
18018006 445752.0000
18018008 580049.0000
18018010 359305.0000
18018013 125663.0000
18018014 273952.0000
18018015 443685.0000
18018017 3370364.0000
18018018 29937.0000
18018019 277525.0000
18018020 288576.0000

Introduccin a SQL Pg . - 42
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 sub_pro avg(costo_tot)


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

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

Introduccin a SQL Pg . - 43
Sintaxis del select [ distinct ] lista_select
elemento select [ from tabla [, ... ] ]
[ where condiciones ]
[ group by [all] expresin_sin_funcin_agregada [, ... ] ]
[ having condiciones ]
[ order by { nombre_columna
| nmero_lista_select
| expresin } [ asc | desc ] [, ... ] ]

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.

Joins

MUNICI
munici ent_fed nom_ofi nom_com tipo_num ...
0 0 Municipio para Municipio para AE ...
Areas Centrales Areas Centrales
1 18 Municipio para Delegacin AE ...
Delegacin
2 18 Municipio para Coplade AE ...
Coplade
3 18 ACAPONETA ACAPONETA B1 .

. . . . . .

. . . . . .

. . . . . .

PROYECTO
munici ent_fed proyec eje_fis fondo progra ...
1 18 97/C05003 1997 1 SC ...
1 18 97/C05004 1997 1 SE ...
2 18 97/C05001 1997 1 SE ...
2 18 97/C07002 1997 1 SJ ...
2 18 97/C07001 1997 1 SK ...
. . . . . . .
. . . . . . .
. . . . . . .

Introduccin a SQL Pg . - 44
Consultar dos tablas

MUNICI PROYECTO
ent_fed munici ent_fed proyec munici eje_fis
18 9999 18 97/C05004 5 1997
18 9998 18 97/C05001 5 1997
18 1 18 97/C07002 7 1997
. .

TABLA RESULTANTE
ent_fed munici proyec munici eje_fis
18 9999 97/C05004 5 1997
18 9998 97/C05001 5 1997
18 1 97/C07002 7 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

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

Operacin Join

Introduccin a SQL Pg . - 45
PROYECTO OFI_PRO OFICIO
ent_fed N ent_fed 1 num_ofi
proyec proyec ent_emi
munici num_ofi N ent_rec
eje_fis 1 ent_emi lis_mun
fondo munici eje_fis
progra lug_reg fondo
subpro tipo_ofi
con_pro fec_emi
cat_pes fec_reg
nombre emisor
tipo_cob recept
fase_pro ofi_rel
costo_tot tipo_aso
mod_inv lug_reg
sub_inv
mod_reg
mod_eje
lineam
dep_pro
dep_nor
dep_eje
ele_bm
lug_reg

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


tablas

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 . - 46
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 fondo tipo_ofi tipo_inv cantid

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

OFICIO EST_OFI

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 benefi

1800012 C. JOSE FELIX TORRES


HARO,\X0D\X0APRESIDENTE MUNICIPAL
1800164 C. SALVADOR AGUIAR FREGOSO
1800159 C. SALVADOR AGUIAR FREGOSO
1800160 C. SALVADOR AGUIAR FREGOSO
1800161 C. SALVADOR AGUIAR FREGOSO
... ...
... ...
1800378 C. FELIPE HARO FREGOSO
1800379 C. FELIPE HARO FREGOSO
1800380 C. FELIPE HARO FREGOSO
1800381 C. FELIPE HARO FREGOSO
1800397 C.P. JUAN RAMON CERVANTES GOMEZ

Introduccin a SQL Pg . - 47
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 ben_ind ava_fin ava_fis

96/C09046 60 20.00 20.00

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 proyec
Fondo para el Desarrollo Regional y el Empleo 97/C05003
Fondo para el Desarrollo Regional y el Empleo 97/C05004
Fondo para el Desarrollo Regional y el Empleo 97/C05001
Fondo para el Desarrollo Regional y el Empleo 97/C07002
Fondo para el Desarrollo Regional y el Empleo 97/C07001
Fondo para el Desarrollo Regional y el Empleo 97/C14027
Fondo para el Desarrollo Regional y el Empleo 97/C02044
Fondo para el Desarrollo Regional y el Empleo 97/C14028
Fondo para el Desarrollo Regional y el Empleo 97/C02045
Fondo para el Desarrollo Regional y el Empleo 97/C14029
... ...
... ...
Fondo de Desarrollo Social Municipal 97/C05003
Fondo de Desarrollo Social Municipal 97/C05004
Fondo de Desarrollo Social Municipal 97/C05001
Fondo de Desarrollo Social Municipal 97/C07002
Fondo de Desarrollo Social Municipal 97/C14027
Fondo de Desarrollo Social Municipal 97/C02044
Fondo de Desarrollo Social Municipal 97/C14028
Fondo de Desarrollo Social Municipal 97/C02045
Fondo de Desarrollo Social Municipal 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 . - 48
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 emisor recept tipo_inv cantid
001/97 AYTO. DE JALA SEDESOL 1 193253.0000
001/97 AYTO. DE JALA SEDESOL 2 34103.0000
001/97 AYTO. DE JALA SEDESOL 1 184375.0000
001/97 AYTO. DE JALA SEDESOL 2 32537.0000
002/97 AYTO. DE TEPIC SEDESOL 1 63750.0000
002/97 AYTO. DE TEPIC SEDESOL 2 11250.0000
003/97 AYTO. DE SAN BLAS SEDESOL 1 27971.0000
003/97 AYTO. DE SAN BLAS SEDESOL 2 4936.0000
0036/97 AYTO. DE SANTIAGO SEDESOL 1 18329.0000
0036/97 AYTO. DE SANTIAGO SEDESOL 2 3235.0000

OA-CPDM-130-97 AYTO. DE EL NAYAR SEDESOL 1 11420.0000


OA-CPDM-130-97 AYTO. DE EL NAYAR SEDESOL 2 2015.0000
OA-CPDM-130-97 AYTO. DE EL NAYAR SEDESOL 1 2317.0000
OA-CPDM-130-97 AYTO. DE EL NAYAR SEDESOL 2 409.0000
OA-CPDM-130-97 AYTO. DE EL NAYAR SEDESOL 1 156290.0000
OA-CPDM-130-97 AYTO. DE EL NAYAR SEDESOL 2 27580.0000
S/N/97 SEDESOL SEDESOL 1 2731000.0000
S/N/97 SEDESOL SEDESOL 2 409650.0000
S/N004 SEDESOL (JORN.AGR.) SEDESOL 1 243544.0000
S/N004 SEDESOL (JORN.AGR.) SEDESOL 2 42978.0000

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 emisor recept sum(EST_OFI.cantid)

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

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 num_ofi emisor recept


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

Introduccin a SQL Pg . - 50
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 emisor recept tipo_inv cantid


COP-DPP-F1-5-0030 GOB. DEL ESTADO AYTO. DE IXTLAN DEL RIO 2 5240.0000
COP-DPP-F1-5-0026 GOB. DEL ESTADO AYTO. STA. MA. DEL ORO 1 7584.0000
COP-DPP-F1-5-0026 GOB. DEL ESTADO AYTO. STA. MA. DEL ORO 2 1338.0000
COP-DPP-F1-5-0026 GOB. DEL ESTADO AYTO. STA. MA. DEL ORO 5 2231.0000
COP-DPP-F1-5-0026 GOB. DEL ESTADO AYTO. STA. MA. DEL ORO 2 7035.0000
COP-DPP-F1-5-0036 GOB. DEL ESTADO AYTO. AMATLAN DE CAAS 2 8658.0000
COP-DPP-F1-5-0015 GOB. DEL ESTADO AYTO. AMATLAN DE CAAS 2 3012.0000
... ... ... ... ...
... ... ... ... ...
25-541711-F2-0030 SEDESOL AYTO. DE ACAPONETA 2 1470.0000
25-541711-F2-0030 SEDESOL AYTO. DE ACAPONETA 2 3966.0000
25-541711-F2-0031 SEDESOL AYTO. DE EL NAYAR 2 2015.0000
25-541711-F2-0031 SEDESOL AYTO. DE EL NAYAR 1 2317.0000
25-541711-F2-0031 SEDESOL AYTO. DE EL NAYAR 2 409.0000

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

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

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.

Introduccin a SQL Pg . - 52
Sintaxis del alias select lista_select
from nombre_tabla nombre_alias1, nombre_tabla
nombre_alias2
where nombre_alias1.nombre_columna =
nombre_alias2.nombre_columna

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).

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

Introduccin a SQL Pg . - 53
18 97/S00290 7 1997 2 TF 01 00 2 REHABILITACION DE
HUERTAS DE DURAZNO
18 97/S00288 7 1997 2 TE 01 00 2 REHABILITACION DE LIENZOS
EN PARCELAS Y POTREROS

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

Subconsulta - Vista General

Una subconsulta es una clusula select, usada como una expresin


que forma parte de otra clusula select, update, insert o delete

La subconsulta (select anidado) al ser evaluada substituye su


resultado dentro de la clusula exterior de consulta where

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 select lista_select


de subconsulta [ from { tabla } [ ,...] ]
[ where condiciones ] {operador_de_comparacin}
( select lista_select_subconsulta
[ from { tabla } [ ,...]

Introduccin a SQL Pg . - 54
[ 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

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

Una subconsulta no puede incluir las clusulas order by, compute o


into

El distinct no puede ser usado con subconsultas que incluyan una


clusula group by

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 proyec munici eje_fis fondo progra subpro con_pro cat_pes nombre
18 97/S00139 2 1997 2 SS 06 00 0 ORGANIZACION PARA EL
CONSUMO (GRUPOS OPER.)
18 97/S00020 2 1997 2 S5 07 00 0 PRODUCCION DE 50,000
PLANTAS
18 97/S00021 2 1997 2 S5 07 00 0 MANTENIMIENTO DE
50,000 PLANTAS
18 97/S00022 2 1997 2 S5 07 00 0 PLANTACION Y

Introduccin a SQL Pg . - 55
NOVILIZACION SOCIAL,
CARGA Y DESCARGA DE
15,000 OPERATIVOS

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

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

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

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

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 <

Introduccin a SQL Pg . - 57
(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 proyec munici eje_fis fondo progra subpro con_pro cat_pes nombre
18 97/08006 8 1997 1 SE 02 00 0 EMPEDRADO DE CALLES
COL. NAVARREO
18 97/C8012 8 1997 1 TF 04 00 0 CONSTRUCCION CERCO
PERIMETRAL EN
BENEFICIO ...
18 7 1997 2 TB 01 00 0 TORTILLERIA
97/S00056
18 2 1997 2 TB 01 00 0 FRUTERIA Y TIENDA DE
97/S00062 ABASTO
18 15 1997 2 SH 01 0B 0 MEJORAMIENTO DE
97/S00107 TECHOS, PISOS Y MUROS
18 12 1997 2 SS 08 00 0 HUERTO COMUNITARIO
97/S00178
18 8 1997 1 SB 01 00 1 ESC. PRIM. " 20 DE
97C/0802 NOVIEMBRE "
4
18 17 1997 1 SB 01 00 1 BECAS NIOS ESC.
97/V1708 PRIMARIA LEONA VICARIO
9 T. V.

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 . - 58
Introduccin a SQL Pg . - 59

Das könnte Ihnen auch gefallen