You are on page 1of 41

FUNCIONES SQL ORACLE

FUNCIONES DE CONVERSIN DE CADENAS DE CARACTERES

LOWER (Columna | Expresin) Convierte en minsculas las cadenas de caracteres en maysculas. SELECT LOWER (PEPE) FROM DUAL; Resultado: pepe

UPPER (Columna | Expresin) Convierte en maysculas las cadenas de caracteres en minsculas. SELECT UPPER (pepe) FROM DUAL; Resultado: PEPE

INITCAP (Columna | Expresin) Convierte la primera letra de cada palabra en maysculas y el resto de letras en minsculas. SELECT INITCAP (hola pepe) FROM DUAL; Resultado: Hola Pepe

FUNCIONES DE MANIPULACIN DE CADENAS DE CARACTERES

CONCAT (Columna1 | Expresin1, Columna2 | Expresin2 ) Concatena dos cadenas de caracteres. Es equivalente al operador concatenacin || SELECT CONCAT (hola, Pepe) FROM DUAL; Resultado: holaPepe

SUBSTR (Columna | Expresin, m , n ) Devuelve la subcadena especificada comenzando por el carcter de posicin m y con n caracteres de longitud. Si m es negativo la cuenta comienza por el final dela cadena de caracteres. Si n se omite se devuelven todos los caracteres del final de la cadena. SELECT SUBSTR (perfeccion, 2 , 3 ) FROM DUAL; Resultado: erf

SELECT SUBSTR (perfeccion, -2 , 2 ) FROM DUAL; Resultado: on

LENGTH (Columna | Expresin ) Devuelve la longitud de una cadena de caracteres. SELECT LENGTH (hola) FROM DUAL; Resultado: 4

INSTR (Columna | Expresin, m ) Devuelve la posicin numrica del carcter nombrado. SELECT INSTR (hola, l) FROM DUAL; Resultado: 3

LPAD (Columna | Expresin, n, string) Justifica a la derecha con un ancho de n y rellena con un carcter o string los espacios vacos. SELECT LPAD (hola, 8, *) FROM DUAL; Resultado: ****hola

RPAD (Columna | Expresin, n, string) Justifica a la izquierda con un ancho de n y rellena con un carcter o string los espacios vacos. SELECT RPAD (hola, 8, *) FROM DUAL; Resultado: hola****

FUNCIONES NUMRICAS

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

ROUND (Columna | Expresin, n) Redondea a n posiciones decimales. Si se omite n no se redondea con lugares decimales. Si n es negativo los nmeros a la izquierda del punto decimal se redondean. SELECT ROUND (45.923 , 2), ROUND (45.923 , 0), ROUND (45.923 , -1) FROM DUAL; Resultado: 45.92 , 46 , 50

TRUNC (Columna | Expresin, n) Trunca la columna o valor a la ensima posicin decimal. Si se omite n, sin lugares decimales. Si n es negativo, los nmeros a la izquierda del punto decimal se truncan a cero. SELECT TRUNC (45.923 , 2), TRUNC (45.923), TRUNC (45.923 , -1) FROM DUAL; Resultado: 45.92 , 45 , 40

MOD ( m , n) Devuelve el resto de la divisin de m por n. SELECT MOD (1600, 300) FROM DUAL; Resultado: 100

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

SUMAR UN NUMERO A UNA FECHA Agrega una cantidad de das a una fecha. SELECT TO_DATE (01012000) +14 FROM DUAL; Resultado: 15/01/2000

RESTAR UN NUMERO A UNA FECHA Resta una cantidad de das a una fecha. SELECT TO_DATE (11012000) -10 FROM DUAL; Resultado: 01/01/2000

SUMAR HORAS A UNA FECHA Agrega una cantidad de horas a una fecha. SELECT TO_DATE (01012000) +26/24 FROM DUAL; Resultado: 02/01/2000

RESTAR DOS FECHAS Nos da la cantidad de dias entre dos fechas SELECT TO_DATE (11012000) - TO_DATE (09012000) FROM DUAL; Resultado: 2

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

ROUND ( fecha, formato) Si no especificamos ningn formato devuelve la fecha del primer dia del mes contenido en la fecha. Si el formato es MONTH, encuentra el primer da del del prximo mes. SELECT ROUND (TO_DATE(13071995, MONTH) FROM DUAL; Resultado: 01-AUG-1995 Si el formato es YEAR, encuentra el primer da del ao. SELECT ROUND (25-JUL-1995, YEAR) FROM DUAL Resultado: 01-JAN-1996

TRUNC ( fecha, formato) Devuelve la fecha con la posicin del da truncado en la unidad especificada por el formato. Si se omite el formato la fecha se trunca en el da ms prximo. SELECT TRUNC (25-JUL-1995, MONTH) FROM DUAL; Resultado: 01-JUL-1995

CONVERSIN ENTRE TIPOS DE DATOS TO_CHAR ( fecha, [formato] ) ] Convierte un nmero o fecha en una cadena de caracteres varchar2 con el modelo de formato especificado. SELECT TO_CHAR ( SYSDATE, MM / YY ) FROM DUAL; Resultado: 02/03 SELECT TO_CHAR ( SYSDATE, fmMM / YY ) FROM DUAL; Resultado: 2/03 ( fm suprime ceros a la izquierda) SELECT TO_CHAR ( SYSDATE, HH24:MI:SS AM) FROM DUAL; Resultado: 15:45:32 PM SELECT TO_CHAR ( SYSDATE, DD de MONTH ) FROM DUAL; Resultado: 11 de febrero SELECT TO_CHAR ( SYSDATE, DDSP de MONTH ) FROM DUAL; Resultado: once de febrero

TO_CHAR ( nmero, [formato] ) ] Convierte un nmero en una cadena de caracteres varchar2 con el modelo de formato especificado. SELECT TO_CHAR ( 3000 , $99,999 ) FROM DUAL; Resultado: $ 3,000

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

TO_DATE ( char, [formato]) ] Convierte una cadena de caracteres a un formato de fecha SELECT TO_DATE ( '22 FEBRERO DE 1999', 'DD MONTH "DE" YYYY') FROM DUAL; 22/02/99

SELECT TO_DATE ( '220399') FROM DUAL; 22/03/99

NVL ( expr1, expr2) Convierte un nulo a un valor expr1: es la columna que podra contener el valor nulo. expr2: es el valor para convertir el valor nulo SQL> SELECT COMM, NVL(COMM,0) FROM EMP;

DECODE ( columna/expresin,

valor 1, resultado 1, valor 2, resultado 2, ... valor_por_defecto )

Es parecido al IF-THEN-ELSE. busca el valor de una columna o expresin y lo compara con los diferentes valores 1,2...n si coincide devuelve el resultado correspondiente, si no devuelve el valor por defecto. SELECT DECODE ('Adulto', 'Adulto', 1500, 'Nio', 500, 2000) FROM DUAL; 1500 SELECT DECODE ('Nio', 'Adulto', 1500, 'Nio', 500, 2000) FROM DUAL; 500 SELECT DECODE ('Otros', 'Adulto', 1500, 'Nio', 500, 2000) FROM DUAL; 2000

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 DUMP(cadena[ ,formato, comienzo, longitud]) ] Visualiza el valor de la cadena de caracteres en formato de datos interno: ASCII, octal, hexadecimal o en formato de carcter. el argumento formato puede tomar los siguientes valores: 8 devuelve el resultado en octal 10 devuelve el resultado en decimal. 16 devuelve el resultado en hexadecimal. 17 devuelve el resultado en carcter. comienzo es la posicin de inicio de la cadena longitud es el nmero de caracteres

SELECT DUMP('PEPE', 16) FROM DUAL; Typ=96 Len=4: 50,45,50,45

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

TRANSLATE (cadena1, cadena2, cadena3) Convierte caracteres de una cadena en caracteres diferentes. Devuelve cadena1 con los caracteres encontrados en cadena2 y sustituidos por los caracteres de cadena 3. SELECT TRANSLATE ('SQLPLUS' , 'SQL' , 123) 123P3U1

REPLACE (cadena, cadena_busqueda [,cadena sustitucin ) Sustituye un caracter o varios caracteres de una cadena por 0 o ms caracteres. devuelve cadena con cada ocurrencia de cadena _busqueda sustituida por cadena_sustitucin. SELECT REPLACE (BLANCO Y NEGRO, 'O' , 'A' ) FROM DUAL; BLANCA Y NEGRA SELECT REPLACE (BLANCO Y NEGRO, 'O' ) FROM DUAL; BLANC Y NEGR

LTRIM (cadena, [carsup) / RTRIM Suprime un conjunto de caracteres a la izquierda ( RTRIM a la derecha) de la cadena. carsup es el conjunto de caracteres que se van a suprimir. Devuelve cadena con el conjunto de caracteres carsup omitidos por la izquierda de la cadena. Si queremos eliminar blancos a la izquierda: SELECT LTRIM ( hola SELECT LTRIM (XEhola, 'XE') FROM DUAL; hola hola) FROM DUAL;

FUNCIONES DE LISTAS

GREATEST( valor1, valor2, ...) / LAST( valor1, valor2, ...) Obtiene el mayor/menor valor de la lista. En caso de ser caracteres obtiene el mayor / menor nombre alfabtico de la lista. SELECT GREATEST ( 1, 2, 4, 12, 11, 7 ) FROM DUAL; SELECT GREATEST ( 'pepe', ' juan', 'pedro' ) FROM DUAL; SELECT GREATEST ( 'pp', ' pa', 'pz' ) FROM DUAL; 12 pepe pz

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

EQUIJOINS NON-EQUIJOINS OUTER JOIN SELF JOIN

EQUIJOINS O JOINS SIMPLES Sirven para consultar datos de dos tablas que poseen atributos comunes.(normalmente las claves principales y ajenas) SELECT FROM WHERE tabla1.columna, tabla 2. columna,.... tabla1, tabla2 tabla1.columna1 = tabla2.columna2 (condicin de join)

Columna1 y columna2 son las columnas comunes a las dos tablas. Ejemplo: SELECT FROM WHERE emp.empno, emp.ename, dept.deptno, dept.loc emp, dept emp.deptno = dept.deptno

El mismo ejemplo usando alias de tabla: SELECT FROM WHERE e.empno, e.ename, d.deptno, d.loc emp e, dept d e.deptno = d.deptno

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 FROM tabla1.columna, tabla 2. columna,.... tabla1, tabla2 Ejemplo: SELECT FROM ename, dname emp, dept;

NOM EQUIJOINS Para trabajar con tablas que no tienen ningn atributo en comn. SELECT e.ename, e.sal, s.grade

FROM WHERE

emp e, salgrade s e.sal BETWEEN s.losal AND s.hisal;

OUTER JOINS Para ver las filas que no cumplen la condicin de join. SELECT FROM WHERE tabla1.columna, tabla 2. columna,.... tabla1, tabla2 tabla1.columna1(+) = tabla2.columna2;

SELECT FROM WHERE

tabla1.columna, tabla 2. columna,.... tabla1, tabla2 tabla1.columna1 = tabla2.columna2 (+);

Ejemplo:

SELECT e.ename, d.deptno, d.dname FROM emp e, dept d WHERE e.deptno (+) = d.deptno AND d.deptno >20 ORDER BY d.deptno

Resultado:

ENAME

DEPTNO DNAME

---------- --------- -------------ALLEN BLAKE MARTIN JAMES TURNER WARD 30 SALES 30 SALES 30 SALES 30 SALES 30 SALES 30 SALES 40 OPERATIONS

ENTRADA DE DATOS INTERACTIVO

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.

ACCEPT mes CHAR PROMPT Introduce un mes: Introduce un mes: enero PROMPT El mes tecleado es &mes El mes tecleado es enero

SELECT TO_CHAR (TO_DATE (&dia/&mes/&ano), DAY, MONTH, YYYY) DIA, MES AO FROM DUAL;

VARIABLES DEL SISTEMA. COMANDO SET

SQL*Plus trabaja con variables de sistema que definen su entorno. Estas variables tienen un valor predeterminado que puede cambiarse con la sentencia SET. Las variables controlan el ancho de columnas, el tamao de la pagina...

Hay unas 50 variables que pueden controlarse con SET (Consultar el manual de referencia de SQL*Plus)

Vamos a ver algunas de las ms utilizadas:

SET Para establecer el valor de una variable de sistema: SET variable_del_sistema Valor Para mostrar el valor que tiene una variable: SHOW variable

AUTOCOMMIT SET AUTO[COMMIT] {OFF | ON | INMEDIATE } ON, INMEDIATE : Hace que se ejecute un commit automtico tras cada comando SQL o bloque PL/SQL Ejemplos: SHOW AUTO SET AUTO ON

HEADING SET HEA[DING] {OFF | ON } HEADING controla si las columnas resultado de una consulta aparecen con cabeceras (ON) o sin ellas (OFF)

LINESIZE SET LIN[ESIZE] {80 | n } Con LINESIZE controlamos el nmero de caracteres que se visualizan antes de cambiar de lnea. Los ttulos de cabecera y los pies de pgina se justifican de acuerdo con esta longitud.

PAGESIZE SET PAGES[IZE] {14 | n } Nmero de lneas que se visualizan por pgina.

PAUSE SET PAU[SE] {OFF | ON | texto } Controla el scroll en la visualizacin de informes. Si se quiere parar la visualizacin al comienzo de cada pgina se debe poner PAUSE a ON. Si queremos que se visualice un mensaje cada vez que se produzca la pausa sustituimos texto por el mensaje (entre comillas si es una palabra completa) NEWPAGE SET NEW[PAGE] {1 | n } Nmero de lneas en blanco que se deja al principio de cada pgina.

ECHO SET ECHO {ON |OFF} Visualiza cada sentencia antes de su ejecucin. Podemos seguir la ejecucin del fichero paso a paso. VERIFY SET VER[IFY] {OFF | ON } Sirve para ver o anular los mensajes de valor antiguo y nuevo en las variables de sustitucin. 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.

VARIABLES DE SUSTITUCIN (&) &variable Pide el contenido cada vez que la encuentra

SELECT empno as numero, ename as nombre , job as empleo FROM emp WHERE ename=UPPER(&nombre_empleado);

&&variable Pide el contenido una sola vez SELECT &nombre_columna FROM &nombre_tabla; &variable . caracteres_a_aadir

Podemos aadir caracteres detrs de una variable de sustitucin

INFORMES

Podemos dar formato a los resultados de las consultas, obteniendo informes estructurados. Entre otras cosas podemos definir cabeceras y pies de pgina, dimensionar la pgina, realizar rupturas de control (subtotales y totales)

CABECERAS Y PIES DE PAGINA

TTITLE Ttulo superior

BTITLE Ttulo inferior

TTI[TLE] [opciones[texto | variable]...] | [OFF | ON] Opciones que permiten colocar el ttulo: Col n S[KIP] n TAB n LE[FT] CE[NTER] R[IGHT] BOLD en la columna n de la lnea actual Saltar n lneas Saltar n columnas hacia delante (+n) o hacia atrs (-n) Alineacin izquierda Alineacin centrada Alineacin derecha Ttulo en negrita

FORMAT cadena_caracteres (permite dar formato al ttulo cuando este es una variable)

TABLAS

CREACIN DE TABLAS

CREATE TABLE Crea una tabla especificando sus columnas y tipos de datos que contendr cada columna CREATE TABLE departamento ( deptno dname loc Tabla creada. NUMBER(2), VARCHAR(14), VARCHAR(14) );

DESCRIBE departamento

Name ------------------------------DEPTNO DNAME LOC

Null? --------

Type ---NUMBER(2) VARCHAR2(14) VARCHAR2(14)

CONSULTAS AL DICCIONARIO DE DATOS

USER_TABLES

Podemos visualizar el tipo de datos que se almacenan en user_tables DESC SYS.USER_TABLES


Name Null? -------------------------------------TABLE_NAME TABLESPACE_NAME CLUSTER_NAME IOT_NAME PCT_FREE PCT_USED INI_TRANS MAX_TRANS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS LOGGING BACKED_UP NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_SPACE CHAIN_CNT AVG_ROW_LEN AVG_SPACE_FREELIST_BLOCKS NUM_FREELIST_BLOCKS DEGREE INSTANCES CACHE TABLE_LOCK SAMPLE_SIZE LAST_ANALYZED PARTITIONED IOT_TYPE TEMPORARY NESTED BUFFER_POOL Type ---NOT NULL VARCHAR2(30) VARCHAR2(30) VARCHAR2(30) VARCHAR2(30) NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER VARCHAR2(3) VARCHAR2(1) NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER VARCHAR2(10) VARCHAR2(10) VARCHAR2(5) VARCHAR2(8) NUMBER DATE VARCHAR2(3) VARCHAR2(12) VARCHAR2(1) VARCHAR2(3) VARCHAR2(7)

Descripcin de tablas propiedad del usuario

SELECT table_name FROM user_tables; Nos muestra las tablas que tenemos como usuarios ms la ltima tabla que hemos creado DEPARTAMENTO
TABLE_NAME -----------------------------ACTIVIDADES ACTIVIDADES_USUARIOS BANCOS BONUS DEPARTAMENTO DEPT EMP MY_EMPLOYEE PAGOS SALGRADE USUARIOS USUARIOS_ASOCIADOS

USERS_OBJECTS Ver los distintos tipos de objetos propiedad del usuario DESC SYS.USER_OBJECTS
Name ------------------------------OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS TEMPORARY GENERATED Null? -------Type ---VARCHAR2(128) VARCHAR2(30) NUMBER NUMBER VARCHAR2(15) DATE DATE VARCHAR2(19) VARCHAR2(7) VARCHAR2(1) VARCHAR2(1)

COLUMN OBJECT_NAME FORMAT A30

SELECT DISTINCT object_name, object_type FROM user_objects;


OBJECT_NAME -----------------------------ACTIVIDADES ACTIVIDADES_USUARIOS BANCOS BONUS CLAVE_ALTERNATIVA_USUARIOS CLAVE_PRIMARIA_ACTIVIDADES CLAVE_PRIMARIA_ACT_USU OBJECT_TYPE --------------TABLE TABLE TABLE TABLE INDEX INDEX INDEX

CLAVE_PRIMARIA_BANCOS CLAVE_PRIMARIA_PAGOS CLAVE_PRIMARIA_USUARIOS CLAVE_PRIMARIA_USUARIOS_ASOC DEPARTAMENTO DEPT EMP ..

INDEX INDEX INDEX INDEX TABLE TABLE TABLE

USERS_CATALOG Ver tablas, vistas, sinnimos y secuencias propiedad del usuarios DESC SYS.USER_CATALOG
Name ------------------------------- TABLE_NAME TABLE_TYPE Null? ------NOT NULL Type ---VARCHAR2(30) VARCHAR2(11)

SELECT * FROM user_catalog;


TABLE_NAME -----------------------------ACTIVIDADES ACTIVIDADES_USUARIOS BANCOS BONUS DEPARTAMENTO DEPT EMP MY_EMPLOYEE PAGOS SALGRADE USUARIOS USUARIOS_ASOCIADOS TABLE_TYPE ----------TABLE TABLE TABLE TABLE TABLE TABLE TABLE TABLE TABLE TABLE TABLE 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 Name ------------------------------EMPNO ENAME ANNSAL HIREDATE Null? -------Type ---NUMBER(4) VARCHAR2(10) NUMBER DATE

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 ADD Tabla modificada. dept30 (job VARCHAR2(9));

DESC dept30 Podemos ver como se ha aadido la columna job

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

ALTER TABLE MODIFY Tabla modificada.

dept30 (ename VARCHAR2(15));

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 Tabla borrada dept30;

BORRAR LOS REGISTROS DE UNA TABLA TRUNCATE TABLE Borra todos los registros de una tabla y libera todo el espacio ocupado por la tabla No se puede hacer un rollback TRUNCATE TABLE Tabla truncada. DELETE TABLE Borra todos los registros de una tabla pero no libera el espacio DELETE dept30; 6 filas borradas. dept30;

AADIR COMENTARIOS A UNA TABLA COMMENT Los comentarios se pueden ver a travs de determinadas vistas del diccionario de datos Podemos aadir comentarios de hasta 2000 bytes ALL_COL_COMMENTS USER_COL_COMMENTS ALL_TAB_COMMENTS USER_TAB_COMMENTS COMMENT ON TABLE emp IS Contiene datos sobre los empleados; Comentario creado. DESC SYS.USER_COL_COMMENTS;
Name ------------------------------- TABLE_NAME COLUMN_NAME COMMENTS Null? ------NOT NULL NOT NULL Type ---VARCHAR2(30) VARCHAR2(30) VARCHAR2(4000)

COLUMN COMMENTS FORMAT A35

SELECT * FROM USER_TAB_COMMENTS; TABLE_NAME -----------------------------ACTIVIDADES ACTIVIDADES_USUARIOS BANCOS BONUS DEPARTAMENTO DEPT DEPT30 EMP MY_EMPLOYEE PAGOS SALGRADE USUARIOS USUARIOS_ASOCIADOS TABLE_TYPE ----------- ------------TABLE TABLE TABLE TABLE TABLE TABLE TABLE TABLE TABLE TABLE TABLE TABLE TABLE COMMENTS ----------------------

Contiene datos sobre los empleados

RESTRICCIONES ( CONSTRAINTS) 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. Las restricciones se pueden crear en el momento de crear la tabla o despus de haber sido creada. Las restricciones se pueden definir a nivel de tabla o a nivel de columna. 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 -------------------EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO Null? ----------NOT NULL Type -------- ---NUMBER(4) VARCHAR2(10) VARCHAR2(9) NUMBER(4) DATE NUMBER(7,2) NUMBER(7,2) NUMBER(7)

NOT NULL

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;


Name ----------------------------OWNER CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME SEARCH_CONDITION R_OWNER R_CONSTRAINT_NAME DELETE_RULE STATUS DEFERRABLE DEFERRED VALIDATED GENERATED BAD LAST_CHANGE Null? - -------NOT NULL NOT NULL NOT NULL Type ---VARCHAR2(30) VARCHAR2(30) VARCHAR2(1) VARCHAR2(30) LONG VARCHAR2(30) VARCHAR2(30) VARCHAR2(9) VARCHAR2(8) VARCHAR2(14) VARCHAR2(9) VARCHAR2(13) VARCHAR2(14) VARCHAR2(3) DATE

SELECT FROM

constraint_name, constraint_type, table_name user_constraints;


C ----C P C C P R R C P U P P R C C TABLE_NAME -------------------ACTIVIDADES ACTIVIDADES ACTIVIDADES_USUARIOS ACTIVIDADES_USUARIOS ACTIVIDADES_USUARIOS ACTIVIDADES_USUARIOS ACTIVIDADES_USUARIOS BANCOS BANCOS DEPARTAMENTO DEPT EMP EMP EMPLEADOS EMPLEADOS

CONSTRAINT_NAME -----------------------------SYS_C00598 CLAVE_PRIMARIA_ACTIVIDADES SYS_C00600 SYS_C00601 CLAVE_PRIMARIA_ACT_USU CLAVE_AJENA_ACT CLAVE_AJENA_USU SYS_C00589 CLAVE_PRIMARIA_BANCOS DEPARTAMENTO_DNAME_UK PK_DEPT PK_EMP FK_DEPTNO EMPLEADOS_ENAME_NN EMPLEADOS_DEPTNO_NN .....

La columna Constraint_type (solo vemos C) toma los valores siguientes: C P R U CHECK PRIMARY KEY INTEGRIDAD REFERENCIAL UNIQUE KEY

Los NULL son restricciones CHECK

USER_CONSTRAINTS DESCRIBE SYS.USER_CONS_COLUMNS;


Name ------------------------------OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME POSITION Null? -------NOT NULL NOT NULL NOT NULL Type --------------------------VARCHAR2(30) VARCHAR2(30) VARCHAR2(30) VARCHAR2(4000) NUMBER

COLUMN column_name format a30 SELECT constraint_name, column_name FROM user_cons_columns WHERE table_name = EMP;

CONSTRAINT_NAME -----------------------------FK_DEPTNO PK_EMP

COLUMN_NAME -----------------------------DEPTNO EMPNO

CLAVES PRIMARIAS Y AJENAS PRIMARY KEY Definicin de clave primaria. Por defecto al declarar una clave primaria sobre esta se crea un ndice UNIQUE. CREATE TABLE departamento ( depno NUMBER(2), dname VARCHAR2(14) , loc VARCHAR2(14) , CONSTRAINT departamento_dname_uk UNIQUE(depno) CONSTRAINT departamento_depno_pk PRIMARY KEY); Tabla creada.

FOREIGN KEY Al definir una clave ajena hay que indicarle con REFERENCES que tabla clontiene el campo que es clave principal . REFERENCES identifica la tabla y columna en la tabla padre. ON DELETE CASCADE en caso de ser borrado un registro referenciado en la tabla padre en todas las hijas se borrara tambien.

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, CONSTRAINT empleados_deptno_fk FOREIGN KEY (deptno) REFERENCES dept (deptno));

Tabla creada.

CONSTRAINT CHECK CHECK Define una condicin que debe satisfacer una columna. CREATE TABLE departamento ( deptno NUMBER(2), dname VARCHAR2(14) , loc VARCHAR2(14) , CONSTRAINT departamento_dname_uk UNIQUE(deptno), CONSTRAINT departamento_deptno_pk PRIMARY KEY (deptno), CONSTRAINT departamente_deptno_ck CHECK (deptno BETWEEN 10 AND 99)); Tabla creada.

AADIR, MODIFICAR, ACTIVAR CONSTRAINTS AADIR UNA CONSTRAINT ALTER TABLE empleados ADD CONSTRAINT empleados_mgr_fk FOREIGN KEY(mgr) REFERENCES emp (empno); Tabla modificada

ELIMINACION DE UNA CONSTRAINT ALTER TABLE empleados DROP CONSTRAINT empleados_mgr_fk; Tabla modificada Para borrar la constraint PRIMARY KEY de la tabla departamento y la constraint FOREIGN KEY de la tabla empleados ALTER TABLE departamento DROP PRIMARY KEY CASCADE; Tabla modificada

DESACTIVAR CONSTRAINTS ALTER TABLE empleados DISABLE CONSTRAINT empleados_empno_pk CASCADE; Tabla modificada CASCADE desactiva las restricciones de integridad dependientes. ACTIVAR CONSTRAINTS ALTER TABLE ENABLE CONSTRAINT Tabla modificada CASCADE desactiva las restricciones de integridad dependientes. empleados empleados_empno_pk ;

VISTAS

Representan un subconjunto de una o mas tablas.

CREACION DE UNA VISTA CREATE VIEW CREATE VIEW AS SELECT FROM WHERE Vista creada. DESCRIBE emp10
Name ------------------------------EMPNO ENAME JOB Null? -------Type ---NUMBER(4) VARCHAR2(10) VARCHAR2(9)

emp10 empno, ename, job emp deptno=10;

La consulta que define la vista no puede contener ORDER BY

CREACION DE UNA VISTA CON ALIAS DE COLUMNA CREATE VIEW CREATE VIEW AS SELECT FROM WHERE Vista creada. SELECT * FROM sal30; sal30 empno numero_empleado, ename nombre, sal salario emp deptno=30;

LAS VISTAS EN EL DICCIONARIO DE DATOS USER_VIEWS

DESCRIBE sys.user_views;
Name ------------------------------VIEW_NAME TEXT_LENGTH TEXT TYPE_TEXT_LENGTH TYPE_TEXT OID_TEXT_LENGTH OID_TEXT VIEW_TYPE_OWNER VIEW_TYPE Null? -------NOT NULL Type --VARCHAR2(30) NUMBER LONG NUMBER VARCHAR2(4000) NUMBER VARCHAR2(4000) VARCHAR2(30) VARCHAR2(30)

SELECT view_name FROM user_views;


VIEW_NAME -----------------------------EMP10 SAL30

MODIFICACION DE UNA VISTA CREATE OR REPLACE VIEW CREATE OR REPLACE VIEW emp10 (numero_empleado, nombre_empleado, empleo) AS SELECT empno, ename , job FROM emp WHERE deptno=10; Vista creada. OR REPLACE permite que se cree la vista incluso si ya existe con ese nombre SELECT * FROM emp10;

OPERACIONES LMD SOBRE VISTAS Podemos realizar operaciones de LMD sobre vistas simples. No se puede eliminar una fila si la vista contiene: Funciones de grupo Una clausula GROUP BY El comando DISTINCT No se pueden modificar datos en las vistas si estas contienen Columnas definidas por expresiones La pseudocolumna ROWID No se pueden agregar datos si la vista contiene: Cualquier columna NOT NULL

CLAUSULA WITH CHECK OPTION WHITH CHECK OPTION Esta clausula especifica que los INSERTS y UPDATES realizados a travs de vistas no pueden crear filas que la vista no puede seleccionar. Permite las restricciones de integridad y chequeos en la validacin de los datos. Creamos una vista CREATE OR REPLACE VIEW emp20 AS SELECT * FROM emp WHERE deptno=20 WITH CHECK OPTION CONSTRAINT emp20_ck; SELECT * FROM emp20; Intentamos modificar el departamento del empleado 7788

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 AS SELECT * FROM emp WHERE deptno=20 WITH READ ONLY; emp20

ELIMINACION DE UNA VISTA DROP VIEW DROP VIEW emp10; Vista borrada

SECUENCIAS

Las secuencias generan nmeros nicos de forma automtica. Es un objeto que se puede compartir. Se suelen usar para crear valores de una clave primaria.

CREAR SECUENCIAS CREATE SEQUENCE CREATE SEQUENCE nombre_secuencia [INCREMENT BY n] [START WITH n] ( Si se omite empieza por 1) (valor mximo al que llega) (valor mnimo al que llega)

[MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [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)

Creamos una secuencia para ser usada en la tabla dept CREATE SEQUENCE dept_deptno INCREMENT BY 1 START WITH 91 MAXVALUE 100 NOCACHE NOCYCLE;

VERIFICACIN DE SECUENCIAS USER_ SEQUENCE DESCRIBE SYS.USER_SEQUENCES;


Name ------------------------------SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY CYCLE_FLAG ORDER_FLAG CACHE_SIZE LAST_NUMBER Null? -------NOT NULL Type ---VARCHAR2(30) NUMBER NUMBER NUMBER VARCHAR2(1) VARCHAR2(1) NUMBER NUMBER

NOT NULL

NOT NULL NOT NULL

SELECT sequence_name, min_value, max_value, increment_by, last_number FROM user_sequences;


SEQUENCE_NAME MIN_VALUE ------------------------------ --------DEPT_DEPTNO 1 MAX_VALUE --------100 INCREMENT_BY -----------1 LAST_NUMBER ----------91

PSEUDOCOLUMNAS NEXTVAL Y CURRVAL NEXT_VAL Retorna el prximo valor disponible de la secuencia. CURRVAL Retorna el valor actual de la secuencia.

DESCRIBE SYS.USER_SEQUENCES;
Name ------------------------------SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY CYCLE_FLAG ORDER_FLAG CACHE_SIZE LAST_NUMBER Null? -------NOT NULL Type ---VARCHAR2(30) NUMBER NUMBER NUMBER VARCHAR2(1) VARCHAR2(1) NUMBER NUMBER

NOT NULL

NOT NULL NOT NULL

USO DE UNA SECUENCIA INSERT INTO VALUES 1 fila creada PODEMOS VER EL VALOR ACTUAL DE UNA SECUENCIA SELECT FROM dept_deptno.CURRVAL sys.dual; dept (dept_deptno.NEXTVAL, MARKETING, SAN DIEGO);

MODIFICACIN DE UNA SECUENCIA ALTER SEQUENCE ALTER SEQUENCE dept_deptno INCREMENT BY 1 MAXVALUE 9999 NOCACHE NOCYCLE;

ELIMINACION DE UNA SECUENCIA DROP SEQUENCE DROP SEQUENCE dept_deptno;

INDICES

Aceleran la recuperacin de filas mediante el uso de punteros. Los ndices se crean automticamente cuando se define una restriccin primary key o unique en la definicin de una tabla o manualmente.

CREACIN DE UN INDICE CREATE INDEX CREATE INDEX nombre_indice ON tabla (columna..)

CREATE INDEX ON

emp_ename_idx emp (ename);

VERIFICACION DE INDICES USER_INDEXES

DESCRIBE SYS.USER_INDEXES;
Name ------------------------------INDEX_NAME INDEX_TYPE TABLE_OWNER TABLE_NAME TABLE_TYPE UNIQUENESS TABLESPACE_NAME INI_TRANS MAX_TRANS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE PCT_THRESHOLD INCLUDE_COLUMN FREELISTS FREELIST_GROUPS PCT_FREE LOGGING Null? -------NOT NULL NOT NULL NOT NULL Type ---VARCHAR2(30) VARCHAR2(12) VARCHAR2(30) VARCHAR2(30) VARCHAR2(11) VARCHAR2(9) VARCHAR2(30) NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER VARCHAR2(3)

BLEVEL LEAF_BLOCKS DISTINCT_KEYS AVG_LEAF_BLOCKS_PER_KEY AVG_DATA_BLOCKS_PER_KEY CLUSTERING_FACTOR STATUS NUM_ROWS SAMPLE_SIZE LAST_ANALYZED DEGREE INSTANCES PARTITIONED TEMPORARY GENERATED BUFFER_POOL

NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER VARCHAR2(8) NUMBER NUMBER DATE VARCHAR2(40) VARCHAR2(40) VARCHAR2(3) VARCHAR2(1) VARCHAR2(1) VARCHAR2(7)

USER_IND_COLUMNS DESCRIBE SYS.USER_IND_COLUMNS;


Name ------------------------------INDEX_NAME TABLE_NAME COLUMN_NAME COLUMN_POSITION COLUMN_LENGTH Null? -------- ---NOT NULL NOT NULL NOT NULL NOT NULL Type VARCHAR2(30) VARCHAR2(30) VARCHAR2(4000) NUMBER NUMBER

ELIMINACIN DE UN INDICE DROP INDEX DROP INDEX nombre_indice;

DROP INDEX emp_ename_idx;

SINONIMOS

Simplifican el acceso a los objetos. Permiten hacer referencia a una tabla propia o de otro usuario.

CREACIN Y BORRADO DE UN SINONIMO CREATE [PUBLIC] SYNONYM FOR sinnimo objeto;

PUBLIC crea un sinnimo accesible a todos los usuarios. Vamos a crear un sinnimo para la vista dept_sum_vu

CREATE SYNONYM FOR

d_sum dept_sum_vu;

Para borrar un sinnimo DROP SYNONYM d_sum;

You might also like