You are on page 1of 6

Comandos Oracle Segunda Parte

23 10 2008

En esta segunda entrega de Comandos SQL de Oracle vamos a aprender a crear tablas, modificarlas,
aadir restricciones (constraints) y comentarios y modificar sus columnas y tipos. Adems
aprenderemos a crear secuencias las cuales nos ayudaran a insertar valores de forma automtica,
crearemos y modificaremos claves primerias (PK) y claves forneas (FK) para poder enlazar
valores de diferentes tablas.
Para acceder a la primera parte haz clic en este enlace
Para acceder a la tercera parte haz clic en este enlace
Insertar registros en una tabla: Caracteres y fechas entre comillas simples
{INSERT INTO tabla [] VALUES []}
INSERT INTO tab (dnum, depnam, hiredate, usr_actual)
VALUES (50, DEVELOPMENT, SYSDATE, USERID);
Insertar registros nulos:
INSERT INTO dept VALUES (70, FINANCE, NULL);
Creacin de Scripts: Los scripts nos permiten crear sencillas aplicaciones para aadir datos de
forma sencilla a nuestra base de datos.
{ACCEPT variable PROMPT texto a mostrar INSERT INTO tabla [] VALUES[&variable]}
ACCEPT id PROMPT Introduce el ID de usuario:
ACCEPT last_name prompt Introduce apellido del usuario:
ACCEPT first_name prompt Introduce nombre del usuario:
INSERT INTO my_employee (id, LAST_NAME, FIRST_NAME, USERID)
VALUES (&id, &last_name, &first_name, substr(&first_name,1,1) ||
substr($last_name,1,7));
Insertar registros de otra tabla:
{INSERT INTO tabla [] select()}
INSERT INTO managers(id, name, salary, hiredate)
SELECT empno, ename, sal, hiredate FROM emp WHERE job = MANAGER
Modificacin de registros:
{UPDATE tabla SET column = value where}
UPDATE emp SET deptno = 20 WHERE empno = 7782;
UPDATE emp SET (job,deptno) = (SELECT job, deptno from)
Eliminar registros:
{DELETE FROM tabla WHERE condicin}
DELETE FROM department WHERE dname = DEVELOPMENT
DELETE FROM employee WHERE deptno = (SELECT deptno from)
Control transacciones:
COMMIT: Confirmar cambios realizados en la base de datos

ROLLBACK: Deshacer todos los cambios realizados en la base de datos


SAVEPOINT nombre: Crear punto de guardado
ROLLBACK TO nombre: Volver a punto de guardado
Creacin de tablas:
{CREATE TABLE tabla (columna tipo(longitud), columna..)}
Tipos: NUMBER, VARCHAR2, DATE, NUMBER(dcimal,digit)
CREATE TABLE dept (deptno NUMBER(2) NOT NULL, name VARCHAR2(50));
Crear tabla a partir de otra (por subconsulta):
{CREATE TABLE tabla AS SELECT}
CREATE TABLE departamento AS SELECT empno, ename Nombre Departamento, sal FROM
dept;
Modificar tabla:
-Aadir columnas:
{ALTER TABLE tabla ADD (columna1 tipo(), columna2 tipo());}
ALTER TABLE dept add (job VARCHAR2(9));
-Modificar columnas existentes:
{ALTER TABLE tabla MODIFY (col1 tipo() [DEFAULT expr]);}
ALTER TABLE empl modify (name VARCHAR2(50) DEFAULT Nom);
Eliminar columna:
{ALTER TABLE tabla DROP COLUMN columna;}
ALTER TABLE dept DROP COLUMN dname;
Notificar columna como no usada:
{ALTER TABLE tabla SET UNUSED (columna)}
ALTER TABLE dept SET UNUSED (loc);
Eliminar columnas marcadas como no usadas:
{ALTER TABLE tabla DROP UNUSED COLUMNS;}
ALTER TABLE dept DROP UNUSED COLUMNS;
Eliminar tabla:
{DROP TABLE table;}
DROP TABLE dept;
Modificar nombre de objeto (tabla, vista):
{RENAME tabla/vista TO tabla/vista}
RENAME dept TO departmento;
Eliminar todos los registros (TRUNCAR):
{TRUNCATE TABLE tabla;}
TRUNCATE TABLE dept;
Aadir comentarios a una tabla:

{COMMENT ON TABLE/COLUMN table/columna IS comentario;}


COMMENT ON TABLE emp IS Employee Infromation
COMMENT ON COLUMN TABLE.column IS comentario
COMMENT ON COLUMN emp.ename IS Nombre trabajador
Definicin de constraints (restricciones):
{CREATE TABLE tabla
(columna tipo() [default expr] CONSTRAINT [nombre] tipo (columna));}
-Nivel de tabla:
CREATE TABLE emp(
(empno NUMBER(4),
ename VARCAHR2(10),
deptno NUMBER(2),
CONSTRAINT emp_empno_pk
PRIMARY KEY (empono));
- Nivel de columna:
CREATE TABLE emp(
(empno NUMBER(4) [CONSTRAINT emp_empno_nn] NOT NULL,
ename VARCAHR2(10),
deptno NUMBER(2) NOT NULL);
Constraints (tipos y situacin):
NOT NULL (Nivel de columna)
CREATE TABLE emp(
(empno NUMBER(4) [CONSTRAINT emp_empno_nn] NOT NULL,
ename VARCAHR2(10),
deptno NUMBER(2) NOT NULL);
UNIQUE (Columna o tabla)
CREATE TABLE dept
(dname VARCHAR(14),

CONSTRAINT dept_dname_uk UNIQUE(dname));


PRIMARY KEY (Columna o tabla) -> PK lleva implcito UNIQUE
CREATE TABLE dept
(deptno NUMBER(2),

CONSTRAINT dept_deptno_pk PRIMERY KEY (deptno));


FOREIGN KEY (Columna o tabla)
CREATE TABLE emp

(ename VARCAHR2(10) NOT NULL,


deptno NUMBER(7,2) NOT NULL,

CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)


REFERENCES dept (deptno));
CHECK -Condicion- (Columna o tabla)
CREATE TABLE emp
(deptno NUMBER(2),
CONSTRAINT emp_deptno_ck CHECK (deptno between 10 and 99));
Aadir CONSTRAINT (restriccin) a tabla existente:
{ALTER TABLE tabla add/modify [CONSTRAINT CONSTRAINT] type (col);}
Podemos aadir restriccin NOT NULL con MODIFY
Podemos aadir o borrar CONSTRAINTs pero NO modificar. Para modificar
eliminar y volver a crear
ALTER TABLE emp add CONSTRAINT emp_mgr_fk
FOREING KEY(mgr) REFERENCES emp(empno);
Eliminacin de restricciones (CONSTRAINTs):
{ALTER TABLE tabla DROP CONSTRAINT CONSTRAINT;}
ALTER TABLE emp DROP CONSTRAINT emp_mgr_fk;
Borrar CONSTRAINT PK y (FK de tabla dependiente de otra usando-CASCADE-)
{ALTER TABLE tabla DROP primary key CASCADE;}
ALTER TABLE dept DROP primary key cascade;
Eliminacin de restricciones en cascada: Es usado para eliminar PK u otras con dependencias
{ALTER TABLE tabla DROP (constraint) cascade CONSTRAINT;}
ALTER TABLE dept DROP (deptno) cascade CONSTRAINTS;
Desactivar constraint:
{ALTER TABLE tabla DISABLE CONSTRAINT constraint [CASCADE];}
ALTER TABLE emp disable CONSTRAINT emp_empno_pk CASCADE;
Activar constraints:
{ALTER TABLE tabla ENABLE CONSTRAINT CONSTRAINT;}
ALTER TABLE emp ENABLE CONSTRAINT emp_empno_pk;
Creacin de vistas:
{CREATE VIEW vista AS SELECT}
[with check option CONSTRAINT CONSTRAINT]
[with read only]
CREATE view empvu10 as select empno n empleado,
job from emp where deptno=10;

Modificacin de vistas:
{CREATE OR REPLACE VIEW vista [(colname, colname, colname)] as select}
Nota: Los alias de columna se puede poner en SELECT o en CREATE
CREATE or replace view empvu10
(employee_number, employee_name, job_title)
as select empno, ename, job from emp where deptno = 10;
Creacin vistas complejas con funciones de grupo para ver 2 tablas:
{CREATE view dept_sum_vu (name, minsal, maxsal, avgsal)
as select d.dname, MIN(e.sal), MAX(e.sal), AVG(e.sal)
from emp e, dept d where e.deptno = d.deptno group by d.dname}
With check option:
CREATE or replace view vista as select
with check option CONSTRAINT CONSTRAINT
With read only:
CREATE or replace view vista as select
with read only;
Nota: En este caso no podemos quitar, insertar o modificar la vista
Eliminacin de vistas:
{DROP view vista;}
Creacin de vistas inline:
{SELECT FROM tabla a(SELECT) b where}
SELECT tablaA.ename, tablaA.sal, tablaA.deptno, tablaB.maxsal
from emp tablaA, (select deptno, max(sal) from emp group by deptno) tablaB
where tablaA.deptno = tablaB.deptno and tablaA.sal < tablaB.maxsal
Obtener los N primeros/ltimos datos de una tabla (Top-N):
{SELECT ROWNUM [as alias] FROM (SELECT FROM tabla WHERE ORDER BY Top-NCol)
where ROWNUM <= N}
SELECT ROWNUM as RANKING, ename, sal
from (select ename, sal from emp order by sal desc)
where rownum <=3;
Creacin de secuencias:
CREATE/ALTER sequence secuencia
increment by n
start with n (no en ALTER)
maxvalue n
minvalue n
cycle (continua generando despues de max)

cache n (memoria oracle)


Insertar valores de una secuencia en una tabla:
INSERT INTO tabla (valorActual, valorSiguiente)
VALUES (secuencia.currval, secuencia.nextval)
Eliminar secuencias:
{DROP sequence secuencia;}
Crear ndices:
{CREATE index indice on tabla (col, col+10, upper(ename))}
Eliminar ndices:
{DROP index ndice}
Crear sinonimos:
{CREATE [public] SYNONYM sinonimo FOR objecto}
CREATE public synonym dept for sis228.dept
Eliminar sinnimos:
{DROP SYNONYM sinnimo}
http://blogdeaitor.wordpress.com/2008/10/23/comandos-oracle-%E2%80%93-segunda-parte%E2%80%93/

You might also like