Вы находитесь на странице: 1из 6

Comandos en Oracle

DATA DEFINITION LANGUAGE [1]

Aqui esta definida la sintaxis de las sentencias del lenguaje de definicion de datos (Data Definition
Language o DDL) de oracle como CREATE TABLE, CREATE INDEX, CREATE USER, etc.

Create table: Creacin de una tabla. Ejemplo:

Create table T_PRODUCTOS ( numproduct number, desproduct varchar2(10) )

Create index: Los indices se usan para mejorar el rendimiento de las operaciones sobre
una tabla. En general mejoran el rendimiento las SELECT y empeoran (minimamente) el
rendimiento de los INSERT y los DELETE. En oracle existen tres tipos de indices:

1. Table Index:
CREATE [UNIQUE|BITMAP] INDEX [esquema.]index_name ON [esquema.]table_name
[tbl_alias] (col [ASC | DESC]) index_clause index_attribs
2. Bitmap Join Index:
CREATE [UNIQUE|BITMAP] INDEX [esquema.]index_name ON [esquema.]table_name
[tbl_alias] (col_expression [ASC | DESC]) FROM [esquema.]table_name [tbl_alias]
WHERE condition [index_clause] index_attribs
3. Cluster Index:
CREATE [UNIQUE|BITMAP] INDEX [esquema.]index_name ON CLUSTER
[esquema.]cluster_name index_attribs

Create view: Esta sentencia sirve para crear una vista de una tabla o tablas. Una vista es
una tabla lgica basada en los datos de otra tabla. Ejemplo:
CREATE VIEW V_PEDIDOS (NUMPEDIDO, FECPEDIDO, NUNCLIENTE, NOMCLIENTE) FROM
SELECT A.NUMPEDIDO,A.FECPEDIDO,A.NUMCLIENTE, B.NOMCLIENTE FROM T_PEDIDOS A,
T_CLIENTE B WHERE A.NUMCLIENTE=B.NUMCLIENTE;

Alter table La sintaxis es:

ALTER TABLE [esquema.]tabla {ADD|MODIFY|DROP}...


- Aadir una columna a una tabla:
ALTER TABLE T_PEDIDOS ADD TEXTOPEDIDO Varchar2(35);

- Cambiar el tamao de una columna en una tabla:


ALTER TABLE T_PEDIDOS MODIFY TEXTOPEDIDO Varchar2(135);

Constraints
Para cambiar las restricciones y la clave primaria de una tabla debemos usar ALTER TABLE.

- Crear una clave primaria (primary key):


ALTER TABLE T_PEDIDOS ADD CONSTRAINT PK_PEDIDOS PRIMARY KEY
(numpedido,lineapedido);
- Crear una clave externa, para integridad referencial (foreign key):
ALTER TABLE T_PEDIDOS ADD CONSTRAINT FK_PEDIDOS_CLIENTES FOREIGN KEY
(codcliente) REFERENCES T_CLIENTES (codcliente));

- Crear un control de valores (check constraint):


ALTER TABLE T_PEDIDOS ADD CONSTRAINT CK_ESTADO CHECK (estado IN (1,2,3));

- Crear una restriccin UNIQUE:


ALTER TABLE T_PEDIDOS ADD CONSTRAINT UK_ESTADO UNIQUE (correosid);

DATA MANIPULATION LANGUAGE [2]

Aqui estan definidas las sentencias del lenguaje de manipulacin de datos (Data Manipulation
Language o DML) de oracle, como SELECT, UPDATE, INSERT, DELETE, etc...

SELECT

La seleccin sobre una tabla consiste en elegir un subconjunto de filas quecumplan (o no) algunas
condiciones determinadas. La sintaxis de una sentencia de este tipo es la siguiente:

SELECT */ columna1, columna2,.... FROM nombre-tabla [WHERE condicin] [GROUP BY columna1,


columna2.... ] [HAVING condicin-seleccin-grupos ] [ORDER BY columna1 [DESC], columna2
[DESC]... ]

- GROUP BY columna1, columna2....


Se utiliza para agrupar resultados por una determinada columna, especficamente cuando
se utilizan funciones de columna y los resultados se desean obtener por grupos (SQL lanza
un sort para generar los grupos).

- HAVING condicin-seleccin-grupos
Se utiliza con la clusula GROUP BY, cuando se quiere poner condiciones al resultado de
un grupo.

- ORDER BY colum1 [DESC], colum2 [DESC...]


Sirve para ordenar el resultado. Todas las columnas por las que se desee realizar el orden
tienen que encontrarse en la sentencia Select de la consulta. El orden de las columnas
puede ser ascendente, (por omisin, ASC), o descendente, (DESC).

SENTENCIA SELECT (JOIN)


Consiste en la unin de campos de dos o ms tablas. Dichas tablas tendrn por lo menos una
columna comn que sirva de nexo del join.

SELECT columna1, columna2,... FROM nombre-tabla1, nombre-tabla2

columna1, columna2,... Para diferenciar las columnas con el mismo nombre se antepondr el
nombre de la tabla a la que pertenecen, utilizando el punto como separador. Por ejemplo:

SELECT Tabla1.Columna2, Tabla2.Columna2, Columna3..... FROM Tabla1, Tabla2 WHERE


Tabla1.Columna1 = Tabla2.Columna1 La Columna1 de cada una de las tablas respectivas son las
columnas de nexo o columnas de join.

SENTENCIA SELECT DISTINCT

Recupera las filas de una tabla eliminando los valores de la columna duplicados.

SELECT DISTINCT columna1, columna2,.... FROM nombre-tabla1, nombre-tabla2 [GROUP BY


columna1, columna2....] [HAVING condicin-seleccin-grupos] [ORDER BY columna1 [DESC],
columna2 [DESC]...

SENTENCIA SELECT TOP N FILAS DE UNA TABLA

En Oracle8i podemos usar la sintaxis siguiente, con una clusula ORDER BY, para elegir filas con los
valores mximos o mnimos de un campo:

SELECT * FROM (SELECT * FROM my_table ORDER BY col_name_1 DESC) WHERE ROWNUM < 10;

FUNCIONES SOBRE COLUMNAS

- COUNT. Indica el nmero de filas que cumplen una determinada condicin, o el nmero
de valores diferentes que posee una columna.
COUNT(*) o COUNT(DISTINCT columna)

- SUM. Suma los valores de una columna.


SUM(columna)

- AVG. Entrega la media de los valores de una columna.


AVG(columna)

- MIN. Entrega el valor mnimo de una columna.


MIN(columna)

- MAX. Entrega el valor mximo de una columna.


MAX(columna)

SUBSELECTS

Permite realizar comparaciones con valores obtenidos en otra sentencia select anidada, a la que se
denomina Subselect o Subselect interna.
SELECT columna1>, columna2,.... FROM nombre-tabla1, nombre-tabla2 WHERE columna1 =
(SELECT columna1 FROM nombre-tabla1, nombre-tabla2 WHERE condicin)

(Cuando en la condicin se pone el operador =, la subselect deber recuperar un slo registro).

INSERT

Aade filas a una tabla.


- Para guardar los datos insertados hay que ejecutar COMMIT;
- Para cancelar la inserccin podemos hacer ROLLBACK;

Un formato posible es: INSERT INTO nombre-tabla VALUES (serie de valores)

El orden en el que se asignen los valores en la clusula VALUES tiene que coincidir con el orden en
que se definieron las columnas en la creacin del objeto tabla, dado que los valores se asignan por
posicionamiento relativo. Por ejemplo: INSERT INTO T_PEDIDOS VALUES (125,2,'PEPE');

DELETE

Borra una o ms filas de una tabla, dependiendo de la condicin WHERE.

- Para guardar cambios hay que ejecutar COMMIT;


- Para cancelar el borrado podemos hacer ROLLBACK;

La sintaxis es la siguiente: DELETE FROM nombre-tabla [WHERE condicin]


CUIDADO! Si no se pone condicin de seleccin, borra todas las filas de la tabla.
Si ejecutamos: DELETE FROM T_PEDIDOS; Borrar toda la tabla.
Si ejecutamos: DELETE FROM T_PEDIDOS WHERE COD_PEDIDO=15; Borrar un registro.

TRUNCATE

Borrar todas las filas de una tabla o cluster.

TRUNCATE TABLE [esquema.]tabla [{PRESERVE|PURGE} MATERIALIZED VIEW LOG] [{DROP |


REUSE} STORAGE] TRUNCATE CLUSTER [esquema.]cluster [{DROP | REUSE} STORAGE]

COMMIT

Guarda los cambios de la transaccin en curso.

Libera los recursos bloqueados por cualquier actualizacin hecha con la transaccin actual (LOCK
TABLE).

COMMIT [WORK] [COMMENT 'comment_text'] COMMIT [WORK] [FORCE 'force_text' [,int] ]

Si ejecutamos: DELETE FROM T_PEDIDOS WHERE COD_PEDIDO=15; COMMIT; Borrar un registro y


guarda los cambios.
UPDATE

Actualiza valores de una o ms columnas para un subconjunto de filas de una tabla.


- Para guardar cambios hay que ejecutar COMMIT;
- Para cancelar la modificacin podemos hacer ROLLBACK;

UPDATE nombre-tabla SET columna1 = valor1 [, columna2 = valor2 ...] [WHERE condicin]

Actualiza los campos correspondientes junto con los valores que se le asignen, en el subconjunto
de filas que cumplan la condicin de seleccin.
- Si no se pone condicin de seleccin, la actualizacin se da en todas las filas de la tabla.
- Si se desea actualizar a nulos, se asignar el valor NULL.

En este ejemplo cambiamos el nombre y estado de un pedido:


UPDATE T_PEDIDOS SET NOMBRE='JUAN',ESTADO=1 WHERE CODPEDIDO=125;

En este ejemplo cambiamos el estado de todos los pedidos:


UPDATE T_PEDIDOS SET ESTADO=1;

En este ejemplo ponemos a nulo el nombre de un pedido:


UPDATE T_PEDIDOS SET NOMBRE=NULL WHERE CODPEDIDO=125;

CONSULTA UTILES PARA OBTENER INFORMACION SOBRE ORACLE DATABASE [3]

- Vista que muestra el estado de la base de datos:


select * from v$instance

- Consulta que muestra si la base de datos est abierta:


select status from v$instance

- Vista que muestra los parmetros generales de Oracle:


select * from v$system_parameter

- Versin de Oracle:
select value from v$system_parameter where name = 'compatible'

- Ubicacin y nombre del fichero spfile:


select value from v$system_parameter where name = 'spfile'

- Ubicacin y nmero de ficheros de control:


select value from v$system_parameter where name = 'control_files'

- Nombre de la base de datos


select value from v$system_parameter where name = 'db_name'
- Vista que muestra las conexiones actuales a Oracle:
select osuser, username, machine, program from v$session order by osuser

- Diccionario de datos (incluye todas las vistas y tablas de la Base de Datos):


select * from dictionary

select table_name from dictionary

- Muestra los datos de una tabla especificada (en este caso todas las tablas que lleven la
cadena "EMPLO"):
select * from ALL_ALL_TABLES where upper(table_name) like '%EMPLO%'

- Muestra los disparadores (triggers) de la base de datos Oracle Database: select * from
ALL_TRIGGERS

- Tablas propiedad del usuario actual: select * from user_tables

- Obtener los roles existentes en Oracle Database: select * from DBA_ROLES

- Obtener los privilegios otorgados a un rol de Oracle: select privilege from dba_sys_privs
where grantee = 'NOMBRE_ROL'

- Obtener la IP del servidor de la base de datos Oracle Database: Select


utl_inaddr.get_host_address IP from dual

- Mostrar datos de auditora de la base de datos Oracle (inicio y desconexin de sesiones):


select username, action_name, priv_used, returncode from dba_audit_trail

REFERENCIAS

[1] "ORACLE - DDL", Ora.u440.com , 2017. [En lnea]. Disponible:


http://ora.u440.com/ddl/. [Consultado: 24 de octubre de 2017].

[2] "ORACLE - DML", Ora.u440.com , 2017. [En lnea]. Disponible:


http://ora.u440.com/dml/. [Consultado: 24 de octubre de 2017].

[3] "Algunas consultas SQL muy tiles para el administrador de Oracle (DBA) Proyecto
AjpdSoft", Ajpdsoft.com , 2017. [En lnea]. Disponible:
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=131. [Consultado: 24 de
octubre de 2017].

Вам также может понравиться