Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual de Iniciación A La Programación
Manual de Iniciación A La Programación
www.desarrolloweb.com
Equipo DesarrolloWeb.com
http://www.desarrolloweb.com
(36 captulos)
Webmaster de Blasten.com
http://www.blasten.com
(1 captulo)
Director de DesarrolloWeb.com
http://www.desarrolloweb.com
(1 captulo)
Sara Alvarez
Artculo por
Son los encargados de traducir los programas escritos en lenguaje ensamblador a lenguaje
mquina.
Compiladores
Son programas que leen el cdigo fuente y lo traducen o convierten a otro lenguaje. Estos
programas te muestran los errores existentes en el cdigo fuente.
Una vez traducido, compilado y linkado el archivo esta listo para su ejecucin donde tambin
podrn surgir problemas y fallos, para los cuales tendramos que volver a realizar todo el
proceso anteriormente citado, de modo que puedan ser corregidos.
Por este motivo es importante realizar numerosas pruebas en tiempo de ejecucin antes de
presentar el programa al cliente.
Otro sistema para la ejecucin de nuestro cdigo fuente es mediante el uso de intrpretes
(estos no se encontraran dentro de los traductores).
Intrpretes
Los intrpretes realizan la traduccin y ejecucin de forma simultanea, es decir, un intrprete
lee el cdigo fuente y lo va ejecutando al mismo tiempo.
Las diferencias entre un compilador y un intrprete bsicamente son:
Artculo por
Un programa compilado puede funcionar por si solo mientras que un cdigo traducido
por un intrprete no puede funcionar sin ste.
Un programa traducido por un intrprete puede ser ejecutado en cualquier mquina ya
que, cada vez que se ejecuta el intrprete, tiene que compilarlo.
Un archivo compilado es mucho ms rpido que uno interpretado.
Sara Alvarez
Manejando bits
Importancia del manejo de los bits en el mundo de la programacin.
Como bien es conocido un Byte es la agrupacin de 8 bits respectivamente, cada bit forma
parte del sistema de numeracin Binario a quien debe su nombre, es decir de base 2 en otras
palabras puede almacenar valores comprendidos entre 0 y 1.
Si bien recordamos que un sistema de numeracin se conforma de un conjunto de reglas y
principios que permite expresar o definir un nmero valido dentro del mismo, podemos afirmar
que la mayora de ellos (Sistemas: binarios, octanos, decimales hexadecimales, etc..) se
pueden representar mediante un polinomio sencillo que nos permitir entender su lgica:
Nmero = N*basen + N*basen-1+ N*basen-2 hasta que base quede elevado a la 0 siempre y
cuando no contenga decimales el "Nmero"
Donde Nmero es el valor expresado dentro del sistema, base como su nombre lo indica la
base del sistema (si es binario : 2 , octano: 8, decimal: 10, hexadecimal : 16, etc ) y n la
+ 8*10
Hemos descompuesto el valor expresado "18598" multiplicndolo por la base del sistema (10)
elevada a la posicin del digito en la expresin.
El nmero 1 se encuentra iniciando la expresin y guarda en su interior 10 000 (Para
comprobarlo: si eliminamos el 1 el resultado ser (18598-10 000)) por lo tanto 10 000 es igual
a 10 4 (1*104)=10 000 + (8*103)= 8 000
En el sistema de numeracin binario la misma formula es aplicable:
10 (nmero binario) = 1*2
+ 0*2 0
Por tanto podemos decir que un bit tiene un valor de acuerdo a su posicin ubicacin y para
hallar ese valor solo tenemos que descomponer 255.
128 62 32 16 8 4 2 1
1
5 6 7 8(bits)
128 62 32 16 8 4 2 1
1
1 0 1 1
Desplazando bits:
Podemos definirlo como la accin de transportar bytes de un extremo de la expresin a otro,
como la expresin esta conformada por 2 solo puede hacerse en dos sentidos, izquierda y
derecha.
a. Desplazando bits a la izquierda (<<)
Consiste en mover la cantidad de bit indicada en la expresin, de la izquierda a la
derecha, esta operacin equivale a multiplicar por 2.
Por ejemplo:
16 <<2 desplazaremos 2 bits de la izquierda a la derecha
16 en binario equivale a 00010000 por lo cual moveremos los dos primeros bits a la
parte de atrs del numero (derecha) de tal modo que quedar 01000000 lo cual
equivale a 64.
Por tanto si multiplicamos
(16*2)=32 (32*2)=64
1 bit
2 bits
2 bits
3 bits
4 bits
10
Tipos de programacin
Existen varias clases de programacin, dependiendo de los mtodos utilizados y las tcnicas
empleadas.
Los tipos o tcnicas de programacin son bastante variados, aunque puede que muchos de los
lectores slo conozcan una metodologa para realizar programas. En la mayora de los casos,
las tcnicas se centran en programacin modular y programacin estructurada, pero existen
otros tipos de programacin. Los explicaremos a lo largo del artculo.
Programacin estructurada (PE)
La programacin estructurada esta compuesta por un conjunto de tcnicas que han ido
evolucionando aumentando considerablemente la productividad del programa reduciendo el
tiempo de depuracin y mantenimiento del mismo.
Esta programacin estructurada utiliza un nmero limitado de estructuras de control,
reduciendo as considerablemente los errores.
Esta tcnica incorpora:
11
Un programa esta estructurado si posee un nico punto de entrada y slo uno de salida,
existen de "1 a n" caminos desde el principio hasta el fin del programa y por ltimo, que todas
las instrucciones son ejecutables sin que aparezcan bucles infinitos.
Programacin modular
En la programacin modular consta de varias secciones dividas de forma que interactan a
travs de llamadas a procedimientos, que integran el programa en su totalidad.
En la programacin modular, el programa principal coordina las llamadas a los mdulos
secundarios y pasa los datos necesarios en forma de parmetros.
A su vez cada modulo puede contener sus propios datos y llamar a otros mdulos o funciones.
Programacin orientada a objetos (POO)
Se trata de una tcnica que aumenta considerablemente la velocidad de desarrollo de los
programas gracias a la reutilizacin de los objetos.
El elemento principal de la programacin orientada a objetos es el objeto.
El objeto es un conjunto complejo de datos y programas que poseen estructura y forman parte
de una organizacin.
Un objeto contiene varios datos bien estructurados y pueden ser visibles o no dependiendo del
programador y las acciones del programa en ese momento.
El polimorfismo y la herencia son unas de sus principales caractersticas y por ello dedicaremos
ms adelante un artculo exclusivamente a tratar estos dos trminos.
En DesarrolloWeb.com hemos publicado anteriormente una explicacin de lo que es la
programacin orientada a objetos.
Programacin concurrente
Este tipo de programacin se utiliza cuando tenemos que realizar varias acciones a la vez.
Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma
simultanea.
Se trata de una programacin ms lenta y laboriosa, obteniendo unos resultados lentos en las
acciones.
Programacin funcional
Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras
funciones.
12
Sara Alvarez
Importancia de la documentacin
Describimos los aspectos claves para el desarrollo de una buena documentacin del programa
a entregar al cliente.
La documentacin de los programas es un aspecto sumamente importante, tanto en el
desarrollo de la aplicacin como en el mantenimiento de la misma. Mucha gente no hace este
parte del desarrollo y no se da cuenta de que pierde la posibilidad de la reutilizacin de parte
del programa en otras aplicaciones, sin necesidad de conocerse el cdigo al dedillo.
La documentacin de un programa empieza a la vez que la construccin del mismo y finaliza
justo antes de la entrega del programa o aplicacin al cliente. As mismo, la documentacin
que se entrega al cliente tendr que coincidir con la versin final de los programas que
componen la aplicacin.
Una vez concluido el programa, los documentos que se deben entregar son una gua tcnica,
una gua de uso y de instalacin.
Tipos de documentacin
La documentacin que se entrega al cliente se divide claramente en dos categoras, interna y
externa:
La gua tcnica
En la gua tcnica o manual tcnico se reflejan el diseo del proyecto, la codificacin de la
aplicacin y las pruebas realizadas para su correcto funcionamiento. Generalmente este
documento esta diseado para personas con conocimientos de informtica, generalmente
programadores.
El principal objetivo es el de facilitar el desarrollo, correccin y futuro mantenimiento de la
aplicacin de una forma rpida y fcil.
Esta gua esta compuesta por tres apartados claramente diferenciados:
13
Este documento puede tener, a su vez, otra documentacin para su mejor comprensin
y puede ser de gran ayuda para el mantenimiento o desarrollo mejorado de la
aplicacin. Este documento debe tener una gran claridad en su escritura para su fcil
comprensin.
Pruebas: es el documento donde se especifican el tipo de pruebas realizadas a lo largo
de todo el proyecto y los resultados obtenidos.
La gua de uso
Es lo que comnmente llamamos el manual del usuario. Contiene la informacin necesaria para
que los usuarios utilicen correctamente la aplicacin.
Este documento se hace desde la gua tcnica pero se suprimen los tecnicismos y se presenta
de forma que sea entendible para el usuario que no sea experto en informtica.
Un punto a tener en cuenta en su creacin es que no debe hacer referencia a ningn apartado
de la gua tcnica y en el caso de que se haga uso de algn tecnicismo debe ir acompaado de
un glosario al final de la misma para su fcil comprensin.
La gua de instalacin
Es la gua que contiene la informacin necesaria para implementar dicha aplicacin.
Dentro de este documento se encuentran las instrucciones para la puesta en marcha del
sistema y las normas de utilizacin del mismo.
Dentro de las normas de utilizacin se incluyen tambin las normas de seguridad, tanto las
fsicas como las referentes al acceso a la informacin.
Artculo por
Sara Alvarez
Metodologa de la programacin
En este artculo y los sucesivos veremos las herramientas y tcnicas que nos ayudan a disear
algoritmos para la resolucin de los problemas en la programacin estructurada.
Estructuras de un programa
Un programa se va a dividir en 3 partes claramente diferenciadas:
procesos de entrada
proceso de datos
procesos de salida
14
Organigramas: Representacin grfica sencilla con los elementos que representas las
entradas y salida de datos del programa
Ordinograma: Representacin grfica con secuencias lgicas y detalladas de todos los
pasos a seguir para la resolucin del algoritmo.
Pseudocdigo: Lenguaje intermedio entre el natural y el de programacin que
representa mediante la palabra la solucin del algoritmo.
Dentro de estos tres los ms utilizados son los ordinogramas o pseudocdigos, ya que son los
que ms ayudan a los programadores a la hora de pasar esos algoritmos a los distintos
lenguajes de programacin.
En los siguientes artculos profundizaremos ms en cada uno de ellos y aprenderemos a
construirlos y leerlos para su posterior paso al lenguaje de programacin requerido.
Artculo por
Sara Alvarez
Diagrama de flujos
Explicamos lo que son, cmo se construyen y las representaciones grficas utilizadas para su
construccin.
Un diagrama de flujos es una representacin grfica que presenta las entradas y salidas de
datos al programa.
Los diagramas de flujos se dividen en tres partes claramente diferenciadas:
15
Dibujo
Dispositivo
Tipo
teclado
entrada
pantalla
salida
disquette
Entrada/Salida
Impresora
Salida
Discos magnticos
entrada/salida
Smbolo Proceso
16
Flechas
Funcin
Lineas de teleproceso
17
18
Artculo por
Sara Alvarez
Ordinogramas
Uno de los diagramas de flujos ms utilizado. Muy parecido al Organigrama pero ms detallado
y preciso.
Se trata de otro diagrama de flujos que muestra la secuencia lgica y detallada de las
operaciones que necesitamos para la realizacin de un programa.
Al igual que el organigrama, este tambin debe ser independiente del lenguaje de
programacin que utilicemos.
Estructura de un ordinograma
Todo ordinograma debe estar compuesto de:
Smbolos utilizados
Simbolo
Descripcin
Para inicio/fin o para una parada indeterminada
19
20
21
Sara Alvarez
Pseudocdigo
Lenguaje intermedio entre nuestro lenguaje y el lenguaje de programacin.
El principal objetivo del pseudocdigo es el de representar la solucin a un algoritmo de la
forma ms detallada posible, y a su vez lo ms parecida posible al lenguaje que posteriormente
se utilizara para la codificacin del mismo.
Las principales caractersticas de este lenguaje son:
22
Instrucciones
Instrucciones
Instrucciones
Instrucciones
Instrucciones
primitivas
de proceso
de control
compuestas
de descripcin
Programa:
Modulo:
Tipos de datos:
Constantes:
Variables:
Cuerpo:
Inicio
Instrucciones
Fin
* Programa que visualice la tabla de multiplicar del numero introducido por teclado
Programa: Tabla multiplicar
Modulo: main
Variables:
t: entero
num : entero
Inicio
Visualizar "Introduce un nmero"
Leer num
Desde t=1 hasta t=10 repetir
Visualizar num, " X", t, "=", num*t
23
Fin
Fin desde
Sara Alvarez
Tipos de datos
En este artculo hablaremos de los posibles tipos de datos que podemos utilizar en la creacin
de nuestros programas.
Antes de meternos de lleno en los diferentes tipos de datos os paso la descripcin de dato para
que todo quede claro desde el principio.
Dato
Elemento que no manejamos o almacenamos en un sistema informtico. Los datos manejados
en un algoritmo deben llevar asociado un identificador, un tipo de dato y su valor.
Datos bsicos
Dentro de los datos bsicos nos podemos encontrar con los datos estticos, derivados y
estructurados.
Los datos estticos son los siguientes:
Cmo dato derivado nos encontramos con los punteros que hoy en da no se utilizan casi, a no
ser que se programe en C.
Los ms complejos son los estructurados y los principales son:
array
Estructuras
Listas, pilas, colas y rboles ( muy utilizados en C)
Clases y objetos
Ficheros
Base de datos
Los cuatro primeros son los internos mientras que los dos ultimos correspondes a tipos de
datos externos.
24
Constantes y variables
Se define como variable a una posicin de memoria referenciada por un identificador donde se
puede almacenar un valor determinado (Tipo de dato).
Se define como constante a un valor que no se modifica a lo largo de toda la ejecucin del
programa.
Artculo por
Sara Alvarez
Operadores
Pasamos a detallar los diferentes operadores que hay y su funcionamiento.
Los operadores se clasifican en aritmticos, alfanumricos, relacionales, lgicos y por ltimo un
pequeo grupo de operadores especiales que depender de los diferentes lenguajes utilizados.
Operadores aritmticos:
Operadores alfanumricos:
Son los utilizados para trabajar con cadenas.
Principalmente utilizamos el smbolo "+" para concatenar cadenas. Luego dependiendo de el
lenguaje puede funcionar o no el smbolo "-" para concatenar cadenas eliminando los espacios
en blanco.
Operadores relacionales:
Operadores lgicos:
Como operadores lgicos nos encontramos con el smbolo "!" o "not" para la negacin y el
smbolo "&&" o "and" para la conjuncin.
Ejemplos
Aritmticos.
A=3
B=2
X=a**2 donde x valdra 9
X=a/2 donde x valdra 1.5
X= a*2 donde x valdra 6
25
Sara Alvarez
Expresiones e instrucciones
Pasamos a describir estos dos trminos aplicados a la programacin y ponemos algn ejemplo.
Expresiones
Como definicin de expresiones entendemos que es un conjunto de operandos y operadores,
que despus de ser evaluados devuelven un determinado resultado.
En funcin del resultado obtenido las podemos clasificar en:
Expresiones numricas
Expresiones alfanumricas
Expresiones lgicas booleanas
Instrucciones
Como definicin de instrucciones entendemos que es un hecho o suceso de duracin limitada
que genera unos cambios en la ejecucin del programa.
Existen varios tipos de instrucciones:
26
Instrucciones compuestas:
Son aquellas instrucciones que son ejecutadas directamente por el procesador y estn
constituidas por un conjunto de acciones agrupadas en mdulos.
Instrucciones de control:
Son utilizadas para controlar la secuencia de ejecucin del programa. Dentro de este
tipo de instrucciones se encuentran las instrucciones de salto que son aquellas que
alteran o rompen la secuencia de ejecucin de un programa. Este tipo de instrucciones
no se utilizan en la programacin estructurada.
A su vez tenemos las instrucciones alternativas que controlan la ejecucin o no de una o
ms instrucciones en funcin de la condicin. Estn las instrucciones de alternativa
simple, doble y mltiple.
Por ultimo dentro de este grupo de instrucciones de control estn las instrucciones
repetitivas que son aquellas que nos permiten alterar la secuencia normal de la
ejecucin de un programa haciendo posible que un grupo de instrucciones se puedan
repetir mas de una vez.
Todo bucle esta compuesto de tres partes claramente diferenciadas:
A: Parte de la condicin, puede ser cualquier expresin.
B: Cuerpo del bucle. Son el conjunto de instrucciones que se repetirn.
C Parte final del bucle. Es el ultimo en ejecutarse cuando no se cumple la
condicin.
Los elementos que intervienen en la expresin que conforma la condicin deben estar
siempre reflejados en el cuerpo del bucle de tal forma que siempre exista la posibilidad
de salir del mismo.
Existen dos tipos principales de bucles:
Bucle mientras (do, while) Se repiten las instrucciones hasta que no se cumpla la
condicin
Mientras <<condicin>> hacer
Instrucciones
Fin mientras
Bucle para (for) se repiten las instrucciones un nmero determinado de veces.
Para v<-0 hasta vf[con i de incremento] hacer
27
Sara Alvarez
En el caso de la funcin factorial, tenemos el caso bsico que factorial de 1 es igual a 1. As que
lo podremos utilizar como punto de ruptura de las llamadas recursivas.
As pues, vamos a realizar la codificacin de la funcin recursiva factorial. Primero veamos un
pseudocdigo:
funcion factorial(n)
si n=1 entonces
factorial = 1
sino
factorial = n * factorial(n-1)
fin funcion
Ahora veamos cmo se implementara esta funcin con el lenguaje de programacin Javascript:
function factorial(n){
28
Artculo por
29
Artculo por
Tiene que ser verstil: esto quiere decir que, dependiendo de los usuarios o las
aplicaciones, puedan hacer diferentes cosas o traten a los datos de formas distintas.
Tiene que atender con la rapidez adecuada a cada aplicacin o empresa, atendiendo a
lo que se la requiera.
Tiene que tener un ndice de redundancia lo ms bajo posible.
Tener una alta capacidad de acceso para ganar el mayor tiempo posible en la realizacin
de consultas.
Tener un alto ndice de integridad, esto significa que al tener muchos usuarios atacando
a una misma base de datos no puede haber fallos en la insercin de datos, errores por
redundancia o lenta actualizacin.
Por supuesto tienen que tener un nivel altsimo de seguridad y privacidad ya que los
datos que se pueden almacenar en una base de datos pueden ser altamente
confidenciales o importantes. En este punto tambin entran los medios fsicos de
proteccin contra fuego, robo, etc.
Por ultimo tiene que ser posible su constante actualizacin para no dejar a la base de
datos anticuada e inservible. Cuando hacemos un cambio en la organizacin fsica de
los datos no debe afectar a los programas por lo que tambin tiene que tener una
independencia fsica de los datos. Al igual que tiene que tener total independencia
lgica con los datos, esto quiere decir que si hacemos cambios en la estructura lgica
de los datos (agregar nuevos campos a una tabla) no deben afectar a las aplicaciones
que utilicen esos datos.
Sara Alvarez
30
Estos tres niveles de visin de usuarios los proporcionan los sistemas gestores de base de
datos (ya veremos ms adelante que significa esto).
Una base de datos especifica tiene un nico nivel interno y un nico nivel conceptual pero
puede tener varios niveles externos.
Artculo por
Sara Alvarez
31
Los lenguajes
Un sistema gestor de base de datos debe proporcionar una serie de lenguajes para la definicin
y manipulacin de la base de datos. Estos lenguajes son los siguientes:
Artculo por
Lenguaje de definicin de datos (DDL). Para definir los esquemas de la base de datos
Lenguaje de manipulacin de datos (DML). Para manipular los datos de la base de datos
Lenguaje de control de datos(DCL). Para la administracin de usuarios y seguridad en la
base de datos.
Sara Alvarez
32
En este modelo solo se pueden representar relaciones 1:M, por lo que presenta varios
inconvenientes:
33
El elemento principal de este modelo es la relacin que se representa mediante una tabla.
Artculo por
Sara Alvarez
Arquitectura cliente-servidor
Caractersticas principales de este tipo de arquitectura de cara a base de datos.
Esta arquitectura se divide en dos partes claramente diferenciadas, la primera es la parte del
servidor y la segunda la de un conjunto de clientes.
Normalmente el servidor es una mquina bastante potente que acta de depsito de datos y
funciona como un sistema gestor de base de datos (SGBD).
Por otro lado los clientes suelen ser estaciones de trabajo que solicitan varios servicios al
servidor.
Ambas partes deben estar conectadas entre s mediante una red.
Una representacin grfica de este tipo de arquitectura sera la siguiente.
34
Sara Alvarez
Modelo entidad-relacin
Mostramos las caractersticas bsicas de uno de los modelos conceptuales ms utilizados.
Este modelo se obtiene en tiempo de diseo de la base de datos. Fue propuesto por Peter Chen
en 1976 y desde entonces se viene utilizando de una forma muy global.
Se caracteriza por utilizar una serie de smbolos y reglas para representar los datos y sus
relaciones.
Con este modelo conseguimos representar de manera grafica la estructura lgica de una base
de datos.
Los principales elementos del modelo entidad-relacin son las entidades con sus atributos y las
relaciones entre entidades.
35
1:1. Uno a uno, a cada ocurrencia de una entidad le corresponde como mximo una
ocurrencia de la otra entidad relacionada.
1:N. Uno a Mucho, a cada ocurrencia de la entidad A le pueden corresponder varias de
la entidad B.
N:M. Muchos a muchos, cada ocurrencia de una entidad puede contener varias de la
otra entidad relacionada y viceversa.
Para finalizar las caractersticas de la relacin tenemos la cardinalidad que define el nmero
mximo y mnimo de ocurrencias de cada tipo de entidad. Se representa con los valores
mximo coma mnimo encerrados entre parntesis encima de la relacin. (mximo, mnimo)
Atributo
Se define como cada una de las propiedades de una entidad o relacin. Cada atributo tiene un
nombre y todos los posibles valores que puede tener. Dentro de una entidad tiene que haber
un atributo principal que identifica a la entidad y su valor tiene que ser nico. Un ejemplo de
atributo principal seria el dni dentro de la entidad persona.
Ponemos un ejemplo de lo que seria un esquema del modelo entidad-relacion.
Artculo por
Sara Alvarez
36
Atributo: se trata de cada una de las columnas de la tabla. Vienen definidas por un
nombre y pueden contener un conjunto de valores.
Tupla: se trata de cada una de las filas de la tabla. Es importante sealar que no se
pueden tener tuplas duplicadas en una tabla.
Dominios
El dominio dentro de la estructura del modelo relacional es el conjunto de valores que puede
tomar un atributo. Existen dos tipos de dominios:
Claves
Cada tupla de una tabla tiene que estar asociada a una clave nica que permita identificarla.
Una clave puede estar compuesta por uno o ms atributos.
Una clave tiene que ser nica dentro de su tabla y no se puede descartar ningn atributo de la
misma para identificar una fila.
Existen dos tipos de claves:
Clave prmaria (Primary Key): es el valor o conjunto de valores que identifican una fila
dentro de una tabla. Nunca puede ser NULL. Un ejemplo claro de clave primaria seria el
DNI, que es nico para cada persona y no puede ser NULL.
Clave ajena (Foreign Key): es el valor o valores de una tabla que corresponde con el
valor de una clave primaria en otra tabla. Esta clave es la que representa las relaciones
entre las tablas.
Vistas
Se trata de una tabla ficticia la cual muestra atributos de otras tablas relacionadas. De esta
forma obtenemos los datos que nos interesan de una o varias tablas. Es importante sealar
que no se pueden realizar operaciones sobre vistas.
Artculo por
Sara Alvarez
37
Sara Alvarez
38
Proyeccin: esta operacin nos devuelve una nueva tabla con las columnas seleccionadas de
otra.
La representacin sera la siguiente:
Ejemplo de proyeccin:
Sobre la tabla anterior proyectamos la columna salario y nombre
quedando como resultado la siguiente tabla
Operaciones binarias
Unin: Esta operacin solo se puede hacer si las tablas tienes las mismas columnas, es decir,
39
u Tabla2
Diferencia: de la misma forma que la unin la diferencia tan solo se puede realizar si las dos
tablas tienen las mismas columnas. Su representacin sera la siguiente: Tabla1 - Tabla2
Con las siguientes tablas:
Producto cartesiano: se realiza con dos tablas distintas pero relacionadas por alguna columna,
siempre y cuando el nombre de la columna no sea el mismo.
Su representacin sera la siguiente: Tabla1
x Tabla2
Artculo por
Sara Alvarez
40
Si tu sistema gestor de base de datos cumple con estas doce reglas puedes afirmar que se
trata de un sistema gestor de base de datos relacional o lo que es lo mismo SGBDR
Artculo por
Sara Alvarez
41
Manipulacin de
datos
SELECT
INSERT
DELETE
UPDATE
42
Componentes sintcticos
La mayora de sentencias SQL tienen la misma estructura.
Todas comienzan por un verbo (select, insert, update, create), a continuacin le sigue una o
ms clausulas que nos dicen los datos con los que vamos a operar (from, where), algunas de
estas son opcionales y otras obligatorias como es el caso del from.
Artculo por
Sara Alvarez
43
44
Sara Alvarez
Consulta de datos
Explicamos detalladamente la sentencia select, la ms utilizada en acceso a base de datos.
Para recuperar informacin de las base de datos, utilizamos la sentencia select, que tiene la
siguiente sintaxis:
select [ALL|DISTINCT]
[expre_column1, expre_colum2, ..., expre_column | *]
FROM [nombre_tabla1, nombre_tabla2, ..., nombre_tablan]
[WHERE condicion]
[ORDER BY expre_colum [DESC|ASC] [,expre_colum [DESC|ASC]]...];
Donde expre_colum puede ser una columna de una tabla, una constante, una o varias
funciones, incluso expresiones aritmticas.
La nica clusula obligatoria es la clusula FROM, las dems son opcionales todas.
FROM
Nos indica la tabla o lista de tablas de las que vamos a recuperar la informacin.
Si un usuario de la base de datos no es el propietario de la tabla, tendr que especificar el
nombre de usuario delante de la tabla, como se ve en el siguiente ejemplo.
select * from profesor.alumnos;
Esta sentencia solo nos mostrara el nombre de los alumnos que cumplieran las dos
condiciones expresadas.
45
Esta sentencia nos mostraria todos los datos de los alumnos ordenados primero por nombre
ascendente y por curso descendente.
Artculo por
Sara Alvarez
Operador aritmtico
Operacin
suma
resta
multiplicacin
divisin
46
Operadores lgicos
Opera
dor
Funcin
and
or
not
Operadores de comparacin
Operador
Funcin
Igual a
>
Mayor que
>=
<
Menor que
<=
= <>
Distinto de
47
Sara Alvarez
48
Sara Alvarez
Subconsultas
Para realizar alguna operacin de consulta a veces necesitamos los datos obtenidos en otras
consultas, esto lo podemos hacer en una nica consulta, utilizando las subconsultas.
Una subconsulta no es ms que un select dentro de otro select. Las subconsultas son aquellas
sentencias select que forman parte de la clausula where de otra sentencia select. El formato es
el siguiente:
SELECT
FROM .
WHERE columna operador_comparativo (SELECT.. FROM WHERE);
Cuando se ejecuta esta sentencia primero se realiza la subconsulta y luego el resto de
sentencia.
Condiciones de bsqueda en subconsultas
Las subconsultas normalmente aparecen como parte de la condicin de una bsqueda dentro
del where o having.
Condiciones de bsqueda que puede haber dentro de una subconsulta:
Comparacin de subconsultas: Comparan el valor de la expresin con un valor nico obtenido
49
Existencia: nos dice si la subconsulta devuelve alguna fila o no. Para ello utilizamos las
palabras EXISTS o NOT EXITS.
Select * from departamento where EXISTS (select * from empleado where empleado.id_departamento =
departamento.id_departamento);
Comparacin cuantificada: Para esto tambin utilizamos los comparadores basicos unidos a
ANY o ALL.
ANY compara el valor de una expresin con cada uno del conjunto de valores obtenidos en la
subconsulta. Con que una de las comparaciones de TRUE la consulta da TRUE
Select * from empleado where salario = ANY (select salario from empleado where id_departamento=30);
ALL compara el valor de una expresin con cada uno del conjunto de valores obtenidos en la
subconsulta. Tienen que ser todos TRUE para que la subconsulta devuelva TRUE
Select * from empleado where salario < ALL (select salario from emple where id_departamento=20);
Esta sentencia devuelve para cada fila que se obtiene el mximo salario del departamento que
se est obteniendo en la consulta principal.
Artculo por
Sara Alvarez
50
Funcin
Propsito
ABS(n)
CEIL(n)
FLOOR(n)
MOD(m,n)
POWER(m,
exponente)
SIGN(valor)
NVL(valor,
expresin)
51
Pasamos a poner algunos ejemplos para que os quede ms claro como se utilizan:
Select
Funcin
AVG(n)
Propsito
Nos devuelve la media de n
MIN (expresin)
Funciones de listas
Estas funciones trabajan con grupos de columnas dentro de una misma fila.
52
Funcin
Propsito
GREATEST(valor1, valor2, )
LEAST(valor1, valor2,...)
Para explicar estas funciones vamos a poner un ejemplo un poco ms complicado, donde el
enunciado sera el siguiente:
Queremos mostrar por cada alumno su mayor nota de todas las que tiene.
Select alumno, greatest(nota1,nota2,nota2,nota4,nota5) "nota" from alumnos;
Artculo por
Sara Alvarez
Sentencia sql que obtiene el nombre de los alumnos sacando por pantalla la siguiente frase: el
nombre del alumno es (nombre que esta almacenado en la tabla)
53
Funcin
SYSDATE
Propsito
Devuelve la fecha del sistema
ADD_MONT
HS (fecha, Devuelve la fecha incrementada en n meses
n)
LAS_DAY
(fecha)
54
(fecha1,
fecha2)
fecha2
Ahora pasamos a poner algn ejemplo prctico para que os hagis una idea de cmo es. De la
primera funcin no hace falta ya que es bastante sencilla, tan solo tenis que poner la funcin
y os devuelve la fecha actual del sistema.
Ejemplo1: vamos a sumar 2 meses a la fecha de alta de los usuarios
Select fecha_alta, add_months(fecha_alta,2) from usuarios;
Ejemplo2: vamos a obtener el ltimo da del mes para cada una de las fechas de alta de cada
usuario
Select fecha_alta, last_day(fecha_alta) from usuarios;
Sara Alvarez
Funcin
Propsito
TO_CHAR(fecha,'fo Esta funcin nos convierte una fecha de tipo date a una
rmato')
fecha de tipo varchar2
TO_CHAR(numero,'f Nos convierte un dato de tipo number a un tipo
varchar2
ormato')
55
Esta sentencia nos devolvera una fecha con este aspecto: jun 160 1 991 Donde lo jun seria el
nombre del mes, 160 el nmero del ao, 1 el ultimo digito del ao y 991 los ltimos tres dgitos
del ao.
Ejemplo 2:
Select TO_CHAR(TO_DATE('01012007','ddmmyyyy'),'Month') "mes" from fechas;
Esta sentencia nos devolvera algo como esto: Enero. Para llegar a este resultado lo primero
que hacemos es convertir la cadena a tipo fecha y despus el tipo fecha a cadena con el
formato de mes.
Ahora pasamos a describir 5 funciones ms que nos podemos encontrar pero que se suelen
utilizar poco
Funcin
USER
Proposito
Nos devuelve el nombre del usuario actual
VSIZE(expresin)
UID
56
Ejemplo 1:
Mostramos el nombre de los alumnos y si su asignatura es lengua le ponemos un cdigo 1, si
es matemticas un cdigo 2 y si no es ninguna de esas un 3.
Select alumnos, DECODE (asignatura, 'lenguaje',1, 'matemticas', 2, 3) "cdigo" from alumnos;
Ejemplo 2:
Mostramos el usuario que est conectado.
Show USER;
Ejemplo 3:
Mostramos el nmero de bytes que tiene la columna nombre de la tabla usuarios.
Selec t VSIZE(nombre) "tamao", nombre from usuarios;
Artculo por
Sara Alvarez
Los datos seleccionados en la sentencia que lleva el group by deben ser o una constante, o una
funcion de grupo o una columna que aparezca en el group by tambin.
En general group by lo utilizamos para calcular propiedades de uno o ms conjuntos de filas.
La clusula having es muy parecida a where pero funciona para grupos de filas y controla cal
de los conjuntos de filas se visualiza.
Os pongo un ejemplo para que se entienda mejor:
Visualizar el nmero de alumnos por cada asignatura si el departamento tiene mas de 4
alumnos.
select asignatura, count(*) from alumno group by asignatura having count(*) > 4;
Tambin podriamos ordenar dicha consulta aadiendo un order by al final, por ejemplo por
asignatura, quedando asi la consulta:
57
select asignatura, count(*) from alumno group by asignatura having count(*) > 4 order by
asignatura;
Podemos realizar consultas un poco ms complicadas utilizando tambin funciones de grupo.
Por ejemplo:
Visualizar el nmero de departamento, la suma de los salarios, el salario mximo y el salario
mnimo de cada departamento.
select departamento, sum(salario) as suma, max(salario) as maximo, min(salario) as minimo
from empleado group by departamento;
Con esta sentencia nos saldrian 4 columnas, en la primera nos saldria el departamento, en la
segunda la suma de todos los salarios de ese departamento, en la siguiente el salario ms alto
y el la ltima el salario ms bajo del departamento.
Con estas clusulas ya puedes realizar casi cualquier consulta, por lo que viene en prximos
artculos ya es algo ms complicado, pero nada imposible.
Artculo por
Sara Alvarez
Como veis es bastante fcil y no crea mayor duda. Los registros que no tengan
correspondencia con la otra tabla no aparecern. Para que aparezcan tendremos que colocar el
smbolo (+) al final del where y la columna que queremos que aparezca.
Un ejemplo de select seria el siguiente:
select departamento.num, departamento.nombre, emple.nombre
from departamento, nombre
where departamento.num=emple.num;
Aqu agrupamos por el num del departamento que se encuentra en las dos tablas.
58
Operador unin
Este operador combina los resultados de dos columnas. Si existe alguna fila duplicada solo
aparece una en el resultado.
Su formato es el siguiente:
select col1, col2, ... from tabla1 where condicin
union
select col1, col2, ... from tabla2 where condicin;
Si queremos que nos aparezcan tambin las filas duplicadas tenemos que utilizar el operador
unin all
Por ejemplo si quisiramos mostrar todos los trabajadores de una empresa, tanto los nuevos
como los dados de baja tendramos que hacer una sentencia como esta:
select nombre from trabajadores_nuevos
union
select nombre from trabajadores_viejos;
Operador intersect
Este operador nos devuelve las filas que son iguales en ambas consultas. Como en el anterior
por defecto las filas duplicadas se eliminan y no se muestran en el resultado.
Su formato es el siguiente:
select col1, col2, ... from tabla1 where condicin
intersect
select col1, col2, ... from tabla2 where condicin;
Un ejemplo muy sencillo seria mostrar los alumnos que todava estn estudiando.
select nombre from alumnos_activos
intersect
select nombre from alumnos;
Operador minus
El operador minus nos devuelve las flas que estn en la primera select y no en la segunda.
Como en los casos anteriores las filas duplicadas no se muestran en el resultado.
Su formato es:
select col1, col2, ... from tabla1 where condicin
minus
select col1, col2, ... from tabla2 where condicin;
Un ejemplo para este operador seria mostrar los alumnos que no estn en actives
select nombre from alumnos
minus
select nombre from alumnos_activos;
Para finalizar os comento que estos tres ltimos operadores los podemos encadenar, teniendo
59
Sara Alvarez
Donde el nombre_tabla es el nombre de la tabla donde queremos insertar los nuevos datos.
[(columna [, columna])] representas las columnas donde vamos a insertar los datos. Si no las
especificamos por defecto se entiende que vamos a introducir datos en todas las columnas de
la tabla.
(valor [,valor]) representan los valores que vamos a insertar en dichas columnas. Estos valores
deben estar colocados en las mismas posiciones que las columnas a las que pertenecen.
Cualquier columna que no aparezca en el insert se rellenara con NULL siempre y cuando dicha
columna no est definida como NOT NULL. Si la columna es NOT NULL y no aparece en el insert
la orden nos devolver error.
Ejemplo: Damos de alta un nuevo alumno en la tabla alumno
Insert into alumno (nombre, dni, apellidos) values ('PEPE','47334562T','SANCHEZ');
60
Como veis es bastante sencillo insertar datos en una tabla, lo nico que tenemos que tener en
cuenta es que necesitamos conocer las columnas de la tabla donde queremos insertar dichos
datos.
En el siguiente artculo pasaremos a actualizar datos ya existentes en las tablas con la orden
UPDATE, y a borrar datos con la orden DELETE.
Artculo por
Sara Alvarez
Como veis la sentencia puede asustar un poco es sencilla de comprender. Actualizamos los
61
Artculo por
Sara Alvarez
62