Professional Documents
Culture Documents
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
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)