Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccin a SQL
Pg . - 1
Introduccin a SQL
Pg . - 2
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
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
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.
Introduccin a SQL
Pg . - 8
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
Base de datos - Un cuerpo de datos en el cual existe una relacin Sistema manejador de base de datos - Programa que permite la
Introduccin a SQL
Pg . - 10
Introduccin a SQL
Pg . - 11
Introduccin a SQL
Pg . - 12
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
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
Introduccin a SQL
Pg . - 15
Introduccin a SQL
Pg . - 16
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
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
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
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
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
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
BD BD
SQL Anywhere
SURCE
BD IMCLASS
NOMINA
Introduccin a SQL
Pg . - 22
datos
Ejemplo (todas las columnas) * indica todas las columnas de la tabla PROYECTO Select * from PROYECTO
Sintaxis
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
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
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
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
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
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
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
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
Nota
Use comillas en los tipos de datos char, varchar, y datetime; por ejemplo: where proyec = 97/C16002
Introduccin a SQL
Pg . - 32
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
Introduccin a SQL
Pg . - 33
select/from/where - Rangos
between es usado para especificar un rango inclusivo : los valores
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
Introduccin a SQL
Pg . - 34
Introduccin a SQL
Pg . - 35
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%
Introduccin a SQL
Pg . - 36
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
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
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
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
valores
Introduccin a SQL
Pg . - 44
Introduccin a SQL
Pg . - 45
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
Introduccin a SQL
Pg . - 48
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
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
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
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
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
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
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
Qu salida produce la siguiente instruccin? select ent_fed, proyec munici from PROYECTO where progra = TH
Introduccin a SQL
Pg . - 58
Resultado
El proyecto es: El proyecto es: proyec 97/C02016
Introduccin a SQL
Pg . - 59
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 ] [, ... ] ]
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
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
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
Introduccin a SQL
Pg . - 66
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
min encuentra el valor menor en la columna Ejemplo select min(costo_tot) from PROYECTO Resultado min(costo_tot)
100.0000
Introduccin a SQL
Pg . - 68
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
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
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
. . .
Introduccin a SQL
Pg . - 73
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
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
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
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 .
munici
eje_fis
1997 1997 1997
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
2. Busque los proyectos para los cuales el fondo sea igual a 2 select * from proyecto where fondo = 2
... ...
Introduccin a SQL
Pg . - 95
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
que forma parte de otra clusula select, update, insert o delete 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)
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
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
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
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
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
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.
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
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