Está en la página 1de 24

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:

Diseo descendente (top-dow): el problema se descompone en etapas o estructuras jerrquicas. Recursos abstractos (simplicidad): consiste en descompones las acciones complejas en otras ms simples capaces de ser resueltas con mayor facilidad. Estructuras bsicas: existen tres tipos de estructuras bsicas:

Estructuras secunciales: cada accin sigue a otra accin secuencialmente. La salida de una accin es la entrada de otra.

Estructuras selectivas: en estas estructuras se evalan las condiciones y en funcin del resultado de las mismas se realizan unas acciones u otras. Se utilizan expresiones lgicas.

Estructuras repetitivas: son secuencias de instrucciones que se repiten un nmero determinado de veces.

Las principales ventajas de la programacin estructurada son:

Los programas son mas fciles de entender Se reduce la complejidad de las pruebas Aumenta la productividad del programador Los programas queden mejor documentados internamente.

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. Programacin lgica Se suele utilizar en la inteligencia artificial y pequeos programas infantiles. Se trata de una programacin basada en el clculo de predicados (una teora matemtica que permite lograr que un ordenador basndose en hecho y reglas lgicas, pueda dar soluciones inteligentes).

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.

Este tipo de arquitectura es la ms utilizada en la actualidad, debido a que es la ms avanzada y la que mejor ha evolucionado en estos ltimos aos.

Podemos decir que esta arquitectura necesita tres tipos de software para su correcto funcionamiento:

Software de gestin de datos: Este software se encarga de la manipulacin y gestin de los datos almacenados y requeridos por las diferentes aplicaciones. Normalmente este software se aloja en el servidor.

Software de desarrollo: este tipo de software se aloja en los clientes y solo en aquellos que se dedique al desarrollo de aplicaciones.

Software de interaccin con los usuarios: Tambin reside en los clientes y es la aplicacin grfica de usuario para la manipulacin de datos, siempre claro a nivel usuario (consultas principalmente).

A parte de estos existen ms aplicaciones software para el correcto funcionamiento de esta arquitectura pero ya estn condicionados por el tipo de sistema operativo instalado, el tipo de red en la que se encuentra, etc.

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.

Elementos del modelo entidad-relacin

Entidad Se trata de un objeto del que se recoge informacin de inters de cara a la base de datos. Grficamente se representan mediante un rectngulo. Un ejemplo seria la entidad banco, donde se recogeran los datos relativos a ese banco, como puede ser el nombre, el nmero de sucursal, la direccin, etc.

Dentro de las entidades pueden ser fuertes o dbiles. Las fuertes son las que no dependen de otras entidades para existir, mientras que las entidades dbiles siempre dependen de otra entidad sino no tienen sentido por ellas mismas.

Relacin Podemos definir la relacin como una asociacin de dos o ms entidades. A cada relacin se le asigna un nombre para poder distinguirla de las dems y saber su funcin dentro del modelo entidad-relacin. Otra caracterstica es el grado de relacin, siendo las de grado 1 relaciones que solo relacionan una entidad consigo misma. Las de grado 2 son relaciones que asocian dos entidades distintas, y las de grado n que se tratan de relaciones que unen mas de dos entidades.

Las relaciones se representas grficamente con rombos, dentro de ellas se coloca el nombre de la relacin. Otra caracterstica es el tipo de correspondencia entre dos relaciones;

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.

Qu es, como se construye y como se utiliza este simple pero potente modelo relacional de datos.
Se trata de un modelo bastante potente y a la vez bastante simple , que nos representas problemas. El elemento principal de este modelo es la relacin. Por lo que podemos decir que una base de datos relacional est compuesta por un conjunto de relaciones.

Relacin La relacin se representa mediante una tabla, esta tabla representa a lo que en el modelo

entidad-relacin llambamos entidad. Esta tabla contiene los atributos (columnas) y las tuplas (filas).

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:

dominios generales: son aquellos que estn comprendidos entre un mximo y un mnimo. dominios restringidos: son los que pertenecen a un conjunto de valores especficos.

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.

Pasamos a tablas los datos que tenemos en el modelo entidad-relacin.

Para pasar a tablas todos los datos sin dejarnos nada y que las tablas tengan sentido por si solas tenemos que seguir unos pasos:

Toda entidad se transforma en una tabla todo atributo se transforma en una columna dentro de la tabla a la que pertenece El identificador de la entidad se convierte en la clave primaria de la tabla Toda relacin N:M se convierte en una tabla que tendr como clave primaria las dos claves primarias de las entidades que se asocian En las relaciones 1:N la clave primaria de la entidad con cardinalidad 1 pasa a la tabla de la entidad cuya cardinalidad es N en las relaciones N:M existen tres posibilidades: Si la cardinalidad es (0,1) en ambas entidades, se crea tabla. Mientras que si la cardinalidad de una es (0,1) y de la otra es (1,1) se suele pasar la clave primaria de (1,1) a la de (0,1). Si la cardinalidad de ambas es (1,1) se pasa la clave de cualquiera de ellas a la otra.

Para este modelo de entidad-relacin el paso a tablas quedara de la siguiente forma:

Los recomiendo que practiqueis el paso a tablas, ya que es un factor sumamente importante de cara a la construccin de tu base de datos para la web.

El modelo ER describe datos como, entidades, relaciones y atributos. Entidades y Atributos

Las Entidades y sus Atributos.- El objeto bsico que un modelo de ER representa es una entidad, que es un "objeto" en el mundo real con una existencia independiente. Una entidad puede ser un objeto con una existencia fsica ( por ejemplo, una persona, un automvil, una casa o un empleado ) o este puede ser un objeto con una existencia conceptual ( por ejemplo, una compaa, un trabajo, un curso universitario). Cada entidad tiene atributos - la propiedades particulares que lo describen. Por ejemplo, la entidad de un empleado puede describir el nombre del empleado, su edad, su direccin, su salario, su trabajo especfico. Una entidad particular tendr un valor para cada uno de sus atributos. Los valores de los atributos que describen cada entidad componen los datos almacenados en una base de datos. En el modelo ER pueden existir varios tipos de atributos: simples / compuestos, valor sencillo / valor mltiple, y almacenados / derivados. Atributos Simples (atmicos) / Compuestos. Los atributos compuestos pueden ser divididos en pequeas partes, las cuales representan atributos bsicos con existencia independiente. Por ejemplo, el atributo Direccin puede ser dividido en Domicilio, Ciudad, Estado y Cdigo Postal, con los valores "C. 51 No. 511", Mrida, Yucatn, 97220. Los atributos que no pueden dividirse son llamados simples o atmicos. Los atributos compuestos pueden formar una jerarqua. El domicilio puede dividirse en: Calle, Nmero y Nmero Interior. El valor de un atributo compuesto es la concatenacin de los valores que tienen sus atributos simples. Los atributos compuestos son tiles para modelar situaciones en las que el usuario algunas veces se refiere al atributos compuesto como una unidad y otras se refiere especficamente a alguno de sus componentes.

Pasamos a describir los tipos de sentencias sql que podemos encontrarnos y sus componentes sintcticos.
En SQL tenemos bastantes sentencias que se pueden utilizar para realizar diversas tareas. Dependiendo de las tareas, estas sentencias se pueden clasificar en tres grupos principales (DML, DDL,DCL), aunque nos quedara otro grupo que a mi entender no est dentro del lenguaje SQL sino del PLSQL.
SENTENCIA DML Manipulacin de datos SELECT INSERT DELETE DESCRIPCIN Recupera datos de la base de datos. Aade nuevas filas de datos a la base de datos. Suprime filas de datos de la base de datos. Modifica datos existentes en la base de datos.

UPDATE

DDL

Definicin de datos CREATE TABLE DROP TABLE ALTER TABLE CREATE VIEW DROP VIEW CREATE INDEX DROP INDEX CREATE SYNOYM DROP SYNONYM

Aade una nueva tabla a la base de datos. Suprime una tabla de la base de datos. Modifica la estructura de una tabla existente. Aade una nueva vista a la base de datos. Suprime una vista de la base de datos. Construye un ndice para una columna. Suprime el ndice para una columna. Define un alias para un nombre de tabla. Suprime un alias para un nombre de tabla.

DCL

Control de acceso GRANT REVOKE Control de transacciones COMMIT ROLLBACK

Concede privilegios de acceso a usuarios. Suprime privilegios de acceso a usuarios Finaliza la transaccin actual. Aborata la transaccin actual.

PLSQL

SQL Programtico DECLARE OPEN FETCH CLOSE

Define un cursor para una consulta. Abre un cursor para recuperar resultados de consulta. Recupera una fila de resultados de consulta. Cierra un cursor.

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.

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;

Donde profesor seria el nombre de usuario y alumnos el nombre de la tabla.

Tambin podemos darles nombres distintos o ms cortos a las tablas mediante lo que se donomina alias.
select a.nombre, a.edad from alumnos a;

La tabla alumnos toma el alias a.

WHERE Nos devuelve las filas que cumplen la condicin expresada. El formato de la condicin es el siguiente: expresin operador expresin.

Podemos construir condiciones mltiples usando los operadores lgicos AND OR y NOT, as mismo podemos utilizar los parentesis para forzar el orden de ejecucin de las expresiones.

Un ejemplo de utilizacion del where muy simple es la siguiente:


select nombre from alumno where nota>7 and edad<7;

Esta sentencia solo nos mostrara el nombre de los alumnos que cumplieran las dos condiciones expresadas.

ALL Con esta clusula recuperamos todas las filas aunque tengamos repetidas, es la clusula por defecto.

DISTINCT Es la contraria que la anterior, solo nos recupera las filas que no estn repetidas.

ORDER BY Esta clusula nos especifica el criterio de ordenacin del resultado obtenido en la consulta. ASC nos especifica una ordenacin ascendente y DES descendente.

Podemos anidar criterios siendo el situado ms a la izquierda el principal. Ponemos un ejemplo para verlo ms claro:

select * from alumnos oder by nombre, curso desc;

Esta sentencia nos mostraria todos los datos de los alumnos ordenados primero por nombre ascendente y por curso descendente.

Artculo donde vamos a hablar de los operadores dentro de la sentencia de seleccin.


Operadores aritmticos Los operadores aritmticos sirven para formar expresiones con constantes, funciones de valores de columnas.

Operador aritmtico Operacin + * /


Operadores de comparacin y lgicos

suma resta multiplicacin divisin

Operadores lgicos Operador and or not Funcin Devuelve el valor TRUE cuando los dos condiciones son verdaderas Devuelve el valor TRUE cuando una de las dos condiciones es verdadera Devuelve el valor TRUE si la condicin es falsa.

Operadores de comparacin Operador = > >= Funcin Igual a Mayor que Mayor o igual que

< <= = <>

Menor que Menor o igual que Distinto de

Operadores de comparacin de cadenas de caracteres Para comparar cadenas de caracteres utilizamos el smbolo =. Ponemos un ejemplo. Select * from emple where oficion='analista'

Este operador no nos sirve si queremos hacer una consulta del tipo de: "sacar los datos del empleado cuyo oficio empiece por P" Para especificar este tipo de consultas, en SQL usamos el operador LIKE que permite utilizar los siguientes caracteres especiales en las cadenas de comparacin: % Comodn: Representa cualquier cadena de 0 o ms caracteres '_' Marcador de posicin: representa un carcter cualquiera. Ponemos un ejemplo para que quede algo ms claro: Select * from emple where nombre LIKE 'P%'

Esta consulta nos mostrara todos los datos de los empleados cuyo nombre empezar por P

Continuamos explicando los posibles operadores que pueden aparecer en la consulta select en SQL.
Null y Not Null Se dice que una columna de una fila es NULL si est completamente vaca. Podemos utilizar estos trminos a la hora de hacer consultas si queremos saber si una columna esta vaca o no. Por ejemplo, A partir de una tabla de empleados consultamos los apellidos de aquellos que no tengan comisin, que es lo mismo que decir, aquellos que su comisin sea nula.

Select apellido from empleado where comisin IS NULL; De esta misma forma podemos preguntar por los que tengan comisin. Select apellido from empleado where comisin IS NOT NULL;

Operador IN Hasta ahora todas las comprobaciones lgicas que hemos visto comparan una columna o expresin con valor, pero tambin podemos comparar conjunto de valores.

El operador IN nos permite comprobar si una expresin pertenece a un conjunto de valores.

Su sintaxis es la siguiente: IN (lista de valores separados por comas) De la misma forma utilizamos el NOT IN para saber si no estn dentro de ese conjunto de valores.

Un ejemplo de utilizacin de IN y NOT IN: Queremos mostrar los apellidos de la tabla empleado cuyo nmero de departamento sea el 10 o el 30 Select apellido from empleado where departamento IN (10,30);

Queremos mostrar los apellidos de la tabla empleado cuyo nmero de departamento no sea ni el 10 ni el 30 Select apellido from empleado where departamento NOT IN (10,30);

Tambin lo podemos aplicar a lista de valores con cadenas: Queremos mostrar los apellidos de la tabla empleado cuyo oficio sea pen o capataz Select apellidos from empleado where oficio IN ('peon','capataz');

Operador between Este operador comprueba si un valor est comprendido o no dentro de un rango de valores. Su sintaxis es la siguiente: < expresin> [NOT] between valor_inicial AND valor_final

Ponemos un ejemplo: Queremos mostrar el apellido y el salario de los empleados cuyo salario este comprendido entre 2000 y 2500 euros Select apellido,salario from empleado where salario between 2000 and 2500

Operadores AND y OR combinados Estos operadores se pueden combinar para sacar resultados ms complicados en nuestras sentencias selects, pero siempre con cuidado y utilizando los parntesis para agrupar las expresiones que se desean evaluar. El orden de prioridad de los operadores lgicos es el siguiente, primero NOT, luego AND y por ltimo OR. Ejemplo de uso: Queremos obtener el apellido, salario y departamento de los empleados cuyo salario sea mayor de 1000 euros en los departamentos 10 o 30 Select apellido,salario, departamento from empleado where salario>1000 and (departamento=10 or departamento=30);

Pasamos a describir los distintos tipos de funciones aritmticas que nos podemos encontrar en SQL.
Este tipo de funciones trabajan nicamente con datos nmericos del tipo number, y se pueden dividir en tres grupos principales.

Funciones de valores simples

Estas funciones son las ms sencillas y trabajan con un nico numero, variable o columna de la tabla.

Funcin
ABS(n) CEIL(n) FLOOR(n) MOD(m,n) POWER(m, exponente) SIGN(valor) NVL(valor, expresin) ROUND(nmero[, m]) SQRT(n) TRUNC(nmero[,m ])

Propsito
Nos devuelve el valor absoluto de n Nos devuelve el valor entero igual o inmediatamente superior a n Nos devuelve el valor entero igual o inmediatamente inferior a n Nos devuelve el resto de la divisin de m entre n Calcula la potencia de m elevado a exponente Nos devuelve el signo de valor Funcin que nos sustituye valor por expresin siempre que valor sea NULL Nos redondea numero a m decimales Nos devuelve la raz cuadrada de n Trunca los nmeros para que tengan m decimales.

Pasamos a poner algunos ejemplos para que os quede ms claro como se utilizan:
Select ceil(2.3) from tabla; (esta consulta nos devolvera 3) Select mod (11,4) from tabla; ( nos devolvera 3) Select round(22.38,1) from tabla; (nos devolvera 22.4)

Funciones de grupos de valores Este tipo de funciones se utilizan principalmente para realizar estadsticas, por lo que los valores nulos no se toman en cuenta. Dentro de este grupo se encuentran las siguientes funciones:

Funcin
AVG(n) MAX(expresin) MIN (expresin) VARIANCE(expresin) SUM(expresin)

Propsito
Nos devuelve la media de n Nos devuelve el valor mximo de expresin Nos devuelve el valor mnimo de expresin Nos devuelve la varianza de expresin Nos devuelve la suma de valores de expresin.

COUNT(*|expresin) Nos devuelve el nmero de veces que aparece expresin.

Pasamos a poner algunos ejemplos:

Select avg(salario) from empleado; (nos devolvera el salario medio de todos los empleados) Select count(*)from empleado; (nos devuelve el numero de empleados que tenemos) Select min(salario) from empleado; (nos devuelve el menor salario encontrado en la tabla empleado)

Funciones de listas Estas funciones trabajan con grupos de columnas dentro de una misma fila. Dentro de este grupo de funciones se encuentran las siguientes :

Funcin
LEAST(valor1, valor2,...)

Propsito
Obtiene el menor valor de la lista

GREATEST(valor1, valor2, ) Obtiene el mayor valor de la lista

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;

Pasamos a describir y explicar las funciones de cadenas dentro de sql y las dividimos en dos grupos, las que devuelven caracteres y las que devuelven nmeros.
Las funciones de cadena trabajan con campos char y varchar por lo que los literales que escribamos se deben encerrar entre comillas simples.

Estas funciones que vamos a explicar a continuacin pueden manipular cadenas de letras u otros caracteres por lo que las vamos a dividir en dos grupos:

Funciones que devuelven caracteres Este tipo de funciones devuelven un carcter o varios caracteres.

Funcin
CHR(n) CONCAT(cad1, cad2) UPPER(cad) LOWER(cad) LPAD(cad1,n[,cad2])

Propsito
Nos devuelve el carcter cuyo valor en binario es n Nos devuelve cad1 concatenada con cad2 Convierte cad a maysculas Convierte cad a minsculas Con esta funcin aadimos caracteres a cad1 por la izquierda hasta una longitud mxima dada por n

INITCAP(cad)
LTRIM(cad [,set])

Convierte la primera letra de cad a mayscula


Elimina un conjunto de caracteres a la izquierda de

cad, siendo set el conjunto de caracteres a eliminar RPAD(cad1, n[,cad2]) RTRIM(cad[,set]) REPLACE(cad,cadena_buscada [,cadena_sustitucion] ) SUBSTR(cad, m[,n]) Con esta funcin aadimos caracteres de la misma forma que con la funcin LPAD pero esta vez los aadimos a la derecha Hace lo mismo que LTRIM pero por la derecha Sustituye un conjunto de caracteres de 0 o ms caracteres, devuelve cad con cada ocurrencia de cadena_buscada sustituida por cadena_sustitucion Devuelve la subcadena de cad que abarca desde m hasta el numero de caracteres dados por n. Convierte caracteres de una cadena en caracteres diferentes. Devuelve cad1 con los caracteres encontrados en cad2 y sustituidos por los caracteres de cad3

TRANSLATE(cad1,cad2,cad3)

Ponemos algunos ejemplos de utilizacin de estas funciones: Sentencia sql que nos devuelve las letras cuyo valor asccii es el 45 y el 23

select CHR(45), CHR(23) FROM TABLA;

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)
select CONCAT ('el nombre de alumno es', nombre) from alumno;

Sentencia sql que me devuelve los nombres de los alumnos en maysculas


select UPPER(nombre) from alumno;

Sentencia sql que obtiene de un campo nombre, las 3 primeras letras


select SUBSTR(nombre,0,3) from alumno;

Y asi con el resto de funciones Funciones que devuelven valores numricos Estas funciones nos devuelven nmeros a modo de informacin.

Funcin
ASCII(cad) INSTR(cad1, cad2[,comienzo[,m]]) LENGTH(cad)

Propsito
Devuelve el valor ASCII de la primera letra de cad Funcin que busca un conjunto de caracteres dentro de una cadena. Nos devuelve la posicin de cad2 en cad1 empezando a buscar en comienzo Devuelve en nmero de caracteres de cad

Como con las funciones anteriores dejamos unos ejemplos para que veis su funcionamiento. Sentencia sql que nos devuelve el valor ASCII de la letra ('s')
select ASCII('s') from tabla;

Sentencia que nos devuelve la posicin de la ocurrencia 'pe' dentro de la cadena 'Los perros estn bien' a partir de la posicin 2
select INSTR('Los perros estn bien','pe',2) from tabla;

Sentencia sql que nos devuelve el numero de caracteres de los nombres de los alumnos
select LENGTH(nombre) from alumnos;

Pasamos a describir las posibles funciones que te permiten trabajar con las fechas en el lenguaje SQL.
Dentro de SQL tenemos un tipo de dato denominado DATE. Este campo tiene el siguiente formato predeterminado:

'dd/mm/yy' Este formato lo podemos modificar con la funcin TO_CHAR de la cual hablaremos ms adelante en el siguiente artculo. Cabe sealar que el tipo de dato DATE tambin almacena la siguiente informacin en el siguiente orden:

Siglo/Ao/Mes/Da/Hora/Minutos/Segundos A continuacin mostramos una tabla con las funciones para el manejo de fechas en SQL:

Funcin
SYSDATE ADD_MONTHS (fecha, n) LAS_DAY (fecha) MONTHS_BETWEEN (fecha1, fecha2) NEXT_DAY (fecha, cad)

Propsito
Devuelve la fecha del sistema Devuelve la fecha incrementada en n meses Devuelve la fecha del ltimo da del mes que contiene fecha Devuelve la diferencia en meses entre la fecha1 y la fecha2 Devuelve la fecha del primer da de la semana indicado por cad despus de la fecha indicada por fecha. Cad ser siempre un da de la semana escrito con letras, por ejemplo Monday.

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;

Ejemplo3: vamos a obtener el da que ser el prximo lunes


Select next_day(sysdate, 'Monday') "siguiente dia" from tabla;

En este artculo vamos a revisar las funciones que nos cambian un tipo de dato en otro y el resto de funciones que nos podemos encontrar.

Vamos a comenzar con las funciones de conversin que pasamos a mostrar en la siguiente tabla:

Funcin
TO_CHAR(fecha,'formato') TO_CHAR(numero,'formato') TO_DATE(cad,'formato') TO_NUMBER(cadena,['formato'])

Propsito
Esta funcin nos convierte una fecha de tipo date a una fecha de tipo varchar2 Nos convierte un dato de tipo number a un tipo varchar2 Convierte un tipo de dato varchar2 o char a un valor de tipo date con el formato especificado Convierte una cadena a tipo de dato number, y si se le pasa, con el formato especificado

Ponemos algn ejemplo para que quede todo mas claro. Ejemplo 1:
Select TO_CHAR(fecha,'mon aaa y yyy') "fecha nueva" from emple;

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 VSIZE(expresin) UID DECODE(var,val1,cod1,val2,cod2 ,valor-pordefecto) DUMP(cadena,[,formato[,comienzo[,longitud]]])

Proposito
Nos devuelve el nombre del usuario actual Nos devuelve el nmero de bytes que ocupa la expresin. Nos devuelve el identificador del usuario actual Funcin que sustituye un valor por otro. Si var es igual a cualquier val de la lista lo sustituye por su correspondiente cod Visualiza el valor de cadena desde el comienzo hasta longitud, con el formato especificado.

Pasamos a poner algunos ejemplos.

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;

Pasamos a explicar el funcionamiento de las clusulas GROUP BY y HAVING.


Con estas clausulas vamos a poder hacer consultas ms complejas y avanzadas que nos permitiran filtrar mejor la informacin o sacar conjuntos de informaciones ordenadas de una determinada forma. La sentencia select nos deja agrupar uno o ms conjuntos de filas si utilizamos la clusula gruop by por las columnas especificas y el orden especificado, siendo el formato el siguiente:

select ... from ... group by columna1, columna2, columnaN.... having condicion order by....

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. Los 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: 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.

Seguimos con las clausulas avanzadas, esta vez pasamos a explicar el outer join, unin, intersect y minus.
Para comenzar os comento un poco que en artculos anteriores hemos hablado de la combinacin de tablas, concepto que vamos a necesitar tener bastante claro para poder entender el resto de clausulas avanzadas de seleccin. Combinacin externa (outer join) Esta clausula nos permite seleccionar filas de una tabla aunque no tengan correspondencia con flas de la otra tabla con la que se la combina.

Su formato es el siguiente:
select tabla1.columna1, tabla1.columna2, tabla2.columna2 from tabla1, tabla2 where tabla1.columna1=tabla2.columna1;

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.

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 en cuenta que siempre se evalan de izquierda a derecha.

Adems es importante saber que si vas a realizar este tipo de consultas siempre tiene que haber el mismo nmero de columnas en las dos select y que los tipos de datos deben coincidir.

Empezamos con la manipulacin de datos explicando la orden insert que nos ayuda a insertar datos en nuestras tablas.
Para insertar datos en una tabla utilizaremos la orden insert con el siguiente formato:
Insert into nombre_tabla [(columna [, columna]...)] values (valor [,valor]...);

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');

Ejemplo 2: Damos de alta una asignatura nueva


Insert into asignatura (nombre, horas, dept_no) values ('Lengua',4,10);

Tambin podemos aadir valores directamente desde una consulta select. Para ello realizamos una consulta select en la que aadimos un insert y como resultado tendremos tantas nuevas filas como resultados tenemos en el select. El formato de estas inserciones es el siguiente:
Insert into nombre_tabla1 [(columna[,columna]...)] Select {columna [,columna?|*} From nombretabla2 [clasulas de select];

Para que se vea mejor os dejo un ejemplo donde se ve bastante bien. Ejemplo: Insertamos los datos de los empleados del departamento 10 (tabla emple10) en la tabla de emple.
Insert into emple Select *

from emple10 Where Departamento=10;

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.

Pasamos a explicar cmo hacer una actualizacin a partir de un select y cmo podemos borrar registros de nuestra base de datos.
Update con select

Muy a menudo tenemos la necesidad de actualizar ciertos campos que requieren de una consulta previa, para estos casos podemos realizar todo en una misma sentencia. Para realizar dicha sentencia utilizaremos un update y dentro del where o el set colocaremos el select con la consulta que necesitemos.

Tenemos que tener en cuenta que cuando la consulta forma parte del set debemos seleccionar una nica fila y el mismo nmero de columnas que hay entre parntesis al lado del set. La sintaxis es la siguiente:

update <nombre tabla> set columna1=valor1, columna1=valor2, .. where columna3=(select ...);

Si utilizamos el set seria esta otra:


update <nombre tabla> set (columna1,columna2, ?)=(select col1, col2,..) where condicin;

Y podramos mezclar los dos casos sin ningn tipo de problema. Los dejo un ejemplo para que veis como funciona: Tenemos que cambiar el salario a la mitad y la comisin ponerla a 0 a todos los empleados que pertenezcan al departamento con mayor nmero de empleados.

Update empleado set salario=salario/2, comision=0 where departamento=(select departamento from empleado group by departamento having count(*)=(select max(count(*))

from empleado group by departamento));

Como veis la sentencia puede asustar un poco es sencilla de comprender. Actualizamos los datos que nos piden y hacemos en el where la bsqueda de aquellos empleados que cumplen esos criterios.

Delete Esta orden nos permite borrar una o varias filas de una tabla. En esta orden la clusula where es esencial ya que si no la ponemos adecuadamente corremos el riesgo de eliminar registros no deseados. Si no ponemos un where en la sentencia, esta nos borrar todos los registros de la tabla.

Hay que recordar que al igual que el update esta sentencia tambin puede llevar una subconsulta aadida. La sintaxis general es bastante sencilla:
delete from nombretabla where condicin;

los pongo dos ejemplos de utilizacin de la orden delete: Borra los empleados del departamento 20
delete from empleado where departamento=20;

Borra los departamentos con menos de cuatro empleados


delete from depart where departamento in (select departamento from empleado group by departamento having count(*)<4);

También podría gustarte