23
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

Cap. iv bdd ii

Embed Size (px)

Citation preview

Page 1: 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

Page 2: Cap. iv bdd ii

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

Page 3: Cap. iv bdd ii

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

Page 4: Cap. iv bdd ii

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

Page 5: Cap. iv bdd ii

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

Page 6: Cap. iv bdd ii

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

Page 7: Cap. iv bdd ii

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

Page 8: Cap. iv bdd ii

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

Page 9: Cap. iv bdd ii

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

Page 10: Cap. iv bdd ii

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

Page 11: Cap. iv bdd ii

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

Page 12: Cap. iv bdd ii

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

Page 13: Cap. iv bdd ii

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

Page 14: Cap. iv bdd ii

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

Page 15: Cap. iv bdd ii

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

Page 16: Cap. iv bdd ii

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

Page 17: Cap. iv bdd ii

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

Page 18: Cap. iv bdd ii

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

Page 19: Cap. iv bdd ii

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

Page 20: Cap. iv bdd ii

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

Page 21: Cap. iv bdd ii

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

Page 22: Cap. iv bdd ii

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

Page 23: Cap. iv bdd ii

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