Professional Documents
Culture Documents
SELECT [ ALL o DISTINCT] EXP1[,EXP2,EXP3,….] SELECT [ ALL o DISTINCT] EXP1[,EXP2,EXP3,….] SELECT [ ALL o DISTINCT] EXP1[,EXP2,EXP3,….]
FROM T1[,T2,T3,…] FROM T1[,T2,T3,…] FROM T1[,T2,T3,…]
[WHERE Condición] [WHERE Condición] [WHERE Condición]
[ORDER BY [E1[ASC o DESC], E2[ASC o DESC],….]; Operador (SELECT [ ALL o DISTINCT] EXP1[,EXP2,EXP3,….] [GROUP BY [A1,A2,….]] Agrupa datos iguales. Los campos por los que se agrupa
FROM T1[,T2,T3,…] deben figurar en la select
Condicione WHERE [WHERE Condición] [HAVING Condición] Se aplica a los distintos grupos que vamos creando
- = , >, <, >=,<=,<> o ¡= [ORDER BY [E1[ASC o DESC], E2[ASC o [ORDER BY [E1[ASC o DESC], E2[ASC o DESC],….];
- AND y OR DESC],….])
- Expresión [NOT] IN (V1,V2,V3,….)
- [NOT] BETWEEN ___ AND ___ [ORDER BY [E1[ASC o DESC], E2[ASC o DESC],….];
- [NOT] LIKE ‘%___’ o ‘-xxxx—‘
INSERCION TUPLAS
INSERT INTO NomTabla [(A1,A2,A3,…)] VALUES (V1,V2,V3,…); INSERT INTO NomTabla [(A1,A2,A3,…)]
SELECT [ ALL o DISTINCT] EXP1[,EXP2,EXP3,….]
FROM T1[,T2,T3,…]
[WHERE Condición]
[ORDER BY [E1[ASC o DESC], E2[ASC o DESC],….];
BORRAR TABLAS
DROP TABLE NomTabla [CASCADE CONSTRAINTS; TRUNCATE TABLE NomTabla [DROP STORAGE o REUSE STORAGE];
MODIFICAR TABLAS
AÑADIR COLUMNAS ELIMINAR COLUMNAS MODIFICAR COLUMNAS
ALTER TABLE NomTabla ADD (A1 tipo [CONSTRAINT NomConstraint] Tipo, ALTER TABLE NomTabla DROP(A1,A2); ALTER TABLE NomTabla MODIFY(A1 TIPO DATO NUEVO + CONSTRAINTS);
A2 tipo [CONSTRAINT NomConstraint] Tipo,
MODIFICAR CONSTRAINTS
ALTER TABLE NomTabla MODIFY CONSTRAINT NOM_CONSTRAINT TIPO;
USUARIOS
CREAR USUARIOS MODIFICAR USUARIOS BORRAR USUARIOS
CREATE USER NomUsuario IDENTIFIED BY password ALTER USER NomUsuario Parámetro a modificar; DROP USER NomUsuario CASCADE;
[DEFAULT TABLESPACE NomTableSpace]
[TEMPORARY TABLESPACE NomTableSpace]
[QUOTA n[K/M/UNLIMITED] ON NombreTableSpace]
…….
[PROFILE NomProfile];
SOBRE SISTEMA
DAR DERECHOS QUITAR DERECHOS
GRANT [O1,O2,…] TO [Usuarios, ROL, PUBLIC] [WITH ADMIN OPTION]; REVOKE[O1,O2,…] FROM [Usuarios, ROL, PUBLIC];
ROLES
CREAR ROL INSERTAR USUARIO A UN ROL
CREATE ROLE NomRol; GRANT NomRol TO NomUsuario;
SINÓNIMOS
CREAR SINÓNIMO BORRAR SINÓNIMO
CREATE [PUBLIC] SYNONYM NomSinonimo FOR Usuario.NomTabla; DROP [PUBLIC] SYNONYM NomSinonimo;
COMENTARIOS
CREAR COMENTARIO ELIMINAR COMENTARIO
COMMENT ON TABLE [Vista o Tabla] IS ‘Comentario a realizar’; COMMENT ON TABLE [Vista o Tabla] IS ‘’;
PROFILES
CREAR PROFILE BORRAR PROFILE MODIFICAR PROFILE
CREATE PROFILE Nombre del Profile LIMIT DROP PROFILE NomProfile [CASCADE]; ALTER PROFILE NomProfile Parámetro a modificar;
SESSIONS_PER_USER n
CONNECT_TIME n
IDLE_TIME n
CPU_PER_SESSION n
LOCIGAL_ READS_PER_SESION
LOGICAL_READS_PER_CALL
PASSWORD_LIFE_TIME n
FAILED_LOGIN_ATTEMPTS n
STORAGES
[STORAGE (INITIAL n K, NEXT n K, PCTINCREASE 50, MINEXTENST n)]
SECUENCIAS
CREAR SECUENCIA BORRAR SECUENCIA USO SECUENCIA
CREATE SEQUENCE NomSecuencia DROP SEQUENCE NomSecuencia; Para ver porque posición va NomSecuencia.CURRVAL;
[START WITH n] Para incrementar la secuencia NomSecuencia.NEXTVAL;
[INCREMENT BY n]
[MAXVALUE n]
[MINVALUE n]
[CYCLE/NO CYCLE] .
[CACHE 2];
INDICES
CREAR ÍNDICE BORRAR ÍNDICE
CREATE [UNIQUE] INDEX NomIndice ON NomTabla(A1[ASC o DESC][,A2[[ASC o DESC]]) DROP INDEX NomIndice;
[STORAGE (INITIALS 30K, NEXT 30K, PCTINCREASE 50, MINEXTENT 2)]
[TABLESPACE NomTableSpace];
CLÚSTERS
CREAR CLÚSTER CREAR ÍNDICE
CREATE CLUSTER NomCluster( CREATE TABLE NomTabla( CREATE INDEX NomIndice ON CLUSTER NomCluster;
COL TIPO [,COL2 TIPO]) A1 tipo [CONSTRAINT NomConstraint] Tipo
[SIZE n] [CONSTRAINT NomConstraint] Tipo,
[STORAGE (…)] A2 tipo [CONSTRAINT NomConstraint] Tipo,
[TABLESPACE NomTableSpace]; A3 tipo ……
)
[CLUSTER NomCluster(A1)];
BORRAR CLÚSTER
DROP CLUSTER NomCluster [INCLUDING TABLES][CASCADE CONSTRAINT];
DATABASE LINK
CREAR DATABASE LINK CONSULTA A DATABASE LINK
CREATE [PUBLIC] DATABSE LINK NomDataBaseLink SELECT * FROM NomTabla@NomDataBaseLink;
CONNECT TO NomUsuario
IDENTIFIED BY password
USING ‘BBDDUsuario’;
TABLSESPACE
CREAR TABLESPACE MODIFICAR TABLESPACE
CREATE TABLESPACE NombreTableSpace CREATE TABLESPACE NombreTableSpace
DATAFILE ‘path donde se crearan los ficheros del tablespace’ ADD DATAFILE ‘path donde se crearan los ficheros del tablespace’
SIZE n [REUSE] SIZE n [REUSE]
[AUTOEXTEND OFF [AUTOEXTEND OFF
ON NEXT n [MAXSIZE UNLIMITED ] ] ON NEXT n [MAXSIZE UNLIMITED ]
n ]
n
[DEFAULT STORAGE (INITIALS 30K, NEXT 30K, PCTINCREASE 50, MINEXTENT 2)]
[OFFLINE o ONLINE]; [OFFLINE o ONLINE];
BORRAR TABLESPACE
DROP TABLESPACE NomTableSpace INCLUDING CONTENTS;
BLOQUES ANÓNIMOS BLOQUES NOMINADOS
[DECLARE] <<Nombre>>
[DECLARE]
Declaraciones
Declaraciones
BEGIN
BEGIN
Instrucciones
Instrucciones
[EXCEPTIONS]
[EXCEPTIONS]
Tratamientos de excepciones
Tratamientos de excepciones
END;
END Nombre;
PROCEDIMIENTOS FUNCIONES
CREATE or REPLACE PROCEDURE Nombre[(Parametro1 Tipo [, Prametro2 Tipo, ...])] CREATE or REPLACE FUNCTION Nombre[(Parámetro [IN/OUT/IN OUT] TIPO [ DEFAULT ],…)
Declaraciones; Declaraciones;
[BEGIN] [BEGIN]
Sentencias; Sentencias;
END Nombre;
EXCEPCIONES
EXCEPCIONES PREDEFINIDAS EXCEPCIONES DE USUARIO
NO_DATA_FOUND Salta cuando no hay datos o no hay índice en el vector NombreExcepcion EXCEPTION;
PRAGMA RAISE_APLICATION_ERROR
PRAGMA EXCEPTION_INIT(NombreExcepcionusuario, Nº Error Oracle); RAISE_APLICATION_ERROR(-20.000 a -20.999 , ‘Texto error’);
CURSORES
CREAR CURSOR APERTURA, FECHEO Y CIERRE DE UN CURSOR
CURSOR NombreCursor IS SELECT A1,A2 FROM TABLAS [WHERE CONDICIÓN]; OPEN NombreCursor;
CURSOR NombreCursor IS SELECT _________ FOR UPDATE; FETCH NombreCursor INTO ListaVariables;
CURSORES DINÁMICOS
CREAR CURSOR DINÁMICO APERTURA, FECHEO Y CIERRE DE UN CURSOR
TYPE Tipo_Cursor IS REF CURSOR; OPEN NombreCursor FOR SELECT ……… WHERE v_cod=v_acoplamiento;
CLOSE NombreCursor;
REGISTROS
CREAR REGISTRO REGISTROS A MEDIDA
REG_NOMBRE Tabla o Cursor%ROWTYPE; TYPE NombreReg IS RECORD(
Variable 2 Tipo,
Variable 3 Tipo);
Reg NombreReg;
VECTORES
VECTORES INDEXADOS MÉTODOS DE LOS VECTORES
TYPE NombreVectorTipo IS TABLE OF Tipo_de_datos INDEX BY BINARY_INTEGER; Vector.COUNT cuenta elementos del vector
NombreVector NombreVectorTipo; Vector.EXISTS(índice) True o False si existe el vector para ese índice
NombreVectorTipo IS TABLE OF Tipo_de_datos INDEX BY Tabla.Atributo%TYPE; Vector.DELETE(n) elimina elemento del índice n del vector
DISPARADORES (TRIGGERS)
CREAR TRIGGER ACTIVAR O DESACTIVAR UN TRIGGER
CREATE OR REPLACE TRIGGER NombreTrigger AFTER/BEFORE INSERT/DELETE/UPDATE[OF C1,C2] ALTER TRIGGER NombreTrigger ENABLE/DISABLE;
[OR INSERT/DELETE/UPDATE[OF C1,C2] OR….] ON TABLA/VISTA
ACTIVAR O DESACTIVAR LOS TRIGGERS DE UNA TABLA
[FOR EACH STATEMENT] se ejecuta una vez
ALTER TABLE Tabla ENABLE/DISABLE ALL TRIGGERS;
[FOR EACH ROW] se ejecuta tantas veces como tuplas se vean afectadas
HACER FALLAR UN TRIGGER
[WHEN(condición)] filtra tuplas RAISE_APPLICATION_ERROR;
DECLARE
BEGIN
[EXCEPTION]
END NombreTrigger;
TRIGGER MULTIEVENTO TABLAS MUTANTES
IF DELETING THEN Cuando usamos FOR EACH no podemos consultar la propia tabla del trigger. La
solución serían 2 triggers:
INSERTING
- Uno BEFORE STATEMENT En este trigger preparamos los
UPDATING datos que nos interesan en una tabla auxiliar.
JOBS
CREAR JOB FUNCIONES DE LOS JOBS
DBMS_JOB.SUBMIT ( job, what, [next date], [interval]); DBMS_JOB.REMOVE(n) elimina job
COMMIT WORK; con esto enviamos el trabajo. DBMS_JOB.BROKEN(n,[TRUE o FALSE]) activa(FALSE) o desactiva(TRUE) el job
what procedure que queremos que se ejecute, se escrib en varchar2, es decir con DBMS_JOB.WHAT(n,’nuevo’) cambia el what
[next date] in date, indica cuando va a ejecutarse la primera vez. DBMS_JOB.NEXT_DATE(n,’Fecha’) cambia fecha del next date
[interval] in varchar2, cadencia de ejecución, es una fecha. Permite una función. DBMS_JOB.CHANGE(n,’what’,nextdate,’interval’) cambia todo de golpe
TUBERÍAS (PIPES)
PUBLICAS PRIVADAS
DBMS_PIPE.PACK_MESSAGE(Mensaje); DBMS_PIPE.CREATE_PIPE(‘Nombre tubería);
DBMS_PIPE.SEND_MESSAGE(‘Nombre tubería’, tiempo de espera, [tamaño tubería]);
DBMS_PIPE.RECEIVE_MESSAGE(‘Nombre tubería’,tiempo espera);
DBMS_PIPE.UNPACK_MESSAGE(‘variable salida’);
DBMS_PIPE.NEXT_ITEM_TYPE sabemos si hay algo que desempaquetar dando cero si no tiene nada
FICHEROS
ABROR FICHERO ESCRIBIR FICHERO
Handdle UTL_FILE.FILE_TYPE; UTL_FILE.PUT_LINE(Handdle,’cadena a escribir’);
UTL_FILE.WRITE_ERROR
UTL_FILE.INVALID_ERROR
UTL_FILE.INVALID_OPERATION
OBJETOS
CREAR CABECERA OBJETO CREAR CUERPO OBJETO
CREATE OR REPLACE TYPE NombreObjeto AS OBJECT( CREATE OR REPLACE TYPE BODY NombreObjeto AS/I
END;
FORMA DE USO DE UN OBJETO BORRAR OBJETOS CREAR UNA TABLA CON LOS ATRIBUTOS DE UN OBJETO
CREATE OR REPLACE PROCEDURE nombreProcedure (Parámetros) AS DROP TYPE NombreObjeto [FORCE]; CREATE TABLE NomTabla OF NombreObjeto;
SQL DINÁMICO
DDL DML SIN SELECT
n := DBMS_SQL.OPEN_CURSOR; n := DBMS_SQL.OPEN_CURSOR;
tuplas:=DBMS_SQL.EXECUTE(n);.
DBMS_SQL.CLOSE_CURSOR(n);
DBMS_SQL.DEFINE_COLUMN(n,1,variable1,tamaño); SELECT
tuplas:=DBMS_SQL.EXECUTE(n);
DBMS_SQL.COLUMN_VALUE(n,1,variable1);
DBMS_SQL.COLUMN_VALUE(n,2,variable2);
DBMS_SQL.CLOSE_CURSOR(n);
PAQUETES
CREAR CABECERA PAQUETE CREAR CUERPO PAQUETE
CREATE OR REPLACE PACKAGE NombrePaquete AS CREATE OR REPLACE PACKAGE BODY NombrePaquete AS
Declaración de Tipos, Variables, Constantes, Excepciones, Cursores Declaración de variables y desarrollo de funciones y procedimientos estos
y Expecificaciones de funciones y procedimientos pueden ser públicos o privados.
END NombrePaquete;
CURSOR NombreCursor RETURN TipoRetorno; CURSOR NombreCursor RETURN TipoRetorno IS SELECT ………….;
DBMS_LOB.LOADFROMFILE(BLOB,BFILE,DBMS_LOB.GETLENGTH(BFILE));
DBMS_LOB.FILECLOSE(BFILE);
UTL_BINFILE
CARGAR ARCHIVO GUARDAR ARCHIVO
UTL_BINFILE.LOAD_BLOB_FROM_FILE(‘FileName’); UTL_BINFILE.SAVE_BLOB_TO_FILE(BLOB,’FileName’);
DIRECTORY
CREAR DIRETORIO DERECHOS QUE SE DAN EN VEZ DE CREAR DIRECOTORIOS
CREATE DIRECTORY NombreAlias AS ‘Ruta’; GRANT READ,WRITE,DELETE ON DIRECTORY NombreAlias TO usuario;
Hay que tener el derecho de CREATE ANY DIRECTORY
SENTENCIAS IF
Sentencias; Sentencias;
Sentencias;
END IF;
IF condición1 THEN
Sentencias;
IF condición2 THEN
Sentencias;
ELSE
Sentencias;
END IF;
BUCLES
LOOP LOOP
Sentencias; Sentencias;
END LOOP;
Sentencias; Sentencias;
Sentencias; Sentencias;
Sentencias;
END LOOP;
TABLAS DE VISTAS
USER_CONSTRAINTS -> vemos las constraints de nuestras tablas USER_CLUSTERS -> vemos los clusters del usuario
USER_TAB_PRIVS -> vemos privilegios de las tablas ALL_CLUSTERS -> vemos todos los clusters de todos los usuarios
SESSION_PRIVS -> vemos privilegios de la sesión DBA_CLUSTERS -> vemos todos los clusters de la BBDD
DBA_USER_PRIVS -> vemos mas privilegios USER_ERRORS -> vemos errores
USER_TS_QUOTaS -> vemos cuotas de los tablespaces USER_SOURCE -> vemos código
ROLE_ROLE_PRIVS -> vemos los roles a los que pertenecemos OPEN_CURSORS -> cursores abiertos en la BBDD
DBA_PROFILES -> vemos perfiles ALL_DIRECTORIES -> información de todos los directorios
USER_OBJECTS -> vemos perfiles DBA_DIRECTORIES -> información de los directorios
USER_SEQUENCE -> vemos las secuencias del usuario USER_TABS_COLUMNS -> información delos atributos de las tablas
USER_INDEXES -> vemos los índices creados
TIPOS DE DATOS EN SQL
TIPO CARÁCTER TIPO NUMÉRICO
CHAR (num) Máximo 2k. Guarda cadena de caracteres fija. NUMBER Almacena en coma flotante.
VARCHAR2 (num [Tam. Máx. 4K]) Guarda cadena de caracteres variables NUMBER (num) Almacena en coma fija. Num máximo hasta 38.
LONG (Esta en desuso) Permite almacenar hasta 2GB en forma de Long var. NUMBER (num,n) Almacena en coma fija. Máximo 38.
m indica el nº de decimales.
num nº total del numero(entero+decimales).
Long
Number(n,m)
Date