Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Funciones Oracle PDF
Funciones Oracle PDF
NLS_NUMERIC_CHARACTERS = "DG"
D representa el caracter decimal
G el caracter separador de miles
ALTER SESSION SET NLS_NUMERIC_CHARACTERS="/ *";
SELECT TO_CHAR(SAL,'999G999D999') FROM EMP;
800/000
1*600/000
1*250/000
2*975/000
NLS_CURRENCY
Especifica el smbolo de la moneda local
ALTER SESSION SET NLS_CURRENCY= 'Euros';
SELECT TO_CHAR ( 123, '999L') FROM DUAL;
123Euros
FECHAS
Oracle almacena fechas en un formato numrico interno:
siglo, ao, mes da, hora, minutos, segundos.
El formato de fecha por defecto es DD-MON-YY
SYSDATE
Funcin que devuelve la fecha y la hora actuales del sistema.
SELECT SYSDATE FROM DUAL;
Resultado: 28/02/03
NLS_DATE_LANGUAGE
Por defecto al iniciar nuestra sesin el idioma definido para la fecha es el espaol.
Podemos definir otro idioma cualquiera:
SQL > ALTER SESSION SET NLS_DATE_LANGUAGE = French;
SQL > ALTER SESSION SET NLS_DATE_LANGUAGE = English;
NLS_DATE_FORMAT
Podemos cambiar el valor por omisin para la fecha mediante este parametro. Por
ejempo si queremos que la fecha nos aparezca como da/ nombre_mes/ ao
SQL > ALTER SESSION SET NLS_DATE_FORMAT = DD/ month / YYYY;
Si queremos que nos aparezca adems la hora
SQL > ALTER SESSION SET
NLS_DATE_FORMAT = DD/ month / YYYY HH24:MI:SS ;
OPERADORES ARITMETICOS DE FECHAS
FUNCIONES DE FECHA
MONTHS_BETWEEN ( fecha1, fecha2)
Nos devuelve el nmero de meses entre dos fechas
SELECT MONTHS_BETWEEN (01-SEP-1995, 11/JAN/94) FROM DUAL;
Resultado: 16.6774194
ADD_MONTHS ( fecha , n )
Agrega n meses a la fecha
SELECT ADD_MONTHS (01-ENE-1994, 6) FROM DUAL;
Resultado: 11- JUL -1994
NEXT_DAY ( fecha, dia_semana)
Devuelve la fecha del dia especificado despus de una fecha.
SELECT NEXT_DAY (01-SEP-1995, Miercoles) FROM DUAL;
Resultado: 08-SEP-1995
LAST_DAY ( fecha)
Devuelve el ltimo da del mes.
SELECT LAST_DAY (01-SEP-1995) FROM DUAL;
Resultado: 30-SEP-1995
TO_NUMBER (char)
Convierte una cadena de caracteres a un formato numrico.
SELECT TO_NUMBER ('1234') + TO_NUMBER ('12,34') FROM DUAL;
Resultado: 1246,34
ANIDAMIENTO DE FUNCIONES
Las funciones a nivel de fila pueden anidarse ( usar unas dentro de otras).
Las funciones anidadas son evaluadas desde el nivel ms interno al ms externo.
buscamos la fecha del lunes despues de pasados 6 meses del dia actual:
SELECT TO_CHAR (NEXT_DAY(ADD_MONTHS(SYSDATE,6), 'LUNES'), 'Day,
month, yyyy') FROM DUAL;
OTRAS FUNCIONES
USER
Devuelve el nombre del usuario actual.
SELECT USER FROM DUAL;
SCOTT
SHOW USER
el usuario es "SCOTT"
UID
Devuelve el identificador del usuario actual. Al crear un usuario Oracle le asigna un
nmero.
SELECT UID FROM DUAL;
18
VSIZE (expresin)
Devuelve el nmero de bytes que ocupa expresin. Si la expresin es nulo, la funcin
devuelve nulo.
SELECT VSIZE('HOLA') FROM DUAL; 4
VSIZE (expresin)
Devuelve el nmero de bytes que ocupa expresin. Si la expresin es nulo, la funcin
devuelve nulo.
SELECT VSIZE('HOLA') FROM DUAL; 4
ASCII(cadena)
Devuelve el valor ascii de la primera letra de la cadena
SELECT ASCII('HOLA') FROM DUAL; 72
FUNCIONES MATEMATICAS
ABS (n)
Devuelve el valor absoluto
CEIL (n)
Obtiene el valor entero inmediatamente superior o igual a n
FLOOR (n)
Obtiene el valor entero inmediatamente inferior o igual a n
POWER (m, exponente)
Calcula la potencia de un nmero
SIGN (valor)
Indica el signo del valor
SQRT(n)
Calcula la raz cuadrada
TIPOS DE JOINS
PRODUCTO CARTESIANO
Cuando omitimos la condicin de join o definimos una condicin de join invlida.
Se combinan todas las filas de la primera tabla con todas las de la segunda.
SELECT tabla1.columna, tabla 2. columna,....
FROM tabla1, tabla2
Ejemplo:
SELECT ename, dname
FROM emp, dept;
NOM EQUIJOINS
Para trabajar con tablas que no tienen ningn atributo en comn.
SELECT e.ename, e.sal, s.grade
FROM emp e, salgrade s
WHERE e.sal BETWEEN s.losal AND s.hisal;
OUTER JOINS
Para ver las filas que no cumplen la condicin de join.
SELECT tabla1.columna, tabla 2. columna,....
FROM tabla1, tabla2
WHERE tabla1.columna1(+) = tabla2.columna2;
Ejemplo:
Resultado:
ACCEPT
Permite dar a una variable de usuario un valor introducido por teclado.
ACC[EPT] variable [NUM[BER] | CHAR] [PROMPT texto | NOPR[OMPT]] [HITE]
HITE hace que los caracteres tecleados por el operador no aparezcan en pantalla.
PROMPT permite visualizar un texto. Dentro del texto puede haber variables de
sustitucin.
Hay unas 50 variables que pueden controlarse con SET (Consultar el manual de
referencia de SQL*Plus)
AUTOCOMMIT
HEADING
LINESIZE
PAGESIZE
NEWPAGE
SET NEW[PAGE] {1 | n }
Nmero de lneas en blanco que se deja al principio de cada pgina.
ECHO
VERIFY
Adems de VERIFY existen otras variables del sistema que afectan al funcionamiento
de las variables de sustitucin:
SCAN
Si est OFF no se produce el proceso de sustitucin.
DEFINE
Contiene el carcter que precede a las variables de sustitucin (Por defecto &)
ESCAPE
Define el carcter escape, por defecto \ que, puesto delante del carcter de sustitucin
le quita su significado.
CONCAT
Define el carcter que separa el nombre de una variable de los caracteres que le siguen,
por defecto el punto. & variable.caracteres
VARIABLES DE USUARIO (DEFINE)
DEFINE
DEF[INE] nombre_variable = texto
Define la variable de usuario
DEF[INE] nombre_variable
Muestra el contenido de la variable de usuario
DEF[INE]
Muestra todas las variables de usuario
DEFINE_EDITOR= nombre_del_editor
Fijamos el editor al que llamamos con el comando EDIT
Todas las variables definidas con DEFINE toman siempre valores tipo CHAR.
UNDEFINE
UNDEF[INE] nombre_variable
Elimina la variable de usuario previamente definida.
&&variable
Pide el contenido una sola vez
SELECT &nombre_columna
FROM &nombre_tabla;
&variable . caracteres_a_aadir
TTITLE
Ttulo superior
BTITLE
Ttulo inferior
CREACIN DE TABLAS
CREATE TABLE
Crea una tabla especificando sus columnas y tipos de datos que contendr cada columna
CREATE TABLE departamento
( deptno NUMBER(2),
dname VARCHAR(14),
loc VARCHAR(14) );
Tabla creada.
DESCRIBE departamento
USER_TABLES
USERS_OBJECTS
Ver los distintos tipos de objetos propiedad del usuario
DESC SYS.USER_OBJECTS
OBJECT_NAME OBJECT_TYPE
------------------------------ ---------------
ACTIVIDADES TABLE
ACTIVIDADES_USUARIOS TABLE
BANCOS TABLE
BONUS TABLE
CLAVE_ALTERNATIVA_USUARIOS INDEX
CLAVE_PRIMARIA_ACTIVIDADES INDEX
CLAVE_PRIMARIA_ACT_USU INDEX
CLAVE_PRIMARIA_BANCOS INDEX
CLAVE_PRIMARIA_PAGOS INDEX
CLAVE_PRIMARIA_USUARIOS INDEX
CLAVE_PRIMARIA_USUARIOS_ASOC INDEX
DEPARTAMENTO TABLE
DEPT TABLE
EMP TABLE
..
USERS_CATALOG
Ver tablas, vistas, sinnimos y secuencias propiedad del usuarios
DESC SYS.USER_CATALOG
Name Null? Type
------------------------------- - ------- ----
TABLE_NAME NOT NULL VARCHAR2(30)
TABLE_TYPE VARCHAR2(11)
TABLE_NAME TABLE_TYPE
------------------------------ -----------
ACTIVIDADES TABLE
ACTIVIDADES_USUARIOS TABLE
BANCOS TABLE
BONUS TABLE
DEPARTAMENTO TABLE
DEPT TABLE
EMP TABLE
MY_EMPLOYEE TABLE
PAGOS TABLE
SALGRADE TABLE
USUARIOS TABLE
USUARIOS_ASOCIADOS TABLE
CREACIN DE UNA TABLA A PARTIR DE UNA SUBCONSULTA
CREATE TABLE dept30
AS
SELECT empno, ename, sal*12 annsal, hiredate
FROM emp
WHERE deptno = 30;
Tabla creada.
DESCRIBE dept30
MODIFICACIN DE TABLAS
ALTER TABLE
Podemos aadir una nueva columna, modificar una columna ya existente o dar un valor
por defecto a una nueva columna.
Aadimos una nueva columna job a la tabla dept30
ALTER TABLE dept30
ADD (job VARCHAR2(9));
Tabla modificada.
Con MODIFY podemos cambiar el tipo de dato de una columna, su tamao y valor por
defecto.
Vamos a modificar la longitud mxima de los caracteres de la columna ename
Tabla modificada.
ELIMINACIN DE UNA TABLA
DROP TABLE
Cuando eliminamos una tabla se borran todos los datos de la tabla y todos los ndices.
Se realiza un COMMIT (no podremos deshacer el borrado con la sentencia
ROLLBACK)
DROP TABLE dept30;
Tabla borrada
ALL_COL_COMMENTS
USER_COL_COMMENTS
ALL_TAB_COMMENTS
USER_TAB_COMMENTS
DESC SYS.USER_COL_COMMENTS;
Las restricciones se utilizan para prevenir la entrada de datos no vlidos en una tabla y
garantizar reglas de integridad de los datos.
Conviene asignar un nombre a cada restriccin pues en caso contrario oracle genera uno
usando el formato SYS-Cn.
Para ver las restricciones definidas hemos de hacerlo a travs del diccionario de datos.
NOT NULL
Especifica que una columna no puede contener valores nulos.
CREATE TABLE empleados (
empno NUMBER(4),
ename VARCHAR2(10)
CONSTRAINT empleados_ename_nn NOT NULL,
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7,2),
comm NUMBER(7,2),
deptno NUMBER(7)
CONSTRAINT empleados_deptno_nn NOT NULL);
Tabla creada
DESC empleados;
Name Null? Type
-------------------- ----------- -------- ----
EMPNO NUMBER(4)
ENAME NOT NULL VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NOT NULL NUMBER(7)
UNIQUE
Requiere que los valores en una columna o columnas sean unicos.
Las claves UNIQUE permiten la entrada de nulos, a menos que tambien se definan
NOT NULL
CREATE TABLE departamento (
depno NUMBER(2),
dname VARCHAR2(14) ,
loc VARCHAR2(14) ,
CONSTRAINT departamento_dname_uk UNIQUE(depno));
Tabla creada.
VISUALIZACION DE RESTRICCIONES (CONSTRAINTS)
USER_CONSTRAINTS
DESCRIBE SYS.USER_CONSTRAINTS;
CONSTRAINT_NAME C TABLE_NAME
------------------------------ ----- --------------------
SYS_C00598 C ACTIVIDADES
CLAVE_PRIMARIA_ACTIVIDADES P ACTIVIDADES
SYS_C00600 C ACTIVIDADES_USUARIOS
SYS_C00601 C ACTIVIDADES_USUARIOS
CLAVE_PRIMARIA_ACT_USU P ACTIVIDADES_USUARIOS
CLAVE_AJENA_ACT R ACTIVIDADES_USUARIOS
CLAVE_AJENA_USU R ACTIVIDADES_USUARIOS
SYS_C00589 C BANCOS
CLAVE_PRIMARIA_BANCOS P BANCOS
DEPARTAMENTO_DNAME_UK U DEPARTAMENTO
PK_DEPT P DEPT
PK_EMP P EMP
FK_DEPTNO R EMP
EMPLEADOS_ENAME_NN C EMPLEADOS
EMPLEADOS_DEPTNO_NN C EMPLEADOS
.....
C CHECK
P PRIMARY KEY
R INTEGRIDAD REFERENCIAL
U UNIQUE KEY
DESCRIBE SYS.USER_CONS_COLUMNS;
CONSTRAINT_NAME COLUMN_NAME
------------------------------ ------------------------------
FK_DEPTNO DEPTNO
PK_EMP EMPNO
Tabla creada.
CONSTRAINT CHECK
CHECK
Define una condicin que debe satisfacer una columna.
Tabla modificada
Tabla modificada
Tabla modificada
DESACTIVAR CONSTRAINTS
ACTIVAR CONSTRAINTS
Tabla modificada
Vista creada.
DESCRIBE emp10
Vista creada.
SELECT *
FROM sal30;
LAS VISTAS EN EL DICCIONARIO DE DATOS
USER_VIEWS
DESCRIBE sys.user_views;
VIEW_NAME
------------------------------
EMP10
SAL30
Vista creada.
OR REPLACE permite que se cree la vista incluso si ya existe con ese nombre
Funciones de grupo
Una clausula GROUP BY
El comando DISTINCT
UPDATE emp20
SET deptno=22
WHERE empno=7788;
DENEGAR OPERACIONES LMD
WHITH READ ONLY
Agregando esta opcin en la definicin de la vista nos aseguramos que no ocurran
operaciones de LMD.
CREATE OR REPLACE VIEW emp20
AS SELECT *
FROM emp
WHERE deptno=20
WITH READ ONLY;
Vista borrada
SECUENCIAS
CREAR SECUENCIAS
CREATE SEQUENCE
CREATE SEQUENCE nombre_secuencia
[INCREMENT BY n]
[START WITH n] ( Si se omite empieza por 1)
[MAXVALUE n | NOMAXVALUE] (valor mximo al que llega)
[MINVALUE n | NOMINVALUE] (valor mnimo al que llega)
[CACHE n | NOCACHE] ( especifica cuantos valores sern preasignados
y mantenidos en la memoria del servidor
oracle, por defecto 20)
[CYCLE | NOCYCLE]; (especifica que la secuencia continua generando
valores o no despus de haber llegado a mximo)
DESCRIBE SYS.USER_SEQUENCES;
Name Null? Type
------------------------------- -------- ----
SEQUENCE_NAME NOT NULL VARCHAR2(30)
MIN_VALUE NUMBER
MAX_VALUE NUMBER
INCREMENT_BY NOT NULL NUMBER
CYCLE_FLAG VARCHAR2(1)
ORDER_FLAG VARCHAR2(1)
CACHE_SIZE NOT NULL NUMBER
LAST_NUMBER NOT NULL NUMBER
USO DE UNA SECUENCIA
1 fila creada
SELECT dept_deptno.CURRVAL
FROM sys.dual;
CREACIN DE UN INDICE
CREATE INDEX
VERIFICACION DE INDICES
USER_INDEXES
DESCRIBE SYS.USER_INDEXES;
USER_IND_COLUMNS
DESCRIBE SYS.USER_IND_COLUMNS;
Name Null? Type
------------------------------- -------- ----
INDEX_NAME NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
COLUMN_NAME VARCHAR2(4000)
COLUMN_POSITION NOT NULL NUMBER
COLUMN_LENGTH NOT NULL NUMBER
ELIMINACIN DE UN INDICE
DROP INDEX