Cap. iv bdd ii
-
Upload
angelus-nigrum -
Category
Technology
-
view
308 -
download
1
Transcript of Cap. iv bdd ii
INDICE
OBJETIVOS………………………………………………………………………………………………………..3
INTRODUCCIÓN………………………………………………………………………………………………..4
4.1 TIPOS DE DATOS……………………………………………………………………………………5
4.1.1 DATOS NUMERICOS………………………………………………………………………………….5
4.1.2 DATOS CARÁCTER…………………………………………………………………………………….6
4.1.3 DATOS TIPO FECHA…………………………………………………………………………………..8
4.1.4 DATOS BINARIOS……………………………………………………………………………………...9
4.1.5 OTROS………………………………………………………………………………………………………9
4.1.6 TIPOS DE DATOS PERSONALIZADOS…………………………………………………………10
4.2 FUNCIONES
4.2.1 INTRODUCCION………………………………………………………………………………………11
4.2.2 FUNCIONES TIPO CARÁCTER…………………………………………………......... 11
4.2.3 FUNCIONES NUMERICAS………………………………………………………………………….18
4.2.4 FUNCIONES FECHAS…………………………………………………………………………………19
4.2.5 FUNCIONES DE CONVERSION……………………………………………………………………21
4.2.6 OTRAS FUNCIONES…………………………………………………………………………………...23
BIBLIOGRAFÍA………………………………………………………………………………...24
1BASE DE DATOS II
OBJETIVOS
Conocer los diferentes tipos de datos y sus características.
La idea fundamental es indicar la forma de escribir declaraciones correctas en Oracle o SQL, familiarizándose así con los objetos de base de datos.
Aprender una regla general, cuando se escriben declaraciones.
[Escriba texto] Página 1
2BASE DE DATOS II
INTRODUCCIÓN
Las bases de datos son una parte fundamental de cualquier aplicación, pues en ellas se almacenan información trascendental para el buen desempeño de las mismas. Con el desarrollo de los distintos sistemas de gestión de bases de datos (SGBD), algunos de ellos fueron ganando en preferencia para los diferentes usuarios; por sus características de seguridad, configuración, conectividad, etc.
Todos los campos de una tabla tienen propiedades. Éstas definen las características y el comportamiento del campo. La propiedad más importante de un campo es su tipo de datos. El tipo de datos de un campo determina la clase de datos que va a poder almacenar. Por ejemplo, un campo cuyo tipo de datos sea Texto podrá almacenar datos que se compongan de caracteres de texto, mientras que un campo cuyo tipo de datos sea Número sólo podrá almacenar datos numéricos.
Como veremos El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.
[Escriba texto] Página 2
3BASE DE DATOS II
CONTENIDO
IV. TIPOS DE DATOS Y FUNCIONES ASOCIADAS
4.1 TIPOS DE DATOS
Un tipo de datos es un atributo que especifica el tipo de datos que el objeto puede contener: datos de enteros, datos de caracteres, datos de moneda, datos de fecha y hora, cadenas binarias, etc.
4.1.1. Datos Numéricos
El tipo de datos NUMBER es utilizado para guardar los números cero, negativos, positivos, fijos y de punto flotante, con hasta 38 dígitos de precisión. Los números van desde del 1.0x10 -130 hasta 1.0x10 126. Los NUMBER pueden ser definidos de tres formas: NUMBER(p,s) Donde p es la precisión de hasta 38 dígitos y s es la escala (número de dígitos a la derecha del punto decimal) NUMBER (p)Es este un número de punto fijo con una escala de cero y precisión de p. NUMBER Este es un número punto flotante con una precisión de 38. La siguiente tabla muestra como Oracle almacena las diferentes escalas y precisiones:
Dato actual Definido como Almacenado como7,456,123.89 NUMBER 7456123.89
7,456,123.89 NUMBER(*,1) 7456123.97,456,123.89 NUMBER(9) 7456124
7,456,123.89 NUMBER(9,2) 7456123.897,456,123.89 NUMBER(9,1) 7456123.9
7,456,123.89 NUMBER(6) (no aceptado, excede la precisión)7,456,123.89 NUMBER(7,-2) 7456100
[Escriba texto] Página 3
4BASE DE DATOS II
4.1.2. Datos Carácter
Existen cuatro tipos de datos para caracteres:
El tipo de datos CHAR es utilizado como un campo de largo fijo. El tamaño puede ser especificado entre 1 y 255 caracteres en versión 7 y entre 1 y 2000 en versión 8. El tamaño por defecto es 1. Cuando no se indica dato de entrada, se llena con tantos espacios en blanco como sea necesario para llegar al tamaño especificado.
El VARCHAR2 es utilizado para campos de largo variable. Debe indicarse para este tipo de datos el tamaño al utilizar el tipo de datos. El largo máximo es de 2000 caracteres en versión 7 y 4000 en versión 8.
El tipo de datos LONG es utilizado para cantidades variables de texto muy grandes. Cualquier largo hasta 2 GB puede indicarse. Algunas restricciones para el uso de este tipo de datos son:
Sólo puede haber una columna de este tipo por ta21bla. Una columna LONG no puede ser indexada. Una columna LONG no puede ser pasada como parámetro de un procedimiento o función. Una función no puede ser utilizada para retornar un valor de tipo LONG. Una columna de tipo LONG no puede ser utilizada en el where, order by, group by o connect de
una sentencia SQL.
El tipo de datos VARCHAR es sinónimo de VARCHAR2. Oracle Corporation está reservando este para uso futuro. No usarlo.
Los tipos de datos NCHAR y NVARCHAR2 (solo versión 8) permiten almacenar caracteres del NLS. NCHAR guarda hileras de caracteres de largo fijo que corresponden a un conjunto de caracteres de largo fijo o variable. El NVARCHAR2 guarda hileras de largo variable.
Cuando se utilizan estos tipos NCHAR o NVARCHAR2, se debe especifica el tamaño máximo que puede el número de caracteres (para conjuntos de caracteres de largo fijo) o el número de bytes (para un conjunto de caracteres de largo variable).
El largo máximo para las columnas NCHAR es de 2000 bytes, o bien el número de máximo de caracteres que pueden ser grabados en 2000 bytes.
El largo máximo para las columnas NVARCHAR2 es de 4000 bytes, o bien el número de máximo de caracteres que pueden ser grabados en 4000 bytes.
[Escriba texto] Página 4
5BASE DE DATOS II
Los tipos de datos de cadenas de caracteres de JDBC son CHAR, VARCHAR y LONGVARCHAR. También pueden ser NCHAR, NVARCHAR y LONGNVARCHAR. Estos nuevos tipos de cadena de caracteres mantienen los tipos de caracteres nativos de Java en formato Unicode y quitan la necesidad de realizar cualquier conversión ANSI a Unicode o Unicode a ANSI.
Dato Carácter Características
VARCHAR2 (tamaño) Almacena cadenas de caracteres de una longitud variable. La longitud máxima son 4000 caracteres.
CHAR (tamaño) Almacena caracteres con una longitud fija. Siendo 2000 caracteres el máximoTipo Descripción
Longitud fija
Los tipos de datos char y nchar de SQL Server se asignan directamente a los tipos CHAR y NCHAR de JDBC. Estos son tipos de longitud fija con relleno que proporciona el servidor en el caso de que la columna tenga habilitado SET ANSI_PADDING ON. El relleno siempre está habilitado para nchar, pero en el caso de char, si las columnas char del servidor no tienen relleno, el servidor lo agrega el controlador JDBC.
Longitud variable
Los tipos de datos varchar y nvarchar de SQL Server se asignan directa y respectivamente VARCHAR y NVARCHAR de JDBC.
Long Los tipos text y ntext de SQL Server se asignan respectivamente a los tipos LONGVARCHAR y LONGNVARCHAR de JDBC. Estos son tipos que ya no se utilizan desde SQL Server 2005, por lo que en su lugar debería usar tipos de valores mayores, varchar(max) o nvarchar(max). No se pueden usar los métodos update<Numeric Type> y updateObject (int, java.lang.Object) con las columnas de servidor text y ntext. No obstante, se admite el uso del método setObject con un tipo específico de conversión de caracteres en columnas text y ntext del servidor.
[Escriba texto] Página 5
6BASE DE DATOS II
4.1.3. Datos Fecha
A la hora de almacenar fechas, hay que tener en cuenta que Mysql no comprueba de una manera estricta si una fecha es válida o no. Simplemente comprueba que el mes esta comprendido entre 0 y 12 y que el día esta comprendido entre 0 y 31. Date: tipo fecha, almacena una fecha. El rango de valores va desde el 1 de enero del 1001 al 31 de diciembre de 9999. El formato de almacenamiento es de año-mes-día
DateTime: Combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos. El formato de almacenamiento es de año-mes-día horas:minutos:segundos
TimeStamp: Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 al año 2037. El formato de almacenamiento depende del tamaño del campo:
Tamaño Formato
14 AñoMesDiaHoraMinutoSegundo aaaammddhhmmss
12 AñoMesDiaHoraMinutoSegundo aammddhhmmss
8 ñoMesDia aaaammdd
6 AñoMesDia aammdd
4 AñoMes aamm
2 Año aa
Time: almacena una hora. El rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838, 59 minutos y 59 segundos. El formato de almacenamiento es de 'HH:MM:SS'
Year: almacena un año. El rango de valores permitidos va desde el año 1901 al año 2155. El campo puede tener tamaño dos o tamaño 4 dependiendo de si queremos almacenar el año con dos o cuatro dígitos.
Tipo de Campo Tamaño de AlmacenamientoDATE 3 bytes
DATETIME 8 bytes
TIMESTAMP 4 bytes
TIME 3 bytes
YEAR 1 byte
[Escriba texto] Página 6
7BASE DE DATOS II
4.1.4 Tipos de datos binarios
Permiten almacenar información en formato "crudo", valores binarios tal y como se almacenan en el disco duro o como residen en memoria. Estas columnas se pueden utilizar tanto para almacenar grandes cantidades de datos (hasta 4Gb.),
Tipo de dato LONG: Almacena caracteres de longitud variable hasta 2 Gb. En Oracle8 y siguientes versiones se deben usar los tipos de datos CLOB y NLOB para almacenar grandes cantidades de datos alfanuméricos.
4.1.5 Otros Tipos de Datos
Cada fila en la base de datos tiene una dirección. Esta dirección puede ser obtenida por medio de la función ROWID. . El formato es el siguiente (versión 7):
BLOCK.ROW.FILE
BLOCK es el bloque de datos de archivo de datos FILE conteniendo el ROW. Estos datos se dan en formato hexadecimal y el tipo de datos es ROWID.Este valor no puede ser exportado, pues al importarse la dirección del registro es casi seguro que variará.
El ROWID extendido (versión 8) tiene el siguiente formato:
OOOOOOFFFBBBBBBRRR
Donde:OOOOOO es el número de objeto de datos que identifica el segmento de la base de datos. Objetos que se encuentren en un mismo segmento, como un cluster de tablas, tiene el mismo número de objeto de datos.FFF es el datafile que contiene la fila.BBBBBB este el bloque de datos que contiene la fila y son relativos al datafile (no al tablespace)RRR la fila en el bloque.Finalmente el MLSLABEL es un tipo de datos utilizado para almacenar el formato binario de etiquetas (labels), utilizado en sistemas operativos seguros.
[Escriba texto] Página 7
8BASE DE DATOS II
4.1.6 Tipos de Datos Definidos por el Usuario
Además de los tipos vistos (built-in datatypes), Oracle permite definir nuevos tipos de datos a los usuarios.Basado en el concepto de objeto, permite crear tipos como objetos del mundo real, los cuales tiene tres componentes básicos:
Un nombre, el cual lo identifica de forma única en un esquema. Atributos, los cuales pueden ser de tipo predefinidos u otros tipos definidos por el usuario. Métodos, los cuales son funciones o procedimientos escritos en PL/SQL y almacenados en la
base de datos, o bien escritos en C o Java y almacenados externamente.
Para poder distinguir un objeto de otro dentro de la base de datos se define el object identifier (OID), para poder representar estas identificaciones existe el tipo REF, el cual es el contenedor de un identificador de objeto, el cual es básicamente un puntero a un objeto.Otros tipos de datos son los VARRAY, los cuales permiten definir tablas del tipo de datos seleccionado.
[Escriba texto] Página 8
9BASE DE DATOS II
4.2 Funciones
4.2.1Introducción.
* Las funciones trabajan con columnas variables o constantes EJ:) pasar a minúscula el valor de una columna. //UPPER * Las funciones se utilizan en: SELECT’s WHERE y ORDER BY * Se pueden anidar.
4.2.2 Funciones con cadenas de caracteres.
¨ CONCAT(c
ad1,cad2) -> Devuelve cad1 concatenado con cad2. Sólo admite 2 parámetros.
EJ 1: SELECT CONCAT(‘El apellido es:’,apellido) FROM EMPLE;CONCAT ('ELAPELLIDOES:', AP-------------------------El apellido es: SÁNCHEZEl apellido es: ARROYOEl apellido es: SALAEl apellido es: JIMÉNEZEl apellido es: MARTÍNEl apellido es: NEGROEl apellido es: CEREZOEl apellido es: GILEl apellido es: REYEl apellido es: TOVAREl apellido es: ALONSOEl apellido es: JIMENOEl apellido es: FERNÁNDEZEl apellido es: MUÑOZ
[Escriba texto] Página 9
10BASE DE DATOS II
EJ 2: Teniendo la tabla EMPLE efectuar la consulta que nos devolvería... Sánchez es Empleado Arroyo es Vendedor . . . . . . . . . SELECT CONCAT (apellido,CONCAT(’ es ‘, oficio)) FROM EMPLE;
¨ LOWER -> Devuelve la cadena <<cad>> con todas las letras convertidas a minúsculas. ¨ UPPER -> Igual pero a MAYUSCULAS.
EJ 3: Obtención del nombre de los empleados minúsculas y mayúsculas respectivamente.
SELECT LOWER(apellido) FROM EMPLE;SELECT UPPER(apellido) FROM EMPLE;
¨ INITCAP(cadena) Convierte la primera letra de cada palabra de la cadena <cad> a MAYÚSCULAS y el resto a minúsculas. EJ 4: Convertir a Título...
SELECT INITCAP(‘DESARROLLO de aplicaciones informáticas’)FROM DUAL;
¨ LPAD(cad1,n[,cad2]) -> Esta función añade caracteres a la izq. De la cadena <cad1> hasta que alcance una cierta longitud <n>. Devuelve <cad1> con longitud <n> y ajustado a la derecha; <cad2> es la cadena con la q se rellena por la izq. <cad1> puede ser una columna de una tabla o un literal. Si <cad2> se suprime se asume como carácter de relleno el BLANCO. Sirve para rellenar con ceros.
[Escriba texto] Página 10
11BASE DE DATOS II
EJ 5: Por cada fila de la tabla NOTAS_ALUMNOS, obtener el nombre del alumno de tal manera q tenga una longitud de 30 caracteres y rellenado a la izq. Por puntos.
SELECT LPAD(nombre_alumno,30,’.’)FROM NOTAS_ALUMNOS; LPAD(NOMBRE_ALUMNO,30,'.')------------------------------......Alcalde García, M. Luisa...........Benito Martín, Luis........Casas Martínez, Manuel.......Corregidor Sánchez, Ana...........Díaz Sánchez, María
EJ 5: Ajustar a la decha rellenando por la izq con ceros: b7557 donde long.Total es 5 caracteres.
Select LPAD (‘757’, 5, and ’0’) FROM DUAL;LPAD (-----0 757
//Esto no rellenaría con 0 el espacio que hay en ‘0 757’, Para ello utilizaremos: RTRIM ó LTRIM ¨ RPAD -> RPAD(cad1,n[,lo mismo q LPAD pero rellenando por la derecha. Devuelve cad1 con longitud <n> y ajustado a la izq.; <cad2> es la cadena a rellenar por la derecha
[Escriba texto] Página 11
12BASE DE DATOS II
EJ 6: Para cada empleado obtener el apellido ajustado a la izq. Y rellenado por la derecha con asteriscos, obteniendo una long. Total de 11 caractes.
SELECT RPAD(apellido,11,’*’) FROM EMPLE;RPAD(APELLI-----------SÁNCHEZ****ARROYO*****SALA*******JIMÉNEZ**** [...]
· LTRIM(cad[,SET]) Devuelve <cad> con el grupo de carecteres SET omitidos por la
izq. De la cadena por defecto, si la cadena contiene blancos a la izq. Y se omite el segundo parámetro SET, la fºn devuelve la cadena sin blancos a la izq. SET es la cadena que no se van a mostrar, de izq. A drecha y mientras vaya encontrando caracteres que contenga la cadena SET. ( Es decir se tendran en cuenta todas los caracteres ddel SET indistintamente del orden).
EJ 7: Dada la cadena ‘ hola’ se pide devolver la misma cadena eliminando los blancos de la izq.
SELECT LTRIM(‘ hola’) FROM DUAL; LTRI----hola
EJ 7: Dada la cadena ‘abaAabUNIDAD’ se pide q con una sentencia LTRIM eliminar los caracteres ‘a’ y ‘b’ por la izq. para q devuelva ‘AabUNIDAD’.
SELECT LTRIM(‘abaAabUNIDAD’,’aba’) FROM DUAL; LTRIM ('AB---------AabUNIDAD
//se ha dejado ‘ab’ pero es porque va de izq. A dcha. Y ha encontrado ‘A’ que no está en la cadena SET.
¨ RTRIM(cad[,SET]) : Es lo mismo que RTRIM pero desde la derecha.
[Escriba texto] Página 12
13BASE DE DATOS II
EJ 8: Eliminar los blancos de la cadena: ‘adios ‘. SELECT RTRIM(‘adios ‘,’ ‘) FROM DUAL; RTRIM-----adios
EJ 9: Quitar las comillas dobles de la izq. y las de la dcha. Junto con el punto de la
dcha. De la tabla MIS_TEXTOS.
SQL> SELECT * FROM MISTEXTOS; TITULO AUTOR METODOLOGÍA DE LA PROGRAMACIÓN. ALCALDE, GARCÍA "INFORMÁTICA BÁSICA." GARCÍA GARCERÁN SISTEMAS OPERATIVOS J.F. GARCÍA SISTEMAS DIGITALES. M.A. RUÍZ "MANUAL DE C." M.A. RUÍZ SELECT RTRIM(LTRIM(titulo,’”’),’”.’)FROM MISTEXTOS;
METODOLOGÍA DE LA PROGRAMACIÓNINFORMÁTICA BÁSICASISTEMAS OPERATIVOSSISTEMAS DIGITALESMANUAL DE C
EJ 10: Dada la cadena ‘ 757 ‘, devolver la cadena ‘00000757’.
SELECT LPAD( LTRIM(RTRIM(‘ 757 ‘,’ ‘),’ ‘),8,’0’) FROM DUAL; LPAD(LTR--------00000757 · REPLACE(cad,cadena_busqueda[,cadena_sustitucion]) Devuelve <cad> con cada
ocurrencia de cadena_busqueda sustituida por cadena_sustitución. Si no ponemos nada en la cadena sustitucion, se sustituirá la cdena_busqueda por NADA.
[Escriba texto] Página 13
14BASE DE DATOS II
EJ 11: Dada la cadena ‘BLANCO Y NEGRO’ obtener ‘BLANCAS Y NEGRAS’. SELECT REPLACE(‘BLANCO Y NEGRO’,’O’,’AS’) from dual; REPLACE('BLANCOY
----------------BLANCAS Y NEGRAS
· SUBSTR(cad,inicio[,n]) Extrae una parte de una cadena (subcadena) y devuelve la
subcadena de <cad> q abarca desde la posición indicada en <inicio> hasta tantos caracteres como indique <n>. El valor de <n> no puede ser inferior a 1.
EJ 12: Partiendo de la cadena ‘ABCDEF’ obtener la cadena ’CD’. SELECT SUBSTR(‘ABCDEF’,3,2) FROM DUAL; EJ 13: Visualizar el apellido y la primera letra del mismo en minúsculas en columnas diferentes de todos los empleados.
SELECT apellido “APE”, SUBSTR (apellido, 1,1)”P” FROM EMPLE; APELLIDO S
-------------------SÁNCHEZ SARROYO ASALA SJIMÉNEZ JMARTÍN MNEGRO NCEREZO CGIL GREY RTOVAR TALONSO AJIMENO JFERNÁNDEZ FMUÑOZ M
· TRANSLATE (cad1,cad2,cad3) -> Devuelve <cad1> con los caracteres encontrados
en <cad2> y sustituidos por los caracteres de <cad3>.[Escriba texto] Página 14
15BASE DE DATOS II
EJ 14: SELECT TRANSLATE (‘LOS PILARES DE LA TIERRA’,’LAEIOU’,’laeiou’) FROM DUAL;
TRANSLATE ('LOSPILARESDEL
------------------------------------------loS PilaReS De la TieRRa
Ej 15: SELECT TRANSLATE(‘SQL PLUS’,’SQL’,’123’)
FROM DUAL; TRANSLAT
--------123 P3U1
EJ 16: De la tabla MISTEXTOS queremos visualizar todos los títulos sin los caracteres. “ SELECT TRANSLATE (titulo,’.”’,’ ‘) FROM MISTEXTOS; Transtalate, para funcionar ha de tener al menos un carácter en <cad2>. ¨SOUNDEX
SELECT SOUNDEX(‘Smythe’) FROM DUAL; SELECT SOUNDEX(‘Smith’) FROM DUAL;
[Escriba texto] Página 15
16BASE DE DATOS II
4.2.3 Funciones Numéricas
ABSSintaxisABS(x)Propósito Devuelve el valor absoluto de x.
Ejemplo:
Select abs (7) from dual;Resultado: 7
ASINSintaxisASIN(x)Propósito Devuelve el arco seno de x. El rango de x debe estar entre -1 y 1.Ejemplo:Select asin(1) from dual;Resultado: 1.57079633
FLOORSintaxisFLOOR(x)Propósito Devuelve el mayor entero igual o menor que xEjemplo:Select floor(23.5) from dual;Resultado: 23
[Escriba texto] Página 16
17BASE DE DATOS II
4.2.4 Funciones fechas
Aquí algunos ejemplos para adicionar y sustraer días y meses y encontrar la diferencia entre fechas en Oracle. Estos ejemplos toman el resultado de la tabla "dual. La tabla Dual es una tabla virtual que existe en todas las Bases de datos Oracle. Muchas veces hemos usado la consulta SELECT sysdate FROM dual; la cual simplemente nos retorna la fecha y hora actual.
SYSDATE= Devuelve la fecha del sistema. ADD_MONTHS (fecha, n)= Devuelve la fecha "fecha" incrementada en "n" meses. LASTDAY (fecha)= Devuelve la fecha del último día del mes que contiene "fecha". MONTHS_BETWEEN (fecha1, fecha2)= Devuelve la diferencia en meses entre las fechas "fecha1" y "fecha2". NEXT_DAY (fecha, cad)= Devuelve la fecha del primer día de la semana indicado por "cad" después de la fecha indicada por "fecha".
Ajustar Días, Semanas, Horas y minutosPara adicionar y sustraer días a una fecha, simplemente usamos los signos + o - respectivamente.
Algunos ejemplos: SQL> SELECT sysdate + 7 FROM dual; SYSDATE+-------25/09/06SQL> SELECT sysdate - 30 FROM dual; SYSDATE---------19/08/06SQL> SELECT to_char(sysdate - 14, 'MM/DD/YYYY HH:MI AM') FROM dual;TO_CHAR(SYSDATE-14,-------------------09/04/2006 11:41 AM
En el primer ejemplo, vemos que la consulta retorna la fecha siete días a partir de hoy. La segunda retorna la fecha de hace 30 días. En la tercera, se ha usado la función de conversión to_char, para ver las horas y minutos. Esto nos muestra que mientras la fecha, ha cambiado, el tiempo no cambia.Los ejemplos primero y tercero además muestran como el adicionar días, puede ser útil para computar semanas.
[Escriba texto] Página 17
18BASE DE DATOS II
Si usted desea simplificar el computo de semanas, podías usar querys de este tipo:SQL> SELECT sysdate + (7 * 3) FROM dual;SYSDATE+--------09/10/06Así mismo, para trabajar con horas ud podría usar fracciones de día. La forma más simple para mostrar esto es dividiendo por 24, que es el número de horas diarias. Aunque el paréntesis no es necesario, permite evidenciar con más claridad la sentenciaAquí, se muestra la hora actual y luego la hora actual mas dos horas:SQL> SELECT to_char(sysdate, 'HH:MI AM') FROM dual;TO_CHAR(--------02:00 PMSQL> SELECT to_char(sysdate + (2/24), 'HH:MI AM') FROM dual;TO_CHAR(--------04:00 PMUna alternativa a este método es el uso de la función numtodsinterval. El anterior ejemplo puede ser reescrito de la siguiente manera (la función numtodsinterval viene incorporada en la BD apartir de oracle 9i):SQL> SELECT to_char(sysdate + numtodsinterval(2, 'HOUR'), 'HH:MI AM')FROM dual;TO_CHAR(---02:00 PMAquí la función numtodsinterval está haciendo el trabajo de dividir 2/24 horas. Las opciones válidas para esta función son: ‘DAY’, ‘HOUR’, ‘MINUTE’, o ‘SECOND’. Aquí un ejemplo usando ‘MINUTE’. Cuando se trabaja con minutos la función numtodsinterval es mucho más legible.SQL> SELECT to_char(sysdate + numtodsinterval(45, 'MINUTE'), 'HH:MI AM')FROM dual;TO_CHAR(--------03:19 PM
4.2.5 Funciones de Conversión
[Escriba texto] Página 18
19BASE DE DATOS II
TO_CHAR= Transforma un tipo DATE ó NUMBER en una cadena de caracteres.
TO_CHARSintaxisTO_CHAR ( d[,formato[,paramnls]] )Propósito Convertir la fecha d a una cadena de caracteres VARCHAR2. El parámetro paramnls controla el idioma de los componentes de mes y día de la cadena devuelta. El formato de paramnls es:'NLS _DATE_LANGUAGE=idioma'
Ejemplo:select to_char(sysdate,'dd/mm/yyyy')from dual;Resultado: 19/03/2002
TO_DATE= Transforma un tipo NUMBER ó CHAR en DATE.
SintaxisTO_DATE (cadena [, formato [, paramnls]])PropósitoConvierte una cadena CHAR o VARCHAR2 a una valor de fecha tipo DATE. El parámetro formato es una cadena de formato fecha.Ejemplo:Select to_date(’19/03/2002’,’dd/mm/yyyy’) from dual;Resultado: 19/03/2002
TO_NUMBER= Transforma una cadena de caracteres en NUMBER.• Sintaxis• TO_NUMBER ( cadena[,formato[,paramnls]] )• Propósito• Convierte la cadena CHAR o VARCHAR2 a un valor de tipo NUMBER.
[Escriba texto] Página 19
20BASE DE DATOS II
• Ejemplo:• select to number(’$123.45’,’$999.99’) from dual;• Resultado: 123,45
Función Propósito
TO_CHAR(fecha,'formato') Esta función nos convierte una fecha de tipo date a una fecha de tipo varchar2
TO_CHAR(numero,'formato') Nos convierte un dato de tipo number a un tipo varchar2
TO_DATE(cad,'formato') Convierte un tipo de dato varchar2 o char a un valor de tipo date con el formato especificado
TO_NUMBER(cadena,['formato']) Convierte una cadena a tipo de dato number, y si se le pasa, con el formato especificado
[Escriba texto] Página 20
21BASE DE DATOS II
4.2.6 OTRAS Funciones
GREATESTSintaxisGREATEST ( expr1[,expr2].. )PropósitoDevuelve la expresión con mayor valor de todos sus argumentos.Ejemplo:select greatest(10,’7’,’3’) from dual;Resultado: 10
UIDSintaxisUSERSintaxisUSERPropósitoDevuelve un valor VARCHAR2 que contiene el nombre de usuario actual de Oracle.Ejemplo:select user from dual;Resultado: CLOOAVALVERDE
Otras funciones1) Mostramos el nombre de los alumnos y si su asignatura es lengua le ponemos un código 1, si es matemáticas un código 2 y si no es ninguna de esas un 3.
Select alumnos, DECODE (asignatura, 'lenguaje',1, 'matemáticas', 2, 3) "código" from alumnos;2) Mostramos el usuario que está conectado.
Show USER;3) Mostramos el número de bytes que tiene la columna nombre de la tabla usuarios.
Selec t VSIZE(nombre) "tamaño", nombre from usuarios;
[Escriba texto] Página 21
22BASE DE DATOS II
BIBLIOGRAFIA
LIBRO:
Korth, Henry, Silberschatz. “Fundamentos de Base de Datos”. Mc Graw Hill, IV Edition 2002.
Kroenke, David M. “Procesamiento de Base de Datos”. Prentice May, V edición, 1996.
PAGINAS WEB:
Nivaildo Polanco Martínez “Propuesta de un rediseño de base de datos en postgresql” en:
http://www.monografias.com/trabajos91/propuesta-rediseno-base-datos-postgresql/propuesta-rediseno-base-datos-postgresql.shtml
Chagra “Base de datos” en: http://www.monografias.com/trabajos7/bada/bada.shtml
[Escriba texto] Página 22