Beruflich Dokumente
Kultur Dokumente
net
Introducción
a
SQL
todoenmanuales.blogspot.com Página 1
www.maestrodelacomputacion.net
todoenmanuales.blogspot.com Página 2
www.maestrodelacomputacion.net
Definir SQL
Definir un sistema manejador de bases de datos relacional
Listar y definir los términos de una base de datos
Listar las tablas que están en la base de datos IMCLASS
Reconocer como se insertan y extraen datos desde una base de
datos.
todoenmanuales.blogspot.com Página 3
www.maestrodelacomputacion.net
SQL
todoenmanuales.blogspot.com Página 4
www.maestrodelacomputacion.net
Base de Datos
Definición: 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
todoenmanuales.blogspot.com Página 5
www.maestrodelacomputacion.net
Administrador
BD
Usuarios SURCE97
SQL anywhere
Servidor
Llave Foránea Una o más columnas de una tabla que existe como llave
primaria en otra tabla. Los nombres de las columnas de las
llaves foráneas no tienen que ser iguales a los nombres de las
columnas de las llaves primarias.
todoenmanuales.blogspot.com Página 6
www.maestrodelacomputacion.net
Tablas
Nombres de Columnas
22 97/000003 01 1997
Columnas
Llaves Primarias
Cada renglón puede ser accesado por una “llave primaria” única
todoenmanuales.blogspot.com Página 7
www.maestrodelacomputacion.net
Tabla Proyecto
Llave Primaria
22 97/000002 02 1997
22 97/000003 01 1997
La concatenación de “Ent_fed + Proyec” es un identificador único para cada producto, por eso
es una llave primaria.
insert PROYEC
(„26‟,‟97/000002‟,‟02‟,‟SS‟)
todoenmanuales.blogspot.com Página 8
www.maestrodelacomputacion.net
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
Usar el dba
Propietario de la base de datos
Utilice “dba” si el propietario de la tabla es también
el propietario de la base de datos.
todoenmanuales.blogspot.com Página 9
www.maestrodelacomputacion.net
Sumario
todoenmanuales.blogspot.com Página 10
www.maestrodelacomputacion.net
todoenmanuales.blogspot.com Página 11
www.maestrodelacomputacion.net
todoenmanuales.blogspot.com Página 12
www.maestrodelacomputacion.net
Resultado
todoenmanuales.blogspot.com Página 13
www.maestrodelacomputacion.net
Ejemplos
todoenmanuales.blogspot.com Página 14
www.maestrodelacomputacion.net
todoenmanuales.blogspot.com Página 15
www.maestrodelacomputacion.net
Ejemplo
Lista los proyectos del municipio 1 y la descripción del fondo,
programa y subprograma
Resultado
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 Construcción
Empleo
97/000064 2 Fondo para el Desarrollo Regional y el SD ALCANTARILLADO 03 Construcción
Empleo
97/000065 2 Fondo para el Desarrollo Regional y el SD ALCANTARILLADO 03 Construcción
Empleo
97/001905 2 Fondo para el Desarrollo Regional y el SS ASISTENCIA SOCIAL Y SERVICIOS 01 Nutrición,
Empleo COMUNITARIOS Alimentación y
Salud
97/000069 2 Fondo para el Desarrollo Regional y el SI VIALIDADES URBANAS 01 Reconstrucción
Empleo
97/000070 2 Fondo para el Desarrollo Regional y el SI VIALIDADES URBANAS 01 Reconstrucción
Empleo
97/000071 2 Fondo para el Desarrollo Regional y el SI VIALIDADES URBANAS 01 Reconstrucción
Empleo
97/000072 2 Fondo para el Desarrollo Regional y el SI VIALIDADES URBANAS 01 Reconstrucción
todoenmanuales.blogspot.com Página 16
www.maestrodelacomputacion.net
Empleo
97/000066 2 Fondo para el Desarrollo Regional y el SI VIALIDADES URBANAS 01 Reconstrucción
Empleo
97/000067 2 Fondo para el Desarrollo Regional y el SI VIALIDADES URBANAS 01 Reconstrucción
Empleo
97/000068 2 Fondo para el Desarrollo Regional y el SI VIALIDADES URBANAS 01 Reconstrucción
Empleo
97/000006 2 Fondo para el Desarrollo Regional y el SJ INFRAESTRUCTURA EDUCATIVA 02 Construcción
Empleo
97/000007 2 Fondo para el Desarrollo Regional y el SJ INFRAESTRUCTURA EDUCATIVA 02 Construcción
Empleo
97/000008 2 Fondo para el Desarrollo Regional y el SJ INFRAESTRUCTURA EDUCATIVA 02 Construcción
Empleo
97/000009 2 Fondo para el Desarrollo Regional y el SJ INFRAESTRUCTURA EDUCATIVA 02 Construcción
Empleo
Ejemplo
Lista los proyectos específicos y la descripción 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
todoenmanuales.blogspot.com Página 17
www.maestrodelacomputacion.net
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
todoenmanuales.blogspot.com Página 18
www.maestrodelacomputacion.net
todoenmanuales.blogspot.com Página 19
www.maestrodelacomputacion.net
Sumario
La cláusula KEY JOIN permite simplificar la operación join en una
consulta
KEY LEFT/RIGHT OUTER JOIN son empleados cuando se requieren
extraer renglones que no cumplan con la operación 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
todoenmanuales.blogspot.com Página 20
www.maestrodelacomputacion.net
todoenmanuales.blogspot.com Página 21
www.maestrodelacomputacion.net
software de cliente
SQL anywhere
software de cliente
todoenmanuales.blogspot.com Página 22
www.maestrodelacomputacion.net
todoenmanuales.blogspot.com Página 23
www.maestrodelacomputacion.net
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 ..................
. . . . . . . . . ..................
. . . . . . . . . ..................
. . . . . . . . . ..................
todoenmanuales.blogspot.com Página 24
www.maestrodelacomputacion.net
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
.
.
.
todoenmanuales.blogspot.com Página 25
www.maestrodelacomputacion.net
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
. .
. .
. .
todoenmanuales.blogspot.com Página 26
www.maestrodelacomputacion.net
Reordenar columnas
El orden de columnas en la selección será el orden determinado de las
columnas en el resultado
Ejemplo
Resultado
munici proyec
5 97/C05003
5 97/C05004
5 97/C05001
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
. .
. .
. .
todoenmanuales.blogspot.com Página 27
www.maestrodelacomputacion.net
Eliminar Duplicados
distinct elimina renglones duplicados en la salida
select progra
from PROYECTO
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
.
.
.
todoenmanuales.blogspot.com Página 28
www.maestrodelacomputacion.net
distinct
distinct actúa sobre el renglón completo
Ejemplo
Lista sólo una ocurrencia de los programas y subprogramas de los
proyectos
todoenmanuales.blogspot.com Página 29
www.maestrodelacomputacion.net
distinct (continuación)
Resultado
munici
16
5
13
17
7
6
2
20
15
3
4
14
10
18
19
8
998
todoenmanuales.blogspot.com Página 30
www.maestrodelacomputacion.net
Ejemplo
Lista los proyectos específicos del municipio con clave 2
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
todoenmanuales.blogspot.com Página 31
www.maestrodelacomputacion.net
not niega una expresión booleana y palabras claves como like, null,
between y in
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
. .
todoenmanuales.blogspot.com Página 32
www.maestrodelacomputacion.net
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
todoenmanuales.blogspot.com Página 33
www.maestrodelacomputacion.net
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 NIÑOS 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"
todoenmanuales.blogspot.com Página 34
www.maestrodelacomputacion.net
select/from/where - Rangos
between es usado para especificar un rango inclusivo : los valores
limites son incluidos en la búsqueda
Ejemplo
not between excluye el valor más alto y el más bajo que han sido
especificados
Ejemplo
Resultado between
todoenmanuales.blogspot.com Página 35
www.maestrodelacomputacion.net
opciones significado
% cualquier cadena de cero o muchos caracteres
_ cualquier carácter
todoenmanuales.blogspot.com Página 36
www.maestrodelacomputacion.net
proyec nombre
97/C02002 PAVIMENTACION CALLE JUAREZ ENTRE 20 DE NOV. Y FCO. COSIO
97/C02003 PAVIMENTACION DE CALLES: ABASOLO, ISMAEL ZUÑIGA, MORELOS Y 20 DE NOVIEMBRE
97/C19006 PROTECCION DE LAS VENTANAS EN 3 AULAS ESC. PRIM CUAUHTEMOC
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
. .
. .
. .
todoenmanuales.blogspot.com Página 37
www.maestrodelacomputacion.net
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 ZUÑIGA, MORELOS Y 20 DE
INTRODUCCION DEL SISTEMA DE AGUA POTABLE COL. NUEVAS PALOMAS
NOVIEMBRE INTRODUCION DEL SISTEMA DE AGUA POTABLE COL. BENITO JUAREZ OTE.
PAVIMENTACION CALLE JUAREZ ENTRE 20 DE NOV. Y FCO. COSIO
DRENAJE PLUVIAL EN UNIDAD DEPORTIVA
PAVIMENTACION DE CALLES: ABASOLO, ISMAEL ZUÑIGA, MORELOS Y 20 DE
DESPIEDRE AGRICOLA CON MAQUINARIA NOVIEMBRE
NIVELACION Y BALASTREO DE CALLES EN COL. LAZARO CARDENAS
BALASTREO DE CALLES COL. SAN RAFAEL
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
GASTOS DEL GRUPO OPERATIVO
PROTECCION DE LAS VENTANAS EN 3 AULAS ESC. PRIM CUAUHTEMOC
todoenmanuales.blogspot.com Página 38
www.maestrodelacomputacion.net
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”
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
todoenmanuales.blogspot.com Página 39
www.maestrodelacomputacion.net
and
Conecta dos o más condiciones
Regresa resultado sólo 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
todoenmanuales.blogspot.com Página 40
www.maestrodelacomputacion.net
Resultado
todoenmanuales.blogspot.com Página 41
www.maestrodelacomputacion.net
Resultado
Resultado
todoenmanuales.blogspot.com Página 42
www.maestrodelacomputacion.net
Sumario
extraer datos
select [distinct] nombre_columna
from nombre_tabla
[where condiciones_búsqueda]
todoenmanuales.blogspot.com Página 43
www.maestrodelacomputacion.net
Sumario
Operadores de Comparación - (=) igual a; (>) mayor que; (<) menor
que; (>=) mayor que o igual; (<=) menor que o igual; (!=) o (<>)
diferente a; (!>) no mayor que; (!<) no menor que
todoenmanuales.blogspot.com Página 44
www.maestrodelacomputacion.net
Sumario
like - utilizada para extraer datos de tipo char, varchar, y datatime
% cualquier cadena de cero o muchos caracteres
_ cualquier caracter
todoenmanuales.blogspot.com Página 45
www.maestrodelacomputacion.net
CAPITULO III
VISTAS Y
PROCEDIMIENTOS
ALMACENADOS.
todoenmanuales.blogspot.com Página 46
www.maestrodelacomputacion.net
todoenmanuales.blogspot.com Página 47
www.maestrodelacomputacion.net
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 cláusula que no se puede utilizar en
la definición de la vista, esto por el hecho de que los renglones no se
encuentran en un orden particular
Es importante señalar 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.
todoenmanuales.blogspot.com Página 48
www.maestrodelacomputacion.net
select *
from v_progra_subpro_fondo
order by progra, subpro
Resultado
todoenmanuales.blogspot.com Página 49
www.maestrodelacomputacion.net
select *
from v_progra_subpro_fondo
where fondo = 1
order by progra, subpro
Resultado
todoenmanuales.blogspot.com Página 50
www.maestrodelacomputacion.net
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 ejecución 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 existirán durante la ejecución del mismo
Los valores resultantes de la ejecución del procedimiento serán
obtenidos de la última consulta especificada, siempre y cuando no se
envien a una tabla temporal
Se define una tabla temporal al anteponer el símbolo “#” a su nombre
todoenmanuales.blogspot.com Página 51
www.maestrodelacomputacion.net
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
todoenmanuales.blogspot.com Página 52
www.maestrodelacomputacion.net
todoenmanuales.blogspot.com Página 53
www.maestrodelacomputacion.net
Resultado
todoenmanuales.blogspot.com Página 54
www.maestrodelacomputacion.net
Ejecutar el procedimiento
sp_proy 2, „SP‟, „00‟
Resultado
todoenmanuales.blogspot.com Página 55
www.maestrodelacomputacion.net
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 ejecución 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 instrucción read
todoenmanuales.blogspot.com Página 56
www.maestrodelacomputacion.net
todoenmanuales.blogspot.com Página 57
www.maestrodelacomputacion.net
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‟
select “nombre_columna_nueva” =
nombre_columna_original [, ...]
Resultado
todoenmanuales.blogspot.com Página 58
www.maestrodelacomputacion.net
ent_fed munici
18 97/C02016
18 97/C13013
18 97/C02021
todoenmanuales.blogspot.com Página 59
www.maestrodelacomputacion.net
Resultado
todoenmanuales.blogspot.com Página 60
www.maestrodelacomputacion.net
Resultado
Ejemplo (división)
select proyec, costo_tot/12
from PROYECTO
where proyec = „97/C02016‟
Resultado
proyec costo_tot / 12
97/C02016 22638.0833333
todoenmanuales.blogspot.com Página 61
www.maestrodelacomputacion.net
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 “información no disponible”
Is null debe ser utilizado para determinar valores null contenidos en
una columna; la sintaxis “= null” es válida 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 operación el resultado será null
todoenmanuales.blogspot.com Página 62
www.maestrodelacomputacion.net
select / order by
La cláusula 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 más de una columna)
select proyec, munici
from PROYECTO
order by munici, proyec
Resultado: Resultado:
order by proyec order by munici, proyec
todoenmanuales.blogspot.com Página 63
www.maestrodelacomputacion.net
select/order by (continuación)
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
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
. .
. .
todoenmanuales.blogspot.com Página 64
www.maestrodelacomputacion.net
Sumario
Renombrar columnas - select título_columna = nombre_columna
[, ... ] select nombre_columna título_columna
Operadores aritméticos - (+) adición; (-) substracción; (*)
multiplicación; (/) división; (%) módulo
Valor null - Es un valor desconocido, las operaciones con null resultan
null
Is null - Usado para determinar un valor null en una columna
Cláusula order by - Ordena el resultado de una columna
(ascendente, por defecto)
todoenmanuales.blogspot.com Página 65
www.maestrodelacomputacion.net
todoenmanuales.blogspot.com Página 66
www.maestrodelacomputacion.net
Funciones Agregadas
Función Obtiene
count(*) Número de renglones en una tabla
count(nombre_columna) Número de renglones en la columna
que no contengan valor null
max(nombre_columna) Valor máximo en la columna
min(nombre_columna) Valor mínimo en la columna
sum(nombre_columna) Valor total de la columna
avg(nombre_columna) Valor promedio de la columna
todoenmanuales.blogspot.com Página 67
www.maestrodelacomputacion.net
Resultado count(*)
6
todoenmanuales.blogspot.com Página 68
www.maestrodelacomputacion.net
Resultado max(costo_tot)
976800.0000
Resultado min(costo_tot)
100.0000
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
todoenmanuales.blogspot.com Página 69
www.maestrodelacomputacion.net
proyec can_act
97/C07002 68670.0000
97/C07002 12118.0000
97/C07002 20197.0000
todoenmanuales.blogspot.com Página 70
www.maestrodelacomputacion.net
Funciones Agregadas
En la cláusula SELECT se puede utilizar más de una función
agregada
Ejemplo
select min(costo_tot), max(costo_tot)
from PROYECTO
todoenmanuales.blogspot.com Página 71
www.maestrodelacomputacion.net
todoenmanuales.blogspot.com Página 72
www.maestrodelacomputacion.net
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 función 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
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
. .
. .
. .
todoenmanuales.blogspot.com Página 73
www.maestrodelacomputacion.net
select/group by (continuación)
Los grupos se pueden formar por medio de una columna o utilizando
una expresión que no contenga una función agregada
Ejemplo
select sum(can_act), proyec, count(proyec)
from EST_FIN
where fase_pre = 3
group by PROYEC
Resultado
todoenmanuales.blogspot.com Página 74
www.maestrodelacomputacion.net
Ejemplo
Lista las costos totales que ha ejercido cada dependencia ejecutora
en el programa de urbanizacion
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
todoenmanuales.blogspot.com Página 75
www.maestrodelacomputacion.net
Ejemplo
Obtenga el costo promedio de los programas, además agrúpelos
por programa y subprograma y solamente muestre aquellos que
presenten un precio promedio mayor a 60.000
Resultado
todoenmanuales.blogspot.com Página 76
www.maestrodelacomputacion.net
Sumario
Funciones Agregadas
count - obtiene el número de registros que cumplen la condición
max - encuentra el valor máximo de la columna
min - encuentra el valor mínimo de la columna
sum - suma los renglones de la columna especificada
avg - obtiene el valor promedio de una columna
todoenmanuales.blogspot.com Página 77
www.maestrodelacomputacion.net
Joins - Objetivos
todoenmanuales.blogspot.com Página 78
www.maestrodelacomputacion.net
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 Delegación AE ...
Delegación
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 ...
. . . . . . .
. . . . . . .
. . . . . . .
todoenmanuales.blogspot.com Página 79
www.maestrodelacomputacion.net
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 operación join permite extraer datos de dos o más tablas
Join es la parte central del modelo relacional
Combina tablas en base a valores iguales de los
renglones de cada tabla
todoenmanuales.blogspot.com Página 80
www.maestrodelacomputacion.net
todoenmanuales.blogspot.com Página 81
www.maestrodelacomputacion.net
Operación Join
todoenmanuales.blogspot.com Página 82
www.maestrodelacomputacion.net
todoenmanuales.blogspot.com Página 83
www.maestrodelacomputacion.net
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
todoenmanuales.blogspot.com Página 84
www.maestrodelacomputacion.net
Ejemplo
Liste las CLC‟s y su beneficiario
Resultado
clc benefi
todoenmanuales.blogspot.com Página 85
www.maestrodelacomputacion.net
Resultado
todoenmanuales.blogspot.com Página 86
www.maestrodelacomputacion.net
Producto Cartesiano
Si no se especifican en el where las columnas utilizadas para
relacionar las tablas, el sistema asume que se desea obtener la
combinación de los renglones de cada tabla
Esto se conoce como producto cartesiano
Ejemplo
Combine la tabla Fondo con la tabla Proyecto
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
Explicación: La tabla proyecto contiene 972 renglones y 2 la tabla fondo, por lo tanto el
resultado es: 972 * 2 = 1944 renglones.
todoenmanuales.blogspot.com Página 87
www.maestrodelacomputacion.net
Resultado
todoenmanuales.blogspot.com Página 88
www.maestrodelacomputacion.net
Liste los oficios, sus emisores y receptores así como la cantidad total
que se ha definido en la estructura de éste, agrupe por número de
oficio, emisor y receptor y ordene por número de oficio.
Resultado
todoenmanuales.blogspot.com Página 89
www.maestrodelacomputacion.net
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
Resultado
todoenmanuales.blogspot.com Página 90
www.maestrodelacomputacion.net
Resultado
todoenmanuales.blogspot.com Página 91
www.maestrodelacomputacion.net
Resultado
todoenmanuales.blogspot.com Página 92
www.maestrodelacomputacion.net
Resultado
todoenmanuales.blogspot.com Página 93
www.maestrodelacomputacion.net
Sumario
Sintaxis:
select [ tabla ].nombre_columna, [ ...]
from { tabla }, { tabla }, [ ...]
[ where condiciones ]
todoenmanuales.blogspot.com Página 94
www.maestrodelacomputacion.net
Subconsultas - Objetivos
Al concluir esta sección estará capacitado para:
todoenmanuales.blogspot.com Página 95
www.maestrodelacomputacion.net
Resultado: ‘2’
2. Busque los proyectos para los cuales el fondo sea igual a „2‟
select * from proyecto
where fondo = 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
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
todoenmanuales.blogspot.com Página 96
www.maestrodelacomputacion.net
EN PARCELAS Y POTREROS
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
todoenmanuales.blogspot.com Página 97
www.maestrodelacomputacion.net
Notas de la sintaxis
todoenmanuales.blogspot.com Página 98
www.maestrodelacomputacion.net
Restricciones de Subconsultas
Si la cláusula 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
todoenmanuales.blogspot.com Página 99
www.maestrodelacomputacion.net
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
NOVILIZACION SOCIAL,
CARGA Y DESCARGA DE
15,000 OPERATIVOS
Resultado
Resultado
Resultado
Ejemplo de error
Al ejecutar la instrucción indica Error: Subquery cannot return more than one result.
Liste los proyectos que estén actualizados cuyo costo total sea menor
al promedio de los costos totales de todos los proyectos (Propuesta,
Actualización, Aprobación, etc.)
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. NAVARREÑO
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
Sumario
Una Subconsulta - es una cláusula select, usada como una
expresión en parte de otra cláusula select, update, insert, or delete.
Sigue
visitando:
www.maestrodelacomputacion.net
todoenmanuales.blogspot.com