• No se han encontrado resultados

CÓMO MEJORAR EL DESARROLLO SOFTWARE CON EL USO DE BASE DE DATOS CRISTIAN CAMILO RAMIREZ RUBIO COD:

N/A
N/A
Protected

Academic year: 2021

Share "CÓMO MEJORAR EL DESARROLLO SOFTWARE CON EL USO DE BASE DE DATOS CRISTIAN CAMILO RAMIREZ RUBIO COD:"

Copied!
21
0
0

Texto completo

(1)

CÓMO MEJORAR EL DESARROLLO SOFTWARE CON EL USO DE BASE DE DATOS

CRISTIAN CAMILO RAMIREZ RUBIO COD: 066121026

MONOGRAFÍA PARA OPTAR EL TÍTULO DE INGENIERO DE SISTEMAS

UNIVERSIDAD LIBRE FACULTAD DE INGENIERÍA

INGENIERÍA DE SISTEMAS BOGOTÁ D.C.

(2)

RESUMEN

En este documento se explicarán las herramientas de desarrollo sql que se encuentran en oracle como funciones, operadores, sentencias, entre otras para el desarrollo de base datos, haciendo el correcto uso de estas se podrá mejorar el desarrollo software, se explicara cada una de la manera más comprensible posible dando ejemplos que ayuden a entender mejor su funcionamiento y su utilidad.

1. INTRODUCCIÓN

La programación es una de las principales actividades en el mundo ya que la mayoría de las empresas usan software para manejar sus procesos y optimizar los

(3)

tiempos en dichos procesos, pero no solo las empresas hacen uso del software ya que este se puede encontrar en todos los ámbitos sociales, educativos y de entretenimiento con esto la demanda del desarrollo de software es bastante alta y requiere que los desarrollos sean eficientes, fáciles de manejar y rápidos.

De esta manera el desarrollo de software se ha vuelto sumamente importante en estos tiempos ya que cada vez las personas que lo consumen son más exigentes, estos desarrollos deben estar a la altura de sus expectativas de las personas que lo consumen por lo tanto cada vez debe ser mejor y más óptimo para lograr una satisfacción.

Se sabe que un software cuenta con un Front-end, Back-end y una base de datos entonces ¿cómo se puede mejorar el desarrollo de software?. Esta es una pregunta un poco difícil de responder ya que cada componente de un desarrollo es un tema bastante amplio, pero se sabe que la lógica de negocio del software siempre está en la base de datos, ya que en ella se encuentra la información que se manipulara. Con lo anterior este documento se enfocará determinar cómo se puede mejorar la programación de base de datos, se analizará cómo usando las herramientas que ofrece SQL y PL/SQL que usa Oracle, se podrá mejorar el desarrollo de software.

2. DESARROLLO

Las bases de datos son usadas para el almacenamiento de datos y la manipulación de los mismos como lo puede ser agregar, actualizar, mostrar y eliminar la información que contenga , pero la realidad es que las bases de datos permiten hacer mucho más con dicha información, para poder llegar a esto primero se

(4)

recordará cómo se puede manipular la información en una base de datos de lA manera más básica.

En Oracle existen dos perfiles de base de datos que son: los usuarios y los esquemas.

● Los Usuarios son aquellos que solo tienen acceso a la información pero autoridad sobre esta es decir no pueden manipularla.

● Los Esquemas son aquellos que tiene autoridad sobre la información es decir que pueden manipularla.

Estas son a lo que mi parecer es la manera más adecuada y sencilla de definir estos perfiles de base de datos queda aclarar que esta es una definición corta pero será suficiente para el propósito de este documento.

SELECT

Lo primero que se hará es un SELECT sencillo que es lo más básico de la programación de base de datos. Es una sentencia para obtener la información de una tabla, se hace de la siguiente manera

SELECT * FROM “nombre_tabla” esta consulta traerá toda la información de la tabla.

SELECT campo1,campo2 FROM “nombre_tabla” está solo los datos que estén en las columnas campo1 y campo2.

SELECT campo1,campo2 FROM “nombre_tabla” WHERE campo3=condición esta consulta traerá los campos 1 y 2 en donde se cumpla la condición establecida. Estos son algunos ejemplos de un select más adelante se mostrará como se puede usar de una mejorar manera explotando todo su potencial.

INSERT INTO

El INSERT es la sentencia para agregar datos a una tabla, su sintaxis es la siguiente.

INSERT INTO “nombre_tabla” (campo1,campo2,campo3) VALUES (valor1,valor2,valor3) esta sentencia guardara los valores correspondientes en el orden en que se encuentran con los campos

(5)

INSERT INTO “nombre_tabla” VALUES (valor1,valor2,valor3) en esta sentencia se muestra que no es necesario especificar los campos si se va a agregar todos los campos de la tabla

UPDATE

El UPDATE es la sentencia para actualizar uno o varios datos de una tabla y su sintaxis es la siguiente.

UPDATE “nombre_tabla” set campo1=valor1 esta sentencia actualizará todos los campos1 con el valor1.

UPDATE “nombre_tabla” set campo1=valor1 WHERE campo2=condicion esta sentencia actualiza los campos1 con el valor1 que cumplan con la condición del campo2

DELETE

El DELETE es la sentencia que permite eliminar los registros en la tabla, se hace de la siguiente forma.

DELETE FROM “nombre_tabla” esta instrucción eliminara todos los datos de la tabla.

DELETE FROM “nombre_tabla” WHERE campo1=condicion esta instrucción eliminar solo los datos que cumplan con la condición.

Haciendo un pequeño repaso de las sentencias más comunes que son el SELECT, INSERT INTO, UPDATE y el DELETE se puede comenzar a observar todas las herramientas que nos ofrece el lenguaje SQL y PL/SQL para lograr un programación que ayude al desarrollo software.

3. OPERADORES ARITMÉTICOS

Para determinar cómo el uso de SQL Y PL/SQL puede mejorar el desarrollo software se iniciará explicando los operadores aritméticos.

Estos operadores son +, -, /, * y aunque parezca que no son de gran utilidad la verdad es que pueden ayudar mucho, son bastante útiles ya que con estos se pueden realizar varias operaciones dentro la mismas consultas como los siguientes ejemplos.

(6)

Se cuenta con una tabla llamada productos que tiene las siguiente columnas nombre_producto y valor_producto se mostrará un precio diferente del producto sin alterarlo en la tabla se puede hacer de la siguiente manera.

SELECT nombre_producto, valor_producto*2 FROM productos esta consulta traerá todos nuestro productos con el precio multiplicado por 2, sólo será visualmente aunque la información será la misma, si se cambiara el * por otro operador realizará la operación correspondiente y esto es lo que mostrará en la consulta.

Estos operadores no solo se pueden usar en un SELECT se pueden usar en cualquier consulta a continuación algunos ejemplos:

UPDATE productos set valor_prodcuto=(valor_producto+1000) SELECT nombre_producto, (valor_producto*100)/2 from products UPDATE productos set valor_prodcuto=(valor_producto-1000)/4

Estos ejemplos fueron sencillos pero dan una idea de útiles que pueden ser los operadores aritméticos y que en ocasiones solo con conocer las bases se puede mejorar las prácticas de desarrollo.

Ahora se verán otros aspectos básicos pero a su vez importantes.

4. ALIAS, CONCATENACIÓN Y CADENAS DE CARACTERES EN CONSULTAS Estas funciones se usan en su mayoría para ayudar en la visualización de los datos como se mostrará a continuación:

ALIAS

Un alias es la manera de sobrenombrar a los elementos en una sentencia, estos pueden ayudar a identificar más rápidamente los elementos que se están manipulando en la consulta un ejemplo sería:

SELECT nombre_producto AS Producto, valor_Producto AS Valor FROM productos P

En este ejemplo se puede observar cómo las columnas ahora serán identificadas por el nombre que se les asignó después del AS, y para las tablas solo será necesario darle un valor después de su nombre esta última es bastante útil ya que si

(7)

existieran dos tablas con una columna que se llame igual se identificará por el alias haciendo referencia a la tabla de donde proviene, un ejemplo sería el siguiente: SELECT P1.valor_producto, P2.valor_producto FROM productos1 P1, Productos2 P2 o bien SELECT productos1.valor_producto, Productos2 .valor_producto FROM productos1, Productos2

Los Alias también pueden ser usados de esta manera AS “nuevo nombre”.

Aunque en lo personal prefiero darles un alias ya que de esta manera se es más fácil y rápido leer la consultas.

CONCATENACIÓN Y CADENAS DE CARACTERES

La concatenación es la manera de unir los resultados de los campos facilitando la visualización de los datos sin la necesidad de crear campos adicionales con la misma información, para hacer esto en oracle se usa el carácter || de la siguiente manera:

SELECT nombre_producto||valor_producto AS “nombre valor” FROM productos

El resultado que arrojara sera la union de los dos campos sin necesidad de crear uno nuevo.

También se pueden usar cadenas de caracteres solas sin necesidad de que haya un campo en la tabla, por ejemplo:

SELECT nombre_producto||’ su valor es ‘||valor_producto FROM producto De esta manera ya se incluirá las cadenas de caracteres sin que estén en una tabla de, igualmente estas son tratadas como un campo más en el momento de realizar las consultas SELECT ‘CAMPO 1 ’,’CAMPO 2’,nombre_producto FROM productos.

4. RESTRICCIONES

Las restricciones son las sentencias que utilizaremos para delimitar la información que se mostrará de una consulta, ya se ha observado la manera de filtrar la información y haciendo uso de la sentencia WHERE ya que esta es la que indica cuales son las condiciones para filtrar la información en la consulta, ahora se explica a mayor detalle esta sentencia y de algunas posibles restricciones que se puede usar con esta.

(8)

RESTRICCIONES COMPARATIVAS

En las comparativas se encuentran las siguientes: =, >,=>,<, <=, <>, IN, BETWEEN, LIKE Y NULL estas restricciones comparan un campo con las condición establecida por ejemplo:

SELECT * FROM productos WHERE valor_producto = 1000 esta consulta traera los productos que tengan un valor igual a 1000, SELECT * FROM productos WHERE valor_producto > 1000 aquí que sean mayores a 1000, SELECT * FROM productos WHERE valor_producto < 1000 que sean menores a 1000, SELECT * FROM productos WHERE valor_producto >= 1000 mayor e igual a 1000, SELECT * FROM productos WHERE valor_producto <= 1000 menor e igual a 1000, SELECT * FROM productos WHERE valor_producto <> 1000 diferente a 1000, SELECT * FROM productos WHERE valor_producto IN (1000,900) los productos que contengan los valores de 1000 y 900, SELECT * FROM productos WHERE valor_producto BETWEEN 1000 AND 2000 traerá los productos que cuyo valor esté entre 1000 y 2000, SELECT * FROM productos WHERE nombre_producto LIKE ‘producto1’ traera los productos cuyo nombre sea producto1 sin importar las mayúsculas ni minúsculas, esta condición es bastante particular ya que ya que se puede usar con un carácter especial que es el % y significa que ignora lo que está antes o después de este por ejemplo ‘%1’ si se colocara de esta manera traerá los productos en los que el nombre termine en 1 porque antes de el uno todo será ignorado, si se colocara de la siguiente manera ‘1%’ traera los productos en los que el nombre comience en uno y si se usara de esta manera ‘%1%’ traera los productos que contengan 1 en su nombre, ya no le importaran los caracteres ni antes ni después del 1, esta es una condición bastante usada ya que sirve para filtrar algo sin saber su valor exacto, SELECT * FROM productos WHERE valor_producto IS NULL y finalmente esta condición es que traerá los productos con un valor de NULL.

RESTRICCIONES LÓGICAS

Estas restricciones son AND, OR, NOT estas restricciones se usan en conjunto con otra condición, esto quiere decir que se necesitan dos o más condiciones para hacer uso de ellas los ejemplos serían los siguientes:

(9)

SELECT * FROM productos WHERE valor_prodcuto < 1000 AND nombre_producto LIKE ‘%prod%’ esta consulta traerá los productos si solo las 2 condiciones se cumplen, SELECT * FROM productos WHERE valor_prodcuto < 1000 OR nombre_producto LIKE ‘%prod%’ esta consulta traerá los productos si una u otra condición se cumple y SELECT * FROM productos WHERE valor_prodcuto NOT IN ( 1000,900) él NOT niega una condición comparativa y se usa con IN, LIKE, BETWEEN Y NULL.

Saber los tipos de restricciones ayuda a que las consultas sean más precisas y eficientes porque no trae informacion innecesaria, también es importante saber cuales son para usar las que más convengan, por ejemplo si se quisiera que la consulta filtre por un campo con tres datos distintos usamos el IN si fuera solo uno se usa el = y de esta manera con las demás restricciones.

5. FUNCIONES

Hay varias maneras de restringir la información, operaciones básicas con los campos y formas de de visualizar mejor la información.Hay algo muy importante en la programación de base de datos y son sus funciones que muchas veces por el desconocimiento de las mismas son poco usadas y pueden ser muy útiles al momento del desarrollo del software. Pero que es una funcion, basicamente es la manera de modificar un dato o en este caso un campo ya sea cambiando el tipo de dato al que está asociado el campo ó haciendo una operación en concreto con ese campo.

Una función recibe un argumento y devuelve otro valor.

FUNCIONES PARA CARACTERES

Las funciones para caracteres se dividen en dos: los casos de conversión y la manipulación de los caracteres.

En los casos de conversión se encuentran las siguientes funciones UPPER, LOWER e INITCAP.

UPPER: Esta función convierte todo el carácter que se pase como argumento en mayúsculas su sintaxis es la siguiente UPPER(‘el producto es’) y el resultado sería EL PRODUCTO ES, también su argumento puede ser un campo claro mientras este sea de tipo de carácter un ejemplo practico seria SELECT

(10)

UPPER(nombre_producto) FROM productos el resultado es que todos los nombres de los productos estarán en mayúsculas.

LOWER: Esta función es similar a UPPER, lo que cambia es que al usar esta el resultado es que el carácter que se pasa como argumento será convertido todo en minúsculas ejemplo LOWER(‘EL PRODUCTO ES’) el resultado sería el producto es al igual que con UPPER esta función también se puede usar con campos de una tabla.

INITCAP: Está función es como las anteriores recibe un carácter como argumento que también puede ser un campo de una tabla pero lo que devuelve el el carácter con las primeras letra en mayúscula INITCAP(‘el producto es’) el resultado sería El Producto Es.

Las funciones de manipulación de caracteres que son CONCAT, SUBSTR, LENGTH, INSTR, LPAD, RPAD, REPLACE y TRIM.

CONCAT: Esta función permite unir dos argumentos es como el carácter ||, pero su sintaxis es la siguiente CONCAT(‘producto’, ’valor’) el resultado es productovalor si se quisiera unir más de un argumento la manera para hacerlo es la siguiente CONCAT(CONCAT(‘producto’,’ : ’),’valor’) el resultado sería producto : valor. SUBSTR: Esta función permite sacar una parte de argumento con una determinada longitud, su sintaxis es SUBSTR(‘producto’,1,3 ) donde producto es la palabra de la cual obtendremos un fragmento del argumento, 1 es la posición desde donde comenzará y 3 donde terminará, el resultado es pro esta función es bastante útil ya que permite manipular en gran medida un campo, también se puede usar con campos de tabla SELECT SUBSTR(nombre_producto,1,3 ) FROM productos esto mostrará los tres primeros caracteres del nombre de los productos.

LENGTH: Esta función devolverá el tamaño en números del argumento que se envíe, su sintaxis es LENGTH(‘producto’) lo que devolverá es 8 ya que esta es la cantidad de letras o caracteres que tiene la palabra producto de igual manera esta también se puede usar con campos de tablas.

(11)

INSTR: Esta función requiere dos argumentos y devolverá el número de la posición donde se encuentra segundo argumento en el primer argumento, su sintaxis es INSTR(‘producto’, ‘u’) donde buscará en producto la posición de u la cual es 5.

LPAD Y RPAD: Estas funciones son bastante similares y requieren 3 argumentos y nos una nuevo carácter su sintaxis es LPAD(‘producto’,10,’-’) devolverá lo siguiente --producto y RPAD(‘producto’,10,’-’) producto--, lo que hacen estas funciones es completar los espacios que falten con el carácter especificado, esto quiere decir que si el primer argumento es menor al segundo lo que sobre lo completara con el tercer argumento.

TRIM: Esta función recibe 2 argumentos y devolverá un nuevo carácter su sintaxis es TRIM(‘p’ FROM ‘producto’) devolverá producto, lo que hace esta función es buscar el primer argumento en el segundo, quitarlo y devolver el segundo argumento sin el primero.

6. FUNCIONES PARA NÚMEROS

Las funciones para números son más reducidas, pero son bastante útiles, son las siguientes: ROUND(),TRUNC() y MOD().

ROUND: Esta función recibe un parámetro decimal y un entero que devolverá el parámetro inicial redondeado hasta la posición del segundo parámetro, su sintaxis es; ROUND(25.237,2) el resultado de esto sería 25.24 lo que es es que redondeará segun la posicion del segundo parametro después del punto decimal, si se observa después del punto hay tres posiciones el valor del parámetro es 2 eso quiere decir que redondeará el decimal en la posición 2 que en este caso es 7 y al redondear 7 da 10 ya que si es mayor a 5 redondea hacia arriba si no, lo hará hacia abajo y ya que el primer redondeo es 10 este se encarga de hacer la operación nuevamente obteniendo como resultado 25.24.

TRUNC: Esta función recibe un parámetro decimal y otro entero devolviendo un decimal o entero la sintaxis es TRUNC(25.237,2) El resultado de esta función es 25.23 como se puede observar el TRUNC no aproxima simplemente omite el decimal en la posición que se indique como segundo parámetro.

(12)

MOD: Esta función recibe dos parámetros enteros o decimales que devolverá otro parámetro entero o decimal su sintaxis es MOD(1600,300) el resultado al ejecutar esta funcion sera 100, y este es el residuo que se obtiene al realizar la división entre el primer parámetro y el segundo.

7. FUNCIONES PARA FECHAS

Las funciones para fechas son verdaderamente útiles ya que las fechas suelen ser un tipo de dato difícil de manejar lógicamente, pero haciendo uso de estas funciones facilitara su manejo. Estas funciones son MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY y LAST_DAY.

MONTHS_BETWEEN: Esta función recibe dos parámetros de fecha y devolverá un número entero o decimal, su sintaxis es la siguiente MONTHS_BETWEEN('01-SEP-95','11-JAN-94') El resultado es la cantidad de meses que hay entre estas 2 fechas que es 19.6774194 y el resultado será positivo si la primera fecha es mayor en caso contrario el resultado es negativo.

ADD_MONTHS: Esta función recibe dos parámetros una fecha y un entero y devolverá una fecha, esta es sintaxis ADD_MONTHS(‘31-JAN-96',1) el resultado es una fecha con un mes más al del primer parámetro el cual es 29-FEB-96 y de esta manera seguirá aumentado meses haciendo el cálculo correspondiente al de la fecha.

NEXT_DAY: Esta función recibe una fecha y un palabra que es el dia y devolverá una fecha, esta es su sintaxis NEXT_DAY ('01-SEP-95','FRIDAY') el resultado es la fecha del día siguiente de la fecha que se coloco que en este es '08-SEP-95'.

LAST_DAY: Esta función recibe un único parámetro que es la fecha y devolverá otra fecha, la sintaxis es LAST_DAY ('01-FEB-95') El resultado es el último día del mes de la fecha que se pasó y es 29-FEB-95.

8. FUNCIONES DE CONVERSIÓN Y GENERALES

Las funciones de conversión y generales se caracterizan por no esperar un tipo de dato específico también por no devolver un tipo específico, ya que estas funciones

(13)

están elaboradas para funcionar con cualquiera dato. Las funciones de conversión son TO_CHAR, TO_DATE y TO_NUMBER de estas funciones solo se mostrará su funcionamiento básico pero si quieren usar todo su potencial les recomiendo revisar la documentación de oracle ya que aquí se encuentran todos sus diferentes usos. Todas estas funciones tiene una misma finalidad como su nombre lo indica que es convertir un dato en otro y también funciona de la misma manera reciben dos argumentos y devuelven un tipo de dato, los parámetros son el dato que quiere convertir y el formato al que se convertirá, estos formatos son varios se usan dependiendo del dato a convertir por ejemplo TO_CHAR convierte el dato que se pase a un carácter, TO_DATE a una fecha y TO_NUMBER a un número, está su funcionalidad básica pero como se mencionó anteriormente es recomendable revisar la documentación de oracle para profundizar más en el tema y todas las posibilidades de estas funciones.

Las funciones generales comparten una su principal característica que es verificar que hacer cuando un dato es nulo, estas funciones son: NVL, NVL2, NULLIF Y COALESCE.

NVL: Esta función recibe dos parámetros y devuelve uno, su sintaxis es NVL(columna,’valor’) lo que hará esta función es que si el valor de la columna es igual a NULL en vez de mostrar NULL mostrará ‘HOLA’. Esta función es bastante útil si se quiere operar entre campos y por alguna razón alguno de estos llegara a tener un valor nulo lo podemos reemplazar para que no haya error al momento de hacer la operación.

NVL2: Esta función recibe 3 parámetros y devuelve uno, su sintaxis es NVL2(columna,’valor1’,’valor2’) Lo que hace esta función es si su primer parámetro es diferente de nulo mostrará el valor1 y si por el contrario el primer valor es igual a nulo mostrará valor2.

NULLIF: Esta función recibe dos parámetros y devuelve uno, su sintaxis es NULLIF(columna1,columna2) Lo que hace esta función es comparar ambos parámetros y ambos resultan ser iguales el resultado que mostrará es NULL.

COALESCE: Esta función recibe n parámetros es decir la cantidad que se desee y devolverá uno, su sintaxis es COALESCE(columna1, columna2 , …, columnaN)

(14)

Lo que hace esta función es retornar el primer valor no nulo que se encuentra dentro de ella por ejemplo si la columan1 fuera igual a nulo y la columna2 fuera diferente de nulo devolverá la columna2.

9. FUNCIONES DE GRUPOS

Se ha hablado ya de funciones pero estas eran funciones de una fila lo que significa que mostraban un resultado por cada fila que se obtenía de la consulta realizada pero también hay funciones de múltiples filas y esto significa que mostraran un resultado sin importar la cantidad de filas que hayan. Estas funciones son AVG, COUNT, MAX, MIN, STDDEV, SUM, VARIANCE. Todas estas funciones comparten algo y es que solo necesitan un argumento y es el campo de la tabla a la que se le quiera hacer una función de grupo y también devolverán sólo un valor, otra cosa que tiene en común es que casi siempre se usan con número ya que la mayoría de estas funciones lo que realiza son operación matemáticas, su sintaxis es de esta manera FUNCIÓN DE GRUPO(COLUMNA) con esto en cuenta se porcede a explicar cada una.

AVG: Esta función obtiene un promedio de todos los valores de la columna que se paso como parametro.

COUNT: Esta función realiza un conteo de cuántos resultados hay de esa columna después de hacer la consulta.

MAX: Esta función obtiene el máximo valor de todos los resultados de la consulta.

MIN: Esta función obtiene el mínimo valor de todos los resultados de la columna de la consulta.

STDDEV: Esta función obtiene la desviación estándar de todos los resultados de la columna de la consulta que se realizó.

SUM: Esta función realiza la suma de todos los valores de la columna que se obtuvieron de la consulta.

(15)

VARIANCE: Esta función encuentra la diferencia o variante de los resultados de la columna de la consulta.

10. AGRUPACIÓN Y ORDENAMIENTO DE FILAS

Se han mostrado las diferentes funciones que hay tanto para una fila como para varias pero estas funciones se usan para manipular los valor de las columnas y sus resultados. Ahora se analizará cómo se pueden manipular las filas obtenidas al hacer la consulta, estas estas son ORDER BY, GROUP BY Y HAVING.

ORDER BY: Esta sentencia se encarga de ordenar los resultados obtenidos por medio de una consulta de la siguiente manera SELECT * FROM productos ORDER BY column1 ASC Lo que quiere decir esta esta consulta es que va a traer todos los datos de la tabla productos ordenados por los valores de la column1 de manera ASC(ascendente) también en vez de usar column1 se puede utilizar la posición de la columna 1, 2, 3, etc de igual manera en vez de usar ASC se puede usar DESC(descendente) también se incluirá más de una columna, claro mientras estas estén contenidas en el SELECT.

GROUP BY: Esta sentencia agrupara las filas de acuerdo a la columna que se desee y si sus valores son iguales de la siguiente forma SELECT producto_id FROM productos GROUP BY producto_id lo que se interpreta de esta consulta es que agrupara todos los resultados que sean iguales de la columna producto_id algo a tener en cuenta es que al hacer un GROUP BY la información que trae esta agrupada por lo tanto no se puede incluir dentro de la consulta columnas que no se pueden agrupar o que causen conflictos al momento de agrupar la información deseada.

HAVING: Esta sentencia lo que hace es un filtro por agrupaciones de una consulta de la siguiente manera SELECT producto_id FROM productos GROUP BY producto_id HAVING producto_id > 20 Al interpretar esta consulta lo que quiere decir es que traerá las agrupaciones de los productos_id y además de estas agrupaciones sólo traerá aquellos que sean mayores a 20, el HAVING siempre se una con el GROUP BY ya que el HAVING se encarga es de filtrar lo que esté agrupado.

(16)

Esta fue una explicación rápida de estas sentencias pero como con las funciones estas sentencias pueden ser usadas de muchas maneras y lo más recomendable es revisar la documentación de oracle.

11. OBTENER DATOS DE VARIAS TABLAS

Se ha hablado de varias formas de manipular los datos en las consultas, ahora se explicará como utilizar información de 2 tablas de manera adecuada ya que si bien se puede usar algo como esto SELECT * FROM tabla1, tabla2 WHERE tabla1.id=tabla2.id donde traera toda la informacion de ambas tablas, donde sus respectivos id sean iguales no es la manera más adecuada de hacerlo porque se está obteniendo toda la información de la dos tablas y comparando cuales tiene los id iguales, lo ideal es traer los datos que comparten esos id o la condición deseada de las tablas para eso utilizaremos las sentencias JOIN que como su nombre indica son sentencias para agrupar datos, estos son INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN Y FULL OUTER JOIN.

INNER JOIN: Esta sentencia de agrupación de datos es usada para traer los datos que tienen que están relacionados en las tablas de la siguiente manera SELECT * FROM tabla1 INNER JOIN tabla2 ON tabla1.id=tabla2.id lo que hace esta sentencia es selecciona todos los datos de la tabla1 y de la tabla2 que están relacionados por el id, la diferencia de hacerlo de esta manera en vez de usar el where es que no se esta llamando la tabla 2 completa si no solo las filas que se relacionan por el id o la condición establecida. También se puede hacer inner join de más tablas y relacionarlas con las que se estén usando en la consulta un ejemplo es SELECT * FROM tabla1 INNER JOIN tabla2 ON tabla1.id=tabla2.id INNER JOIN tabla3.id ON tabla1.id=tabla3.id INNER JOIN tabla4 ON tabla4.id=tabla2.id como se observo podemos traer cuantos inner join se requieran y relacionarlos con la distintas tablas que se vaya a usar para traer la información que se desea.

LEFT OUTER JOIN: Esta sentencia tiene las mismas características que un INNER JOIN y se maneja de la misma manera SELECT * FROM tabla1 LEFT OUTER JOIN tabla2 ON tabla1.id=tabla2.id lo que hace esta consulta es traer todos los

(17)

datos de la tabla1 incluyendo los que tenga relación con la tabla2, esto quiere decir que traera todos los datos de la tabla1 aun si estos no están relacionados con la tabla2.

RIGHT OUTER JOIN: Esta sentencia es muy similar a LEFT OUTER JOIN lo único que cambia es que traerá todos los datos de la tabla2, pero se maneja de la misma manera que las sentencias anteriores.

FULL OUTER JOIN: Esta sentencia es como las demás que se han visto anteriormente, haciendo uso de esta traerá todos los datos de ambas tablas tanto los que están relacionados como los que no.

El uso de los JOIN es muy importante ya que primero mejoran bastante las consultas, segundo se entiende de mejor manera como se están obteniendo los datos y en caso de que una unión no de el resultado esperado se pueden combinar hasta obtener el resultado que se necesite.

12. SUBCONSULTAS

Las subconsultas son una de manera de traer información de una consulta dentro de otra, también se podría ver como consultas anidadas una dentro de otra, las subconsultas son como consultas normales pero pueden recibir argumentos de otra en la que se encuentra incluida en la consulta principal.

Las subconsultas se pueden usar en cualquier parte de la consulta principal ya que el objetivo de estas es traer datos los ejemplos son

SELECT id_producto,(SELECT nombre_producto2 FROM productos2 WHERE id_producto2=id_producto1) FROM productos

SELECT * FROM productos WHERE precio_producto < (SELECT MIN(precio_producto) FROM producto)

En estos ejemplos podemos ver cómo usamos las subconsultas tanto en la obtención de datos como en las condiciones. Las subconsultas pueden ser muy útiles si se necesita algún dato que es difícil de obtener en la consulta que se este utilizando.

Si se usara una subconsulta como condición y esta devolviera más de un dato se tendrían que usar sentencias para usar grupos de datos como son IN, ALL, ANY

(18)

IN: Se encarga de hacer un lista para filtrar por los diferentes datos que se obtienen de una subconsulta, un ejemplo es SELECT * FROM productos WHERE id_producto IN (SELECT id_producto FROM porductos WHERE precio_producto < 200).

ALL: Se usa con los operadores <ALL el mayor valor de todos y >ALL el menor valor de todos retorne la subconsulta como por ejemplo SELECT * FROM productos WHERE precio_producto < ALL (SELECT precio_producto WHERE id_producto >100).

ANY: Se usa con <ANY todos los valores menos el máximo de ellos y >ANY todos los valores menos el menor de ellos y se de la misma manera que con ALL.

13. OPERADORES DE CONJUNTOS.

Los operadores de conjuntos permiten usar varias consultas y tratarlas como conjuntos, estas son UNION, UNION ALL, INTERSECT Y MINUS, para usar los operadores de conjuntos debemos tener en cuenta lo siguiente que la consultas usadas retornen la misma cantidad de valores y según su orden el mismo tipo de dato.

UNION: Une los resultados de las consultas excluyendo los que tenga en común el ejemplo sería SELECT id_producto, nombre_producto FROM productos UNION SELECT id_producto2, nombre_producto2 FROM productos2.

UNION ALL: Unirá los resultados de ambas consultas incluyendo los datos que tengan en común o repetidos el ejemplo es SELECT id_producto, nombre_producto FROM productos UNION ALL SELECT id_producto2, nombre_producto2 FROM productos2.

INTERSECT: Une los datos que tiene en común ambas consultas el ejemplo es SELECT id_producto, nombre_producto FROM productos INTERSECT SELECT id_producto2, nombre_producto2 FROM productos2.

MINUS: Trae los datos que solo estén en la primera consulta y excluye los de la segunda consulta incluso aquellos que tienen en común las dos tablas el ejemplo es

(19)

SELECT id_producto, nombre_producto FROM productos MINUS SELECT id_producto2, nombre_producto2 FROM productos2.

14. FUNCIONES Y TRIGGERS

FUNCIONES: También se pueden crear funciones, para que se encargan de manipular un dato o varios y darme otro ó otros como resultado, para crear una función se realiza de la siguiente manera..

CREATE OR REPLACE FUNCTION nombre función (parámetro <tipo parámetro>)

RETURN tipo de parámetro

BEGIN

sentencia o consulta que se vaya a realizar con el dato y su respectivo retorno.

END;

TRIGGERS: Los triggers es la manera de realizar una determinada acción cuando se realiza otra esto quiere decir que cuando se indique que se haga una acción sobre una tabla como un UPDATE, INSERT O DELETE se ejecuta otra acción UPDATE, DELETE O INSERT sobre otra tabla o la misma la creación de un trigger es la siguiente:

CREATE OR REPLACE TRIGGER nombre trigger BEFORE

INSERT OR

UPDATE OF salary, department_id OR

DELETE

ON employees

BEGIN CASE

WHEN INSERTING THEN

DBMS_OUTPUT.PUT_LINE('Inserting');

WHEN UPDATING('salary') THEN

DBMS_OUTPUT.PUT_LINE('Updating salary');

WHEN UPDATING('department_id') THEN

DBMS_OUTPUT.PUT_LINE('Updating department ID');

WHEN DELETING THEN

(20)

END CASE; END

15. COMO MEJORAR CON LO APRENDIDO

El tema de esta monografía es cómo mejorar el desarrollo de software con la programación de base de datos entonces cómo se puede mejorar con lo que se ha mostrado muy simple al haber conocido muchas de las funciones y sentencias del lenguaje sql y pl/sql se ha logrado un gran avance ya que si no se conoce a fondo en lo que se va a trabajar cómo hacer que esto sea mejor.

Desde mi punto de vista no hay manera de determinar cuál es la mejor manera de hacer las cosas ya que en cada problema que se presente se pueden usar y emplear varias soluciones dependiendo del contexto en el que nos encontremos y de la manera que se nos haga más fácil resolver dicho problema, siendo este el caso el mejor punto de partida para mejorar es saber que puede usar y como lo puede usar y esto fue lo que quise transmitir en este documento, aqui no se encuentre todo acerca de sql y pl/sql pero si se aplica lo que se ha visto,desde lo más básico poco a poco se puede encontrar una manera de realizar los desarrollos un poco mejor y con ello mejorar cada vez más ya que cada persona piensa de manera diferente por lo tanto programa de manera diferente y con ello mejora a su propia manera.

CONCLUSIONES

● Se ha observado como solo conociendo lo básico se puede mejorar la programación de base de datos y con ello el desarrollo software.

● Conocer la diversidad de funciones, sentencias y herramientas que existen se puede determinar cuál usar para que sea mejor.

(21)

● Mostrar las diferentes herramientas de las que disponemos y dar una explicación corta pero entendible de cada una.

BIBLIOGRAFÍA

Referencias

Documento similar

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Package Item (Container) Type : Vial (100000073563) Quantity Operator: equal to (100000000049) Package Item (Container) Quantity : 1 Material : Glass type I (200000003204)

No había pasado un día desde mi solemne entrada cuando, para que el recuerdo me sirviera de advertencia, alguien se encargó de decirme que sobre aquellas losas habían rodado