P. 1
Oracle

Oracle

|Views: 498|Likes:

More info:

Published by: Elvis Raul Mendoza Atero on Jun 21, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

06/21/2011

pdf

text

original

(En algunos SQL las ordenes acaban en ; .

En otros no)

SQL (ORACLE)

A) TIPOS DE DATOS
A.1) ESTANDAR
TIPO DE DATO CHAR(n) CARACTERISTICAS Cadenas de longitud fija. Tam máx: 255 caracteres Si se quiere meter una cadena más grande que el campo ERROR VARCHAR2(n) Cadenas de longitud variable. Tam máx: 2000 caracteres. LONG Son los campos memo. Tam máx: 2 Gb (+ de 2000 millones de caracteres). Tienen muchas restricciones (no se pueden meter dentro de condiciones en la SELECT,…) NUMBER Cualquier tipo de número. Formato: NUMBER [(<precisión>[, <escala>])] <precisión>: nº de cifras que tiene el nº, incluyendo los decimales. (valores permitidos son entre 1 y 38). Por defecto es el máximo (38). Si se incluye este parámetro, el nº es un decimal de coma fija. Si no se incluye, el nº es de coma flotante. <escala>: Nº de decimales. Valores posibles (de -84 a 127)(si no se pone escala, nº decimales = 0) DATE Fechas. ISNULL Campos con valores nulos a) Los datos de tipo CHAR, VARCHAR2 y LONG van entre comillas simples (' '). Para meter una comilla simple hay que ponerla dos veces seguidas. b) Para meter fechas se usa este formato {d 'año-mes-dia'} . Ejemplo: UPDATE DATOS SET FECHA = {d '1997-12-31'} WHERE FECHA IS NULL; c) En campos NUMBER se usa el punto para separar los decimales (da igual como esté la configuación regional de Windows). Forma de guardar nos en campos numéricos Valor Opciones elegidas Cómo es almacenado 7456123,89 NUMBER 7456123,89 7456123,89 NUMBER(9) 74561234 7456123,89 NUMBER(9,2) 7456123,89 7456123,89 NUMBER(9,1) 7456123,9 (redondea) 7456123,89 NUMBER(6) ERROR. EXCESO DE PRECISION1 7456123,89 NUMBER(15,1) 7456123,8 (no redondea) 7456123,89 NUMBER(7,-2) 74561002 7456123,89 NUMBER(7,2) ERROR. EXCESO DE PRECISION 7456123,89 NUMBER(7,-7) ERROR. EXCESO DE PRECISION 7456123,89 NUMBER(8,-7) 10000000

A.2) NO ESTANDAR
Tipos de datos especiales del sistema (sólo para ORACLE): ROWID: Almacena la dirección física de cada tupla de la base de datos Formado por: [identificador de bloque].[identificador de tupla].[identificador de fichero] ROWNUM: Para cada tupla por consulta devuelve un nº indicando el orden en que ORACLE selecciona la tupla desde una tabla o resultado de un JOIN de varias tablas. SECUENCIAS: Es un objeto de la base de datos desde el que un usuario puede generar enteros únicos. Formato para crear secuencia: CREATE SEQUENCE <nombre secuencia> [INCREMENT BY <entero>] [START WITH <entero>] [MAXVALUE <entero>] [MINVALUE <entero>] [CYCLE | NOCYCLE] Formato para borrar secuencia: DROP SEQUENCE <nombre secuencia> Sacar valor actual de la secuencia: <nombre secuencia>.CURRVAL Sacar siguiente valor de la secuencia: <nombre secuencia>.NEXTVAL TABLA DUAL: Tabla creada automáticamente por ORACLE en el diccionario de datos. Es accesible por todos los usuarios. Tiene un solo campo y un solo registro. Es una tabla comodín. Ejemplos: SELECT ADD_MONTHS(SYSDATE,2) "fecha de hoy + 2 meses" FROM DUAL; TABLA TAB: Tabla creada automáticamente. Tiene los nombres de las tablas TABLA COL: Tabla creada automáticamente. Tiene los nombres de los campos de todas las tablas.

1 2

Si el (nº de dígitos de la parte entera) > (precisión - escala), se produce un error de exceso de precisión. Si escala es < 0 , se redondean las ultimas cifras de la parte entera

B) DEFINICIONES

• ALIAS o SINONIMOS (SYNONYM): Sirve para no tener que usar nombres largos a la hora de usar campos de tablas hechas por otros usuarios • INDICES (INDEX): Los índices son estructuras que proporcionan un acceso rápido a las filas de una tabla en base a los valores de una o más columnas. Todos los datos están ordenados para tardar menos en buscarlos Son transparentes al usuario. La principal ventaja es que se tarda menos tiempo en buscar datos. El principal inconveniente es el tiempo perdido en actualizar índices cada vez que se añaden/editan/eliminan registros. • TRANSACCIONES: Conjunto de instrucciones de LMD ejecutadas unas tras otras. Si las transacciones no son completas (se produce cualquier error) se debe dar marcha atrás. (ROLLBACK) • VISTAS (VIEW): Las vistas son tablas virtuales formadas a través de una consulta a partir de otras tablas y/o vistas existentes en la base de datos. Sirve para crear esquemas externos. • SUBCONSULTAS: Permiten el encadenamiento de varias consultas dentro de la misma SELECT. Hay varios tipos:  Subconsulta mediante comparadores: Se usan los operadores >, <, <> si el valor que devuelve la subconsulta es único. Si no es único, se debe usar [NOT] IN  Subconsultas con ALL (Operador / del A.R ): La condición debe cumplirse para todos los valores de la subconsulta.  Subconsultas con ANY: La condición debe cumplirse para algún valor de la subconsulta.  Subconsultas anidadas correlacionadas: Una subconsulta anidada es correlacionada si se evalúa una vez por cada tupla procesada en la sentencia padre. Selecciona el registro de la consulta principal si la subconsulta devuelve algún valor. Formato: SELECT <campos> FROM <tabla1> <alias1> WHERE <expr> [NOT] EXISTS (SELECT <campos> FROM <tabla2> <alias2> WHERE <alias2>.<campo> <operador> <alias1>.<campo>)

<clave foránea>. • Es obligatorio cuando sacamos una vista que combina diferentes tablas Opciones. Formado por: <nombre campo> <tipo dato> [WITH DEFAULT "<valor por defecto>"][NOT NULL]. Sirve para crear esquemas externos. Formato: COMMIT [WORK].A - COMMIT: Transacción realizada con éxito.  Primer campo REGION VARCHAR2(20) WITH DEFAULT "ESTE" NOT NULL. con esta opción se reemplaza el nombre. Ejemplo: COMMIT CREATE INDEX: Crea ficheros de índice.  Ultimo campo PRIMARY KEY (COD_OF). <clave principal>.C) COMANDOS DEL SQL DE ORACLE (ORDENADOS A .…). DESC ordena de > a <. • OR REPLACE: Si existiese una vista con ese mismo nombre. Indica que existe ya una vista con el mismo nombre y que sea sustituida por otra. <clave principal>: PRIMARY KEY <nombre columna> <clave foránea>: FOREIGN KEY <nombre campo> REFERENCES TO <nombre tabla> ON DELETE [RESTRICT | CASCADE | SET NULL] <campos que no pueden tener valores duplicados>: UNIQUE <nombre campo> • La clave principal debe ser NOT NULL • La clave foránea no debe ser NOT NULL • La clave debe existir • Si no se indica tipo de borrado. ADD se pone al añadir o editar campos. Las vistas son tablas virtuales formadas a través de una consulta a partir de otras tablas y/o vistas existentes en la base de datos. Si se ponen se deben poner todos o ninguno (sólo el nombre del campo • Es obligatorio cuando se devuelve un valor calculado. es decir cuando la columna ha sido calculada dentro de la vista. No se pueden destruir campos con esta orden. Formato 1: CREATE TABLE <nombre3> (<definición de columnas>).C - . Los nombres no deben producir conflictos (por ej: coincidir con una palabra clave) 3 . <campos que no pueden tener valores duplicados>)  crea una tabla nueva Formato 2: CREATE TABLE <nueva tabla> AS <una SELECT>  crea una copia de una tabla <definición de campos>: Van entre ( ) y separados por comas. pone/quita índices. En ORACLE se pueden poner nombres de 30 caracteres máximo. DIR INTEGER. Formato: ALTER TABLE <nombre tabla> [ADD (<nombre campo y características>)] [DROP PRIMARY KEY][DROP FOREIGN KEY][ <definir clave primaria>][<definir clave foránea>] Ejemplos: ALTER TABLE prueba ADD (precio NUMBER(6)) ALTER TABLE prueba ADD (precio CHECK precio > 5) ALTER TABLE prueba FOREIGN KEY en_region (region) REFERENCES regiones ALTER TABLE prueba DROP FOREIGN KEY (region) ALTER TABLE referencia add primary key (clave_ext) ALTER TABLE prueba FOREIGN KEY ciudad REFERENCES regiones  ALTER TABLE prueba FOREIGN KEY ciudad (ciudad) REFERENCES regiones .  Clave principal FOREIGN KEY ESTA_EN (DIR)  Clave foránea REFERENCES DIRECCIONES  Otra tabla ON DELETE CASCADE)  Tipo de borrado para claves foráneas CREATE VIEW: Crea una vista. se elige RESTRICTED Ejemplo: CREATE TABLE oficinas (COD_OF INTEGER NOT NULL.Z) ALTER TABLE: Modifica estructura de la tabla (pone/quita campos. CIUDAD VARCHAR2(20) NOT NULL. En otros SGBD se pueden poner + o -. Formato: CREATE VIEW [OR REPLACE] [FORCE | NOFORCE] <nombre de vista> [(<nombre campos>)] AS <aquí va una SELECT> [WITH CHECK OPTION [CONSTRAIT <restricción>]] • Los nombres de columnas son opcionales. Ejemplo: CREATE INDEX OFI_IND ON oficinas (NOMB_OF) CREATE SYNONYM: Sirve para poner un nombre más corto a las tablas de otros usuarios Formato: CREATE SYNONYM <nombre> FOR <tabla>  Crea sinónimo Ejemplo: CREATE SYNONYM VENTAS FOR ADMI_PP. Formato: CREATE INDEX <nombre índice> ON <nombre tabla> (<campos que forman la clave>) [ASC | DESC] • ASC ordena de < a > .VENTAS CREATE TABLE: Crea tablas vacías.

. pero que aun así se quiere eliminar. Formato: DROP SYNONYM <nombre> Ejemplo: DROP SYNONYM ventas DROP TABLE: Elimina una tabla. • WITH CHECK OPTION: Valida las tuplas para saber si esas tuplas se pueden meter.I - .TO: Se dan privilegios de acceso a un usuario para las tablas seleccionadas.G - INSERT INTO…VALUES: Mete valores en una tabla. cliente) ON clientes TO rodolfo GRANT ALL TO oscar .• FORCE: Crea la vista aunque no existan los objetos. Ejemplo de vista horizontal (todos los campos): CREATE VIEW oficinas_este AS SELECT * FROM oficinas WHERE region = 'este' Ejemplo de vista vertical (se especifican campos): CREATE VIEW oficinas_este AS SELECT cod_ofi. nom_ofi FROM oficinas WHERE cod_ofi IN [1.2.ON.9] DELETE FROM: Elimina registros de una tabla. modificar. (Elimina registros en albaranes_prov_cab_hist si no existen registros en pedidos_prov_cab con el codigo indicado) delete from albaranes_prov_cab_hist where cod_albaran = 'dedede' and cod_proveedor = 'PERSONA4' AND (select count(*) from albaranes_prov_lin_hist where cod_albaran = 'dedede' and cod_proveedor = 'PERSONA4') = 0. Los coloca donde le parezca. • NOFORCE: Funciona al revés que FORCE. Ejemplo: DROP TABLE motos CASCADE CONSTRAINT DROP VIEW: Todas las referencias que pertenecen a la vista se deben redefinir o eliminar para evitar errores. DROP INDEX: Elimina el índice. Formato: DROP INDEX <nombre índice> Ejemplo: DROP INDEX ndx_moto DROP SYNONYM: Elimina el sinónimo. Formato 1: DELETE FROM <tabla> [WHERE <condición>] Formato 2: DELETE FROM <tabla> [WHERE <aquí va una SELECT>] • Si no se pone la condición se borran todos.8.. entonces la 1ª vista no funciona. Ejemplos: DELETE FROM juegos WHERE (cod < 10) DELETE FROM CI071 WHERE FLD4 IN (SELECT FLD4 FROM CI071 WHERE FLD4 NOT LIKE '-%').. Formato: DROP VIEW <nombre de vista> Ejemplo: DROP VIEW vista_01 . Formato 1 (un registro): INSERT INTO <nombre tabla> [(<Lista de campos>)] VALUES (<Lista de valores>). nom_ofi FROM oficinas Ejemplo de vista mixta (es horizontal y vertical a la vez) (se especifican campos): CREATE VIEW oficinas_este AS SELECT cod_ofi.D - GRANT. Si se tiene una vista definida sobre otra y desaparece la 2ª. Se pierden todos los datos de la tabla Formato: DROP TABLE <nombre tabla> [CASCADE CONSTRAINT] • CASCADE CONSTRAINT: Se borran todas las restricciones de integridad referencial que hacen referencia a la clave primaria o única de la tabla a borrar. Se le indica al sistema que se conocen las restricciones.. PERMISOS QUE SE PUEDEN USAR CON GRANT & REVOKE PERMISOS QUE HACE CADA UNO ALTER Añadir / eliminar campos y renombrar tablas ALL Todos los permisos DELETE Borrar registros INDEX Crear índices INSERT[(campos)] Insertar registros REFERENCES Crear referencias (claves externas)) SELECT [(campos)] Permite lectura de campos de tablas (Por defecto: Todos) UPDATE[(campos)] Permite modificar datos de campos de tablas (Por defecto: Todos) Ejemplo: GRANT UPDATE(empresa. Formato 2 (muchos registros): INSERT INTO TABLA <una SELECT> . Formato: GRANT <permisos> ON <objeto> TO [ PUBLIC | < usuarios>] [WITH GRANT OPTION] • WITH GRANT OPTION: Los usuarios seleccionados pueden dar privilegios a otros. Se usa en casos muy especiales.… • CONSTRAINT <restricción>: Pone restricciones.

SHARE ROW EXCLUSIVE No permite más bloqueos sobre la tabla. No guarda los cambios realizados. Formato: SAVEPOINT <nombre punto de referencia> Ejemplo: SAVEPOINT p1 SELECT…FROM: Selecciona los datos que interesan de una tabla o muchas. Formato: ROLLBACK [WORK] [TO <punto de referencia>]. Los demás usuarios pueden consultar o modificar otras filas. no se pone comillas. 'TOMAS'. • CASCADE CONSTRAINTS elimina todas las referencias Ejemplo: REVOKE ALL ON juegos FROM picnic ROLLBACK: Se ha producido un error en la transacción. CHAR o LONG) se debe poner entre comillas. El objetivo es garantizar que durante el tiempo que se trabaje con ella la tabla No es modificada por el usuario y Otros usuarios no puedan acceder a la tabla.[<tabla> | <vista>]] IN <modo bloqueo> MODE [NOWAIT] Opciones: • <modo bloqueo>: Operaciones permitidas mientras dura el bloqueo. 'BILBAO')  Inserta un registro INSERT INTO p11 SELECT * FROM p10 WHERE cod_prov = 'S1' LOCK TABLE: Se usa para bloquear una tabla o vista. • Si no se incluyen los campos. El usuario que realiza el bloqueo es el único que puede hacer operaciones sobre la tabla. Formato: RENAME <tabla1> TO <tabla2> Ejemplo: RENAME tmp1 TO tmp3 REVOKE…ON…FROM: Quita permisos. Ejemplos: LOCK TABLE motos IN SHARE MODE NOWAIT LOCK TABLE coches IN ROW SHARE MODE . da error. (lo hace desde ese punto) Ejemplo: ROLLBACK . Se parece a la orden SET FILTER TO del dBase Formato: SELECT [DISTINCT] <*| lista de campos> [expresiones4] [[AS] "<alias>"] > FROM <tablas> [[AS] <alias>] [WHERE <condición>] [GROUP BY <lista de campos> [HAVING < condición>]] [ORDER BY <lista de campos> [ASC | DESC] ] [INTO TEMP < nombre tabla temporal>] [{UNION [ALL] | INTERSECT | MINUS} <otra select>] 1) OPCIONES QUE PUEDEN PONERSE ENTRE SELECT Y FROM 4 . SHARE No deja que otros usuarios bloqueen la tabla de forma más restringida (Permite bloqueos de menor o igual nivel). 'ZX')  Inserta un registro INSERT INTO proveedores VALUES ('P1'. Si se usa la opción TO <punto de ref> no repite toda la transacción desde el principio. 'A'. pero si se ha definido antes al campo con la opción NOT NULL. Los bloqueos se pueden quitar con COMMIT & ROLLBACK Formato: LOCK TABLE [<esquema>. Permite que los usuarios vean la tabla. • En los campos carácter se puede meter el NULL. se refiere a todos los campos. ROW EXCLUSIVE Es como la anterior pero prohibe que otros usuarios bloqueen la tabla para uso compartido.L - RENAME: Cambia el nombre de una tabla. Los otros usuarios no pueden hacer nada. Permite que se vean los registros EXCLUSIVE (máximo) Nivel máximo de bloqueo. • Los puntos de referencia sirven para dividir una transacción grande en varias partes. • NOWAIT: No espera hasta que finalice el bloqueo (si no se pone esta opción y se intenta entrar una tabla bloqueada el SGBD se queda esperando hasta que termine el bloqueo) Tipo de bloqueo Efectos que tiene ese bloqueo en la base de datos ROW SHARE (mínimo) Nivel mínimo de bloqueo.• Si el campo es carácter (VARCHAR2. Formato: REVOKE <permisos> ON <tabla> FROM {PUBLIC | <usuarios>} [CASCADE CONSTRAINTS] • Los permisos son los mismos que los de GRANT. Para poder realizar esta operación basta con tener algún privilegio.S - Los campos y las tablas se ponen separados por comas . Los otros no pueden usar LOCK … EXCLUSIVE. MODELO) VALUES ('CITROEN'. Ejemplo: INSERT INTO coches (MARCA. Influye el orden en que se colocaron en la tabla.R - SAVEPOINT: Crea puntos de referencia. pero las actualizaciones sólo se pueden realizar sobre filas específicas. • Si el campo es numérico (NUMBER). Se usa para modificar algunas filas.

• <campo> IS [NOT] NULL: Se selecciona los campos que su contenido sea NULL. la condición se cumple cuando precio total coincida con una lista de valores. Ejemplos: SELECT tipo. Ejemplo: (La SELECT que está dentro de la condición selecciona el valor máximo del campo UNIDADES cuando NUMSTOCK es 9. ) dentro de una expresión.DIRECCION. INTERSECT (operador ∩ ): Da los registros que están a la vez en la 1ª y en la 2ª select MINUS (operador -): Registros que están en la 1ª select y no están en la 2ª Condiciones: 5 Para desactivar los comodines de LIKE y MATCHES. No hay registros repetidos. Ejemplo: SELECT A.MIN.) SELECT N_ARTICULO FROM ARTICULO WHERE PRECIO_TOTAL > ALL (SELECT PRECIO_TOTAL FROM ARTICULO WHERE N_ARTICULO = 1011) Poniendo IN en vez de > . PONER CONDICIONES CON HAVING Sirve para poner condiciones a los grupos (acepta o rechaza grupos de filas) Se pueden poner campos que no estén dentro de esos grupos. PONER UNA SELECT DENTRO DE UNA CONDICION Se usa cuando se debe poner una función (MAX.1. • ALL: La condición debe cumplirse en todos los registros seleccionados. 3.NOMBRE. /. = . Puede haber registros repetidos. CREAR UNA TABLA TEMPORAL CON INTO TEMP Se crea una tabla temporal con los campos y registros que han sido seleccionados en la SELECT. Se pueden usar los operadores +. • <campo> [NOT] LIKE “<cadena>”: Se seleccionan todos los registros que el contenido del campo sea <cadena>. poner delante del comodín una \ (?) . DISTINCTROW: No muestra datos repetidos (registros con el mismo valor). <lista de campos>: Campos que se van a usar.. 2) Se puede poner un nº para referirse a los campos (orden en que están colocados en memoria). MINUS) UNION (operador ∪ ): Da los registros que salen en la 1ª select + los registros que salen en la 2ª select. <expresiones>: Al poner una expresión se consigue crear un nuevo campo en memoria en que se guarda el resultado de esa expresión. != y <> Otras posibilidades son: • <campo> [NOT] BETWEEN <val1> AND <val2>: Sólo selecciona los registros que el contenido del campo esté entre <val1> y <val2>. nombre FROM TABLA T1 ← el alias es T1 3.. en vez de ALL (SELECT PRECIO_TOTAL .) y poner = en vez de >. • <campo> [NOT] IN (<lista de valores>): Se seleccionan los registros en que el contenido del campo coincida con alguno de los valores puestos después de IN. que salte 3. 3) Igual que en GROUP BY se pueden poner números enteros en vez de los nombres de las columnas.. • SOME/ANY: La condición debe cumplirse por lo menos en un registro. Primero se pone la tabla que se va a usar y después el alias separado por un espacio. 2) Longitud máxima entre todos los campos a ordenar: 120 bytes. Comodines5: _: Sustituye un carácter.5 (Es lo mismo que poner CURSO. 8..GRUPO FROM ALUMNOS GROUP BY 3.nombre FROM proveedores A WHERE EXISTS (SELECT * FROM pedidos B WHERE B. OR y NOT para unir condiciones y también >. Ejemplo: SELECT NMAT. UNIR DOS SELECT (CON UNION & INTERSECT. 6.CURSO. Esta SELECT devuelve un nº) SELECT N_ARTICULO FROM ARTICULO WHERE NUM_STOCK = 9 AND CANTIDAD = (SELECT MAX(UNIDADES) FROM ARTICULO WHERE NUM_STOCK = 9 ) Ejemplo: (Selecciona todos los registros que tengan N_ARTICULO igual a 1011) (En este ejemplo se puede conseguir lo mismo poniendo SELECT MAX(PRECIO_TOTAL). 7. USAR EXISTS CON UNA SELECT DENTRO DE UNA CONDICION: Devuelve verdadero cuando hay algún registro que cumpla la condición puesta en la SELECT. -. AGRUPAR INFORMACION CON GROUP BY 1) No puede tener columnas que no hayan sido puestas al comienzo de la SELECT.. Puede ser un nº o una fecha.• • • • • *: Todos los campos DISTINCT: No muestra datos repetidos (campos con el mismo valor). <= .GRUPO) 5.S# = B. >= .P# = 'P2' AND A. *: Sustituye varios caracteres. • SCAPE '<carácter>': Si encuentra ese carácter.S#) 4. Comodines: ?: Sustituye un carácter. UNION ALL (operador ∪ ): Da los registros que salen en la 1ª select + los registros que salen en la 2ª select.. < . ORDENAR CAMPOS CON ORDER BY 1) Nº máximo de campos que pueden ordenarse: 8 campos.… • <alias>: Otra forma de llamar a las tablas. PONER CONDICIONES CON WHERE Se pueden usar los operadores lógicos AND.2. %: Sustituye varios caracteres • <campo> [NOT] MATCHES “<cadena>”: Se seleccionan todos los registros que el contenido del campo sea <cadena>.

0) SELECT * FROM TAB Ejemplo: SELECT * FROM TAB TNAME -----------------------------PRUEBA REFERENCIA TABLA_NULOS TABTYPE CLUSTERID ------. AR.FLD1 = (SELECT EMPRESA_USUARIO FROM PARAMETROS_COMUNICA) AND DG.TIPO_MOV.FLD10 = 0) AND (AL.---------CHAR 2 NOT NULL VARCHAR2 20 NOT NULL VARCHAR2 20 NOT NULL 'tao' VARCHAR2 10 NOT NULL '*. AH053 PR. AL.fld2 codigo from ah053 a where a.*' Otros ejemplos (los dos primeros hacen lo mismo): SELECT CODIGO. SABER COMO SE LLAMAN LOS CAMPOS (ORACLE 7. usar UNION ALL • Para INTERSECT ocurre lo mismo que para UNION 9. TNAME ------------REFERENCIA REFERENCIA REFERENCIA REFERENCIA COLNO ----1 2 3 4 CNAME -------------CLAVE_EXT NOMBRE V_DEFECTO COD COLTYPE WIDTH SCALE PRECISION NULLS DEFAULTVAL -------. AH038 DG.FLD7 || ' ' || PRV.----.--------TABLE TABLE TABLE 10. AL.DESCRIPCION.----. AM.COD_ALMACEN) AND (AL.COD_ARTICULO. Se deben usar los nºs en vez de los nombres de columnas • UNION no saca los repetidos.DESCRIPCION FROM ALMACEN AL. SELECT CODIGO.• Nº de columnas de las dos SELECT debe ser igual. para que los saque.FLD2) AND (AL. ALMACENES AM.fld1 = (select empresa_usuario from parametros_comunica) and a.----------. ARTICULOS AR.COD_DELEGACION = DG.COD_PROVEEDOR = PR. DG.16) "PRECIO CON IVA" FROM ARTICULOS.fld21 <> (select tipo_proveedor from parametros_comunica). SELECT DESCRIPCION FROM ALMACENES WHERE COD_DELEGACION IN (SELECT FLD2 cod_deleg FROM AH038 deleg WHERE FLD1 = (SELECT EMPRESA_USUARIO FROM PARAMETROS_COMUNICA) AND FLD10 = 0 ).COD_ALMACEN = AM.CANTIDAD.16) AS "PRECIO CON IVA" FROM ARTICULOS.FLD5 || ' ' || PRV. (PRECIO * 1. PRV.COD_ARTICULO) AND (AL.0) SELECT * FROM COL WHERE TNAME = '<nombre de la tabla en mayúsculas>' Ejemplo: SELECT * FROM COL WHERE TNAME = 'REFERENCIA'. • ORDER BY solo puede estar en la última SELECT. SABER COMO SE LLAMAN LAS TABLAS (ORACLE 7. Cada columna debe ser del mismo tipo y longitud. AR. AH032 PRV.FLD4 "DELEGACION".--------. (PRECIO * 1. AL.COD_ARTICULO = AR. MO.FLD2) AND .USUARIO. AL. MOTIVOS_MOV MO WHERE (DG.FECHA_MOV. select a. Ejemplos con UNION: (Se usa el || para juntar los datos de 3 campos) SELECT (FLD7 || ' ' || FLD5 || ' ' || FLD6) "APELLIDOS Y NOMBRE" FROM AH032 WHERE FLD3 = 'F' UNION SELECT (FLD5) FROM AH032 WHERE FLD3 = 'J' Una SELECT gigante [combina varias tablas y usa un UNION] SELECT &&LOGIN COD_USUARIO.TIPO_ARTICULO.FLD6 "NOMBRE_PROVEEDOR".

COD_MOTIVO_MOV) . AH038 DG. ARTICULOS AR. AH032 PRV. ARTICULOS AR. AH038 DG.FLD2) AND .COD_PROVEEDOR = PR. AH038 DG. ALMACENES AM.FLD1 = (SELECT EMPRESA_USUARIO FROM PARAMETROS_COMUNICA)) AND (DG.COD_ARTICULO = AR. Al ejecutar la select. AH032 PRV. MOTIVOS_MOV MO WHERE (DG.FLD1 = (SELECT EMPRESA_USUARIO FROM PARAMETROS_COMUNICA)) AND (PR. DG.FLD21 <> (SELECT EMPRESA_USUARIO FROM PARAMETROS_COMUNICA)) AND (PRV.FLD2 = PRV. ALMACENES AM.FLD21 <> (SELECT EMPRESA_USUARIO FROM PARAMETROS_COMUNICA)) AND (AL.FLD10 = 0) AND (AL.COD_ARTICULO.FLD2) AND (AL.FLD2) AND (PR.COD_MOTIVO_MOV) AND (PRV.(PR.FLD2) AND (PR. MOTIVOS_MOV MO WHERE (DG. AH053 PR.COD_PROVEEDOR = PR.COD_ALMACEN) AND (AL.FLD2) AND (PR.FLD1 = (SELECT EMPRESA_USUARIO FROM PARAMETROS_COMUNICA)) AND (DG.DESCRIPCION FROM ALMACEN AL.FLD1 = (SELECT EMPRESA_USUARIO FROM PARAMETROS_COMUNICA)) AND (PR.FLD10 = 0) AND (AL.FLD1 = (SELECT EMPRESA_USUARIO FROM PARAMETROS_COMUNICA) AND DG.FECHA_MOV.COD_ARTICULO) AND (AL.COD_ALMACEN) AND (AL.COD_ARTICULO = AR.USUARIO. AH032 PRV.FLD5 "NOMBRE_PROVEEDOR".COD_ALMACEN = AM. ARTICULOS AR. PRV.FLD4 "DELEGACION". AM.FLD1 = PRV.FLD1 = PRV. AL.CANTIDAD.FLD1 = (SELECT EMPRESA_USUARIO FROM PARAMETROS_COMUNICA)) AND (PR.TIPO_MOV.FLD1) AND (PR.FLD3 = 'J') AND (AL. AR.COD_DELEGACION = DG.FLD2 = PRV.COD_DELEGACION = DG.COD_MOTIVO_MOV = MO.FLD1) AND (PR.FLD3 = 'F') UNION SELECT 'J' TIPO_PER. sale: Enter value for LOGIN: _ (se mete una cadena a mano y se pulsa ENTER) Una SELECT gigante [combina varias tablas y usa un UNION] SELECT 'F' TIPO_PER.COD_MOTIVO_MOV = MO.FLD2 = PRV. ALMACENES AM.FLD1) AND (PR. MO.COD_DELEGACION = DG.FLD2) AND (PR. AR.FLD10 = 0) AND (AL. AH053 PR.COD_ARTICULO) AND (AL.FLD2) AND (AL.COD_MOTIVO_MOV) UNION SELECT &&LOGIN COD_USUARIO.COD_MOTIVO_MOV = MO.FLD1 = PRV. COUNT(*) AS CUANTOS FROM ALMACEN AL.TIPO_ARTICULO. AL.COD_ALMACEN = AM.DESCRIPCION. AL.FLD3 = 'F') AND (AL. COUNT(*) AS CUANTOS FROM ALMACEN AL.FLD2) AND (PR. AH053 PR.FLD21 <> (SELECT EMPRESA_USUARIO FROM PARAMETROS_COMUNICA)) AND (PRV. AL. MOTIVOS_MOV MO WHERE (DG.

B.FLD7 || ' ' || b.NUM_INFORME AND A.FLD2) AND (PR.NUM_INFORME = 2.COD_PROVEEDOR = PR.U - . Ejemplos: UPDATE productos SET existencias = existencias .fld1 = b. UPDATE…SET…[WHERE]: Reemplaza los valores de los registros.NUM_INFORME = B. Sale una cosa parecida a esto: T CUANTOS .(sueldo * 0.FLD2 = PRV. Usa dos veces la misma tabla) SELECT A.FLD1 = PRV.FLD2) AND (PR.FLD3 = 'J') .FLD5 FROM AH053 a.fld2 = b.COD_ALMACEN) AND (AL. B.FLD3 = 'F' AND a.COD_ALMACEN = AM.--------F 31 J 0 (Se usan SELECTs dentro de los WHERE) Se puede usar = y <> porque la tabla PARAMETROS_COMUNICA sólo tiene un registro SELECT 'F: '||(b. Formato 1: UPDATE <nombre tabla> SET (<campos>)=(<valores>) [WHERE <condición>] Formato 2: UPDATE <nombre tabla> SET (<campos>)=(<valores>) [WHERE <aquí va una SELECT>] • Si no se le ponen condiciones reemplaza todos los registros.RESPONSABLE_NO FORM INFORME_INSPECCION A.ENTRADA_NO.FECHA_INFORME.FLD6) MIX FROM AH053 a.RESPONSABLE_CONFORME.fld1 AND a. INFORME_INSPECCION_B WHERE A. (Otro ejemplo.fld2 = b.COD_ARTICULO = AR. Comprueba si lo que devuelve la SELECT anidada esun 0) select cod_albaran.fld2 AND a.10 + 4 WHERE id_fab = 'QAS' AND id_producto = 'XK47' UPDATE empleados SET coment = 'NO COMMENT'  Cambian todos UPDATE empleados SET sueldo = sueldo . (Otro ejemplo. B.COD_MOTIVO_MOV = MO.FLD3 = 'J' AND a.FLD21 <> (SELECT EMPRESA_USUARIO FROM PARAMETROS_COMUNICA)) AND (AL.fld1 = (select empresa_usuario from parametros_comunica) and a.FLD1) AND (PR. B. cod_proveedor from albaranes_prov_cab_hist where cod_albaran = 'dedede' and cod_proveedor = 'PERSONA4' AND (select count(*) from albaranes_prov_lin_hist where cod_albaran = 'dedede' and cod_proveedor = 'PERSONA4') = 0. AH032 b WHERE b.NUM_INFORME = 1 AND B. AH032 b WHERE b.fld21 <> (select tipo_proveedor from parametros_comunica) UNION SELECT 'J: '||b.fld21 <> (select tipo_proveedor from parametros_comunica) ORDER BY MIX.* .COD_MOTIVO_MOV) AND (PRV.FLD1 = (SELECT EMPRESA_USUARIO FROM PARAMETROS_COMUNICA)) AND (PR.ENTRADA_CONFORME.10) WHERE nombre = 'PEPE' UPDATE empleados SET sueldo = 100000 WHERE sueldo IS NULL .FLD5 || ' ' || b.fld1 AND a.fld2 AND a.fld1 = (select empresa_usuario from parametros_comunica) and a.(AL.fld1 = b. B.COD_ARTICULO) AND (AL.

(otros) - . Formato: -.<comentario> Ejemplo: -. Formato: /* (comentario) */ Ejemplo: /*** *** COMANDO SQL USADO PARA ELIMINAR PROVEEDORES ***/ -.UPDATE trabajadores SET sueldo = sueldo + 1000 WHERE cod_t IN (SELECT cod_t FROM oficinas WHERE ciudad = 'MADRID') /* … */: Sirve para crear comentarios.: Sirve para crear comentarios. El comentario puede ocupar varias líneas.Selecciona los registros en que EDAD < 25 y los ordena por apellidos .

Formato: INITCAP(<cadena>) INSTR( ): Comprueba si una cadena está dentro de otra. Formato: MAX(<campo>) MIN( ): Devuelve el valor mínimo.4) FUNCIONES DE CADENAS INITCAP( ): El primer carácter en mayúsculas. Formato: TRUNC(<nº>. Formato: LOWER(<cadena>) LPAD( ): Rellena una columna por la izquierda con el carácter indicado. 1) FROM DUAL. Formato: AVG(<campo numérico/lista de valores>) COUNT( ): Devuelve el nº de valores no nulos en los registros recuperados. [<nº decimales>]) SIGN( ): Devuelve el signo de n (nº < 0  -1.'S'. [no existe en el SQL de ACCESS ]. <nº>. Formato: SIGN(<nº>) TRUNC( ): Devuelve el nº n con m decimales (por defecto. -2) FROM DUAL. LTRIM( ): Elimina los espacios de la  .<nº ocurrencia>) LENGTH( ): Longitud de una cadena. Ejemplo: TO_DATE('01-DEC97') TO_NUMBER( ): Convierte una cadena en un nº.<inicio>.3) FUNCIONES DE CONVERSION DE TIPOS DE DATOS TO_CHAR( ): Convierte un nº o una fecha en una cadena. '_') FROM DUAL [Esta select devuelve la cadena '12' ] SELECT LPAD(1000. nº = 0  0. Ejemplo: TO_NUMBER('1000') D. Formato: FLOOR(<nº>) MOD( ): Devuelve el resto de la división nº1 / nº2. 7. 10 '_') FROM DUAL [Esta select devuelve la cadena '________S1' ] SELECT LPAD('1234567890'. Formato: CEIL(<nº>) FLOOR( ): Devuelve un entero <= nº . Formato: LTRIM(<campo carácter>) REPLACE( ): Hace 'buscar <cad1> y cambiarla por <cad2>' dentro de <cadena>. Formato: REPLACE("<cadena>". (a) Si nº > longitud del campo: los espacios que sobran se rellenan por la izquierda con el carácter indicado.  devuelve 4567 y 0 SQRT( ): Devuelve la raíz cuadrada de un nº .<nº2>) POWER( ): Devuelve nº1nº2.D) FUNCIONES D. Si m es negativo trunca m dígitos a la izquierda del punto decimal.  devuelve 4000 y 4567. Formato: TO_CHAR(<nº>). (b) Si nº = longitud del campo: sin cambios (c) Si nº < longitud del campo: devuelve los primeros caracteres del campo Formato: RPAD(<columna>.555). '_') from list_movimientos."<cad2>") Ejemplo: SELECT REPLACE('SCOTT'. Formato: MOD(<nº1>."<cadena buscada>". Formato: SUM(<campo>) D. Formato: MIN(<campo>) SUM( ): Devuelve la suma de todos los registros del grupo. Se busca la ocurrencia nº n empezando desde <inicio>. Formato: ROUND(<nº>.8 SELECT TRUNC(4567. Formato: INSTR("<cadena donde se busca>". (b) Si nº = longitud del campo: sin cambios (c) Si nº < longitud del campo: devuelve los primeros caracteres del campo Formato: LPAD(<campo>. (a) Si nº > longitud del campo: los espacios que sobran se rellenan por la derecha con el carácter indicado.<nº decimales>) Ejemplos: SELECT TRUNC(4567.<carácter>) . TRUNC(4567.2) FUNCIONES DE GRUPOS AVG( ): Devuelve la media. Formato: TO_NUMBER(<cadena>). 2. nº > 0  1).<carácter>) Ejemplos: SELECT LPAD('S1'. Formato: TO_DATE(<cadena>).89. YYYY YY MM D DD DDD Q Año (4 cifras) Año (2 cifras) Mes (1-12) Dia semana (nº) [1 = lunes] Dia (1-31) Nº dia del año (1-366) Nº trimestre (1-4) HH24 HH MI SS Hora (reloj 24 horas) Hora (reloj 12 horas) Minuto Segundo Ejemplo: TO_CHAR(1000) TO_DATE( ): Convierte una cadena en una fecha. Formato: DISTINCT({<campo>| *}) MAX( ): Devuelve el valor máximo.'BOY') FROM DUAL RPAD( ): Aumenta el tamaño de una columna. 2. m=0). Formato: ABS(<nº>) CEIL( ): Devuelve un entero >= nº . '*') FROM DUAL [Esta select devuelve la cadena '***1000' ] Ejemplo:select lpad(cod_usuario. Formato: COUNT({<campo>| *}) DISTINCT( ): Contar los distintos.<nº2>) ROUND( ): Devuelve el nº n redondeado con m decimales. TRUNC(1. -3). <ancho del campo>."<cad1>". Formato: SQRT(<nº>) D. Formato: LENGTH(<cadena>) LOWER( ): Pasa la cadena a minúsculas. Los espacios que sobran se rellenan por la derecha.1) FUNCIONES NUMERICAS ABS( ): Devuelve el valor absoluto de un nº . Formato: POWER(<nº1>.

Formato: SUBSTR(<cadena>. 12._. Formato: DAY(<fecha>) LAST_DAY( ): Nº de días del mes. Formato: SYSDATE. Formato: ADD_MONTHS(<fecha>.4) FUNCIONES DE FECHA ADD_MONTHS( ): Suma n meses a una fecha. 10 '_') FROM DUAL [Esta select devuelve la cadena ' S1________' ] SELECT RPAD('S1'. Ejemplo: SELECT LAST_DAY(SYSDATE) FROM DUAL MONTH( ): Mes de la fecha. 10 '_-') FROM DUAL [Esta select devuelve la cadena ' S1_-_-_-_-' ] SELECT RPAD('S1'._' ] SELECT RPAD('1234567890'.<nº meses>) DAY( ): Día del mes. Formato: SOUNDEX("<cadena>") Ejemplo: SELECT apellidos FROM empleados WHERE SOUNDEX(apellidos) = SOUNDEX("SMYTHE") SUBSTR( ): Devuelve un pedazo de una cadena.<nº caracteres>) TRIM( ): Elimina los espacios de la  y  (es como hacer un LTRIM(RTRIM(…)) ). 40)) || '<==' "Sin espacios" FROM almacenes WHERE CODIGO LIKE 'A_B_' Sin espacios -------------------------------------------------==>Almacén de la calle Bravo Murillo<== ==>Almacén de la calle Sainz de Baranda<== UPPER( ): Pasa la cadena a mayúsculas. 2. Formato: RTRIM(<campo carácter>) SOUNDEX( ): Busca palabras que suenen igual (en inglés). Formato: YEAR(<fecha>) . Formato: TRIM(<campo carácter>) Ejemplo: SELECT '==>' || TRIM(SUBSTR(DESCRIPCION. '_. Formato: MONTH(<fecha>) MONTHS_BETWEEN( ): Devuelve nº de meses que hay entre dos fechas.<otra fecha>) SYSDATE: Fecha del sistema. Formato: UPPER(<cadena>) D. 6sábado) YEAR( ): Año de la fecha.') FROM DUAL [Esta select devuelve la cadena ' S1_. Formato: LAST_DAY(<fecha>).fecha1) Formato: MONTHS_BETWEEN(<una fecha>._. '_') FROM DUAL [Esta select devuelve la cadena '12' ] RTRIM( ): Elimina los espacios de la  . Ejemplo: SELECT SYSDATE FROM DUAL WEEKDAY( ): Día de la semana (0domingo.<inicio>.Ejemplos: SELECT RPAD('S1'. 1. (fecha2 .

Si no se indica fichero.SQL indicado. (Esto es lo que SQL PLUS saca por pantalla) Name ----------------------------------------------------TNAME COLNO CNAME COLTYPE WIDTH SCALE PRECISION NULLS DEFAULTVAL CHARACTER_SET_NAME Null? -------NOT NULL NOT NULL NOT NULL Type -----------------VARCHAR2(30) NUMBER VARCHAR2(30) VARCHAR2(106) NOT NULL NUMBER NUMBER NUMBER VARCHAR2(19) LONG VARCHAR2(44) DESCRIBE TAB. Formato: LIST QUIT: Sale de SQL PLUS RUN: Ejecuta el último comando metido.BUF) Formato: EDIT [<fichero>] EXIT: Sale de SQL PLUS GET: Lleva al buffer el fichero . El nº debe ser mayor de 0.1) PRINCIPALES COMANDOS (nº): Muestra la linea nº del buffer. (Esto es lo que SQL PLUS saca por pantalla) Name Null? ----------------------------------------------------. El editor de textos usado se indica con define_editor. SQL PLUS usa un fichero temporal (AFIEDT. Formato: DESC <tabla> Ejemplos: DESC ALMACEN. ) . Ejemplo (primero se ejecuta este comando): SQL> SELECT N_ARTICULO FROM ARTICULO WHERE PRECIO_TOTAL > ALL (SELECT PRECIO_TOTAL FROM ARTICULO WHERE N_ARTICULO = 1011). pero no lo ejecuta. SQL> 1 1* SELECT N_ARTICULO FROM ARTICULO SQL> 2 2* WHERE PRECIO_TOTAL > ALL (SELECT PRECIO_TOTAL FROM ARTICULO SQL> 5 SP2-0226: Invalid line number [da error por que el comando tiene menos de 5 líneas] DESC: Ver estructura de una tabla. (hay que usarlo cuando el comando no acaba en . Formato: DESCRIBE <tabla> Ejemplos: DESCRIBE COL.E) SQL PLUS E. Formato: define_editor = <editor de texto> Ejemplos: define_editor = vi  Si estás usando Oracle de UNIX define_editor = notepad  Si estás usando Oracle para Windows ED | EDIT: Editar fichero .SQL indicado.-------TNAME NOT NULL TABTYPE CLUSTERID Type -----------------VARCHAR2(30) VARCHAR2(7) NUMBER DEFINE_EDITOR: Se indica a SQL PLUS el editor de textos que se va a usar.--------------VARCHAR2(2) NOT NULL VARCHAR2(10) NOT NULL VARCHAR2(3) NOT NULL VARCHAR2(10) DATE VARCHAR2(15) VARCHAR2(20) NUMBER VARCHAR2(1) DESCRIBE: Ver estructura de una tabla. LIST: Sirve para ver ultimo comando metido. (Esto es lo que SQL PLUS saca por pantalla) Name ----------------------------------------------------COD_MOTIVO_MOV COD_ALMACEN COD_DELEGACION COD_ARTICULO FECHA_MOV COD_PROVEEDOR USUARIO CANTIDAD TIPO_MOV Null? Type -------. Formato: GET <fichero> HELP: Muestra la ayuda (si está disponible).

El texto mostrado puede ser una cadena de caracteres o una variable de tipo caracter Opciones: • ON/OFF: Activa/desactiva el pie de página • COL<nº>: Texto colocado en la columna indicada • SKIP <nº>: Salta n líneas antes de imprimir el texto • LEFT: Texto alineado a la izquierda • CENTER: Texto centrado • RIGHT: Texto alineado a la derecha Ejemplo: BTITLE CENTER 'Confidencial'. CLEAR BREAKS: Elimina cualquier tipo de ruptura activa. es sólo una máscara. : Inserta el separador de miles. Formato: SET SQLPROMPT <cadena> Ejemplo: SET SQLPROMPT SQL>> [el prompt pasa a ser "SQL>>"] START: Ejecuta un fichero de texto con ordenes SQL.Ejemplo: SQL> SELECT N_ARTICULO FROM ARTICULO WHERE PRECIO_TOTAL > ALL (SELECT PRECIO_TOTAL FROM ARTICULO WHERE N_ARTICULO = 1011) SQL> run SAVE: Grabar fichero. Rellena con ceros a la izquierda. • PAGE: Crea una ruptura por página • REPORT: Crea un grupo al final del informa Acciones a tomas • SKIP: Salta una línea • SKIP <nº>: Salta n líneas • PAGE: Salto de página BTITLE: Sirve para configurar el pie de página del informe. Se puede unar varias columnas. No rellena con ceros a la izquierda * 0: Números. : Inserta el punto decimal * . Esto no cambia los datos. La opción REPLACE sirve para sobreescribir el fichero. Caracteres especiales: * A<nº>: Variable alfanumérica de n posiciones * 9: Números. * $: Indica la posicion del signo del $ * . Formato: BREAK ON <columna/ROW/PAGE/REPORT> <acción a tomar> Cosas que se pueden poner después de ON: • <columnas>: Crea un nuevo grupo cada vez que cambia el valor de esa columna. COLUMN: Se modifica la visualización de una columna. SPOOL: Guarda el resultado de una SELECT en un fichero o en la impresora. Formato: START <fichero> <args> <args> son valores para variables usadas en el fichero SQL Ejemplos: START prg001.2) GENERACION DE INFORMES BREAK: Visualiza rupturas de control activas BREAK ON: Sirve para organizar las filas recuperadas en grupos. Para terminar se usa SPOOL OFF (con ficheros) o SPOOL OUT (con impresoras) Formato 1: SPOOL <fichero> Formato 2: SPOOL ON E.SQL hay que indicarlo. . Formato: SAVE <nombre> [REPLACE] Ejemplo: SAVE C:\TEMP. * B : Cambia los blancos a la izquierda de la columna por ceros. Ejemplo: ON ciudad ON codpostal  1º agrupa por ciudad y después por codigo postal • ROW: Crea un grupo para cada fila recuperada. Formato: COLUMN <columna> FORMAT <formato> HEADING '<cabecera>' {WRAPPED | WORD_WRAPPED | TRUNCATE} NULL '<texto>' LIKE <columna> {PRINT | NOPRINT} ON / OFF NEWLINE Opciones: • FORMAT: Sirve para formatear columnas. START prgdept 10. Si la extensión del fichero no es .TXT REPLACE SET SQLPROMPT: Cambia el prompt usado por SQL PLUS.

Por defectoestá a ON SET WRAP ON/OFF: Elimina espacios entre líneas. el SQL PLUS pedirá el valor de esa variable. Va entre comillas simples. CLEAR COMPUTES: Eliminar todos los computes activos SET LINESIZE: Nº caracteres por línea... incluyendo títulos y marcas de página. de los registros que forman un grupo Formato: COMPUTE <función> OF <campo> ON <grupo (un grupo creado con BREAK)> Funciones: • MAX: Máximo • MIN: Mínimo • AVG: Media • SUM: Suma • STD: Desviación estandar • VAR: Varianza • COUNT: nº de filas por grupo Ejemplo: COMPUTE MAX OF salario ON deptno. • NEWLINE: Genera una linea en blanco antes de empezar a escribir el contenido de la columna Ejemplo: COLUMN ENAME HEADING 'NOMBRE|EMPLEADO' FORMAT A8 COLUMN DEPTNO HEADING 'DEPARTAMENTO' FORMAT 99. el valor de la variable no se pierde. TTITLE: Sirve para configurar el encabezado del informe. Se deben poner después de START <nombre fichero> y separadas por espacios..… . Por defecto es cadena vacia. máximo.. SET NULL "texto": Valor para nulos. Al ejecutarlo aparece . Por defecto está a ON SET VARIABLE "valor": Mete un valor en la variable indicada. OF . Ejemplo: SELECT * FROM dept WHERE deptno = &numdept. Por defecto es 25 SET HEADING ON/OFF: Activa/desactiva utilización de cabeceras de columna.. el máximo es 999 Formato: SET LINESIZE <nº> SET PAGESIZE: Nº líneas por página. media.99. SET ECHO ON/OFF: Visualizar valores que se están ejecutando desde dentro de un fichero. ON: Saca el mínimo.3) VARIABLES • • • Si se pone &<nombre>.999. Ej: 'SALARIO | MENSUAL'  en una linea aparece 'SALARIO' y debajo aparece 'MENSUAL' • WRAPPED | WORD_WRAPPED | TRUNCATE: Como se alinea la columna si el valor contenido es mayor que el especificado en formato. Deben corresponderse los tipos de datos. Por defecto es 80. SHOW <variable>: Ver valor de la variable indicada SHOW ALL: Ver valor de todas las variables.... Sirve para usar el mismo valor en varias ordenes SQL A los ficheros . • ON / OFF: Activa/desactiva el formateo de una columna temporalmente. Se utiliza cuando una columna es necesaria en una select (ej GROUP BY) pero no desea visualizarse. COLUMN SAL HEADING 'SALARIO|MENSUAL' FORMAT $9. COMPUTE: Ver todos los computes activos COMPUTE . eliminados. 98' CENTER 'Informe de ventas'.para indicar que la columna tiene nºs negativos * PR: Usa < y > para indicar que la columna tiene nºs negativos • HEADING: Cabecera de la columna.. El texto mostrado puede ser una cadena de caracteres o una variable de tipo caracter Opciones: • ON/OFF: Activa/desactiva el encabezado • COL<nº>: Texto colocado en la columna indicada • SKIP <nº>: Salta n líneas antes de imprimir el texto • LEFT: Texto alineado a la izquierda • CENTER: Texto centrado • RIGHT: Texto alineado a la derecha Ejemplo: TTITLE LEFT 'Dic. E. cuando se mete dentro de una SQL.. Por defecto es OFF SET FEEDBACK ON/OFF: Devuelve nº de registros seleccionados. Por defecto está a ON SET VERIFY ON/OFF: Indicador del valor antiguo y nuevo de una variable cuando se usa &variable.. Si se pone &&<nombre>. cadena..* MI: Usa el . Enter value for numdept: _  se mete un nº. El pipeline sirve para dividir la cabecera en varias lineas. • NULL : Si en la columna existen valores nulos los reemplaza por el texto indicado • LIKE: La columna tiene el mismo formato que la columna indicada • PRINT | NOPRINT: Especifica si la columna se imprime o no.SQL se les puede pasar directamente el valor de las variables.

fld3 = 'J' and b.fld5||' '||b.fld6 = '&Nombre' ) ).fld2 = b.fld7||' '||b.fld5 = 'Delegado 4' ) or .fld3 = 'F' and b.fld5 = '&Nombre' ) or (b.fld1 = (select empresa_usuario from parametros_comunica) and a.fld3 = 'J' and b.NOTA: Si se quiere meter una cadena hay que incluir las ' ' (Ej: 'Paco el Loco') o poner la variable entre ' ' Ejemplo: SELECT a. Al ejecutarlo aparece 2 veces "Enter value for nombre" Despues de meter el valor sale algo parecido a esto: old 6: (b.fld2 codigo FROM ah053 a. ah032 b WHERE a.fld5 = '&Nombre' ) or new 6: (b.fld2 and a.fld21 <> (select tipo_proveedor from parametros_comunica) and ( (b.fld3 = 'J' and b.

… (!=. (son dos pipes seguidos) Ejemplo: SELECT NIF. APELLIDOS) VALUES ('DRACULA'. Los comodines que pueden usarse son '%' (varios caracteres) y subrayado (un caracter). >. = .16) "PRECIO CON IVA" FROM ARTICULOS WHERE PRECIO >= 15000 AND PRECIO <= 20000.16) "PRECIO CON IVA" FROM ARTICULOS WHERE PRECIO >= 15000 AND PRECIO <= 20000. <> y ^= hacen lo mismo (distinto)) Ejemplos (el 2º y 3º hacen lo mismo): SELECT CODIGO. Ejemplo: SELECT CODIGO. " " : Se usa en alias de campos (cuando tienen espacios o caracteres que dan problemas) Ejemplo: SELECT NIF AS "Nº de NIF".TO_DATE('1/mar/1999') "DIF FECHAS" FROM DUAL. NULL). (Selecciona los registros que su COD_ALMACEN sea '001' o '003') SELECT * FROM ALMACENES WHERE COD_ALMACEN IN ('001'. AND. != y ^= : Se usan para comparar nºs. <= . NOMBRE FROM DATOS_PERS. Formato: <operador> ALL (<una SELECT>) Nota: El <operador> puede ser > . < > . <= y <> [también se puede usar = . (PRECIO * 0. Ejemplos: SELECT CODIGO. (PRECIO * 1. (El IN se usa con una SELECT para indicar que registros van a modificarse) UPDATE trabajadores SET sueldo = sueldo + 1000 WHERE cod_t NOT IN (SELECT cod_t FROM oficinas WHERE ciudad = 'MADRID'). OR. menor. Si no hay paréntesis se ejecutan en este orden: NOT.… o una SELECT Se usa principalmente en el comando SELECT y UPDATE Ejemplos: (Selecciona los registros que su COD_ALMACEN o su COD_DELEGACION sea '001') SELECT * FROM ALMACENES WHERE '001' IN (COD_ALMACEN. <. >= . Ejemplo: SELECT DESCRIPCION FROM ARTICULO WHERE PRECIO_TOTAL > ALL (SELECT PRECIO_TOTAL FROM ARTICULO WHERE COD_ARTICULO LIKE 'CDR%') AND. Ejemplo: rec_read := rec_read + 1 < . IN : Se usa para indicar una lista de valores. SELECT CODIGO. BETWEEN: El nº / fecha debe estar entre dos valores. APE2. cadenas. (PRECIO * 1. LIKE: Se usa con cadenas.* / : Son los operadores numéricos que permite Oracle. ALL (selects anidadas) : Se usa cuando se quiere que el valor de un campo sea mayor. fechas. (PRECIO * 1. (+)= : ??? [lo vi en una select. NOT : Operadores lógicos. puede que sirve para hacer los "LEFT JOIN" del Access] || : Operador usado para unir cadenas o campos caracter. APE1 || ' ' || APE2 || '. (PRECIO * 1. OR Ejemplo: SELECT CODIGO.16) "PRECIO CON IVA" FROM ARTICULOS WHERE PRECIO != 15000 SELECT CODIGO.… a todos los valores que devuelva la SELECT. pero es poco práctico]. PRECIO. cadenas. COD_DELEGACION). Ejemplo: INSERT INTO CLIENTES (NOMBRE. ' || NOMBRE AS NOMBRE_COMPLETO FROM DATOS_PERS. Ejemplo: SELECT DISTINCT APELLIDO FROM CLIENTES WHERE APELLIDO LIKE "M%" SELECT DISTINCT APELLIDO FROM CLIENTES WHERE APELLIDO NOT LIKE "%Z" .16) "PRECIO CON IVA" FROM ARTICULOS WHERE PRECIO <> 15000 + . '003'). APE1. SELECT TO_DATE('1/mar/2000') . (PRECIO * 1.F) OPERADORES SQL := : Operador de asignación.90) "DESPUES DEL DESCUENTO" FROM ARTICULOS. Pueden ser números. fechas. (El IN se usa con una SELECT para indicar que registros van a borrarse) DELETE FROM CI071 WHERE FLD4 IN (SELECT FLD4 FROM CI071 WHERE FLD4 NOT LIKE '-%').16) "PRECIO CON IVA" FROM ARTICULOS WHERE PRECIO BETWEEN 15000 AND 20000. >= . ' ' : Delimitador de cadenas.

Locale Identifier=3082" '<*> '<*> Esto puede ser un origen de datos ODBC (creado desde el panel de control) Public dbOracle As New ADODB. "'".3) EJECUTAR COMANDOS SQL SIN USAR RECORDSETS *** Esto ocurre por que se usa el método Execute de las conexiones a) Meter comando SQL en una variable de tipo carácter (por ejemplo. Ejemplos: dbOracle.4) TRUCOS A) DATOS DE TIPO NUMERICO La forma más simple de convertir los nºs de las textbox (o cualquier otro control) al formato usado por Oracle es: Str(CDbl(<nº>)) La función Str( ) convierte un nº en una cadena y siempre usa el punto como separador de decimales. pero no después).Close Notas: Para saber si la conexión está abierta o no."''") & "'" rec."''") & "'" C) DATOS DE TIPO FECHA . adLockReadOnly G.Text.Open. un INSERT) [opcional] b) Hacer esto: <objeto connection>." & _ "User ID=panel.Connection) c) Abrir conexión.Connection) b) Configurar conexión [opcional] Ejemplo: dbOracle.Text)) B) DATOS DE TIPO CARACTER La forma más simple es usar la función REPLACE del Visual Basic. <tipo recordset>.Password=panel.Data Source=panel.Password=panel. Ejemplo: strSQL = strSQL & "'" & Replace(txtNombre.Open "Provider=MSDAORA.Text.Execute "<comando SQL>" G. Si esa propiedad vale 0.Connection]. Ejemplo: Str(CDbl(txtTotal.1.ConnectionString no es una cadena vacia.Open "<comando SQL>".Recordset (Ej: Dim recBuscador as New Recordset) b) Meter comando SQL en una variable de tipo carácter (por ejemplo. Se le ordena que busque una comilla simple y la cambie por dos comillas simples.1) Si la propiedad .Open strSQL. c.2) Si la propiedad . c.1. Formato: <recordset>.G) ACCEDER A ORACLE CON VISUAL BASIC 6 G.ConnectionString = "Provider=MSDAORA.Open "<cadena de conexión>"." & _ "User ID=panel. la conexión está cerrada. mira la propiedad State del objeto Connection [o ADODB. Si eso pasa cuando se está intentando leer/grabar en una tabla.Locale Identifier=3082" d) Acceder a datos usando recordsets (ver G.Open dbOracle.Data Source=panel.2) RECORDSETS a) Definir una variable de tipo Recordset o ADODB."'".ConnectionString es una cadena vacia. elegir tipo de bloqueo 'Sólo lectura' (adLockReadOnly) y tipo de recordset 'Static' (adOpenStatic)]. <tipo bloqueo> Ejemplo: Dim rec as New ADODB. dbOracle.Recordset Dim strSQL as String '-----------------------------'dbOracle es la conexión usada (un objeto Connection) strSQL = "select * from lista_juegos " & vbCrLf & _ "where tipo = '" & Replace(txtTipo. la conexión debe abrirse con <objeto connection>. una SELECT) [opcional] c) Abrir el recordset (se puede elegir el tipo de recordset antes de abrirlo o en el momento en que se abre. [por motivos practicos (velocidad).2) e) Cerrar la conexion Ejemplo: dbOracle. adOpenStatic. aparece el error &H80004005 G.1) CONEXIONES a) Definir una variable de tipo Connection o ADODB.Connection (lo normal es que sea una variable global) [el ODBC debe haberse creado antes en el panel de control] Ejemplo: Public dbOracle As New ADODB. la conexión debe abrirse con <objeto connection>.

"'yyyy-mm-dd'") strSQL = strSQL & "AND " & vbCrLf & _ " FECHA >= {d " & strTemp & "}" End If If (Not IsNull(dtpFechaFin. 'yyyy-mm-dd') >= " & strTemp End If If (Not IsNull(dtpFechaFin."'yyyy-mm-dd'") strSQL = strSQL & "AND " & vbCrLf & _ " FECHA <= {d " & strTemp & "}" End If 'Esto puede quedar asi: ' SELECT * FROM PEDIDOS ' WHERE COD_PEDIDO IS NOT NULL AND ' FECHA >= {d '1999-07-31'} AND ' FECHA <= {d '2000-01-02') * Otra opción es usar la función TO_DATE( ) .Value.Value)) Then strTemp = Format(dtpFechaInicio."'yyyy-mm-dd'") strSQL = strSQL & "AND " & vbcrlf & _ " TO_CHAR(FECHA.Value)) Then strTemp = Format(dtpFechaInicio.'yyyy-mm-dd')" End If 'Esto puede quedar asi: ' SELECT * FROM PEDIDOS ' WHERE COD_PEDIDO IS NOT NULL AND ' FECHA >= TO_DATE('1999-07-31'. (Ej: "2" > "0") Ejemplo: Dim strTemp As Strng '---------------------------------------'coge la fecha del dtPicker y la da un formato strSQL = "SELECT * FROM PEDIDOS" & vbCrLf & " WHERE COD_PEDIDO IS NOT NULL " If (Not IsNull(dtpFechaInicio."'yyyy-mm-dd'") strSQL = strSQL & "AND " & vbcrlf & _ " FECHA <= TO_DATE(" & strTemp & ".* Una forma más simple es usar {d 'año-mes-dia'}. La fecha debe pasarse en formato año-mes-dia.Value."'yyyy-mm-dd'") strSQL = strSQL & "AND " & vbcrlf & _ " TO_CHAR(FECHA. 'yyyy-mm-dd') <= " & strTemp End If 'Esto puede quedar asi: ' SELECT * FROM PEDIDOS .Value."'yyyy-mm-dd'") strSQL = strSQL & "AND " & vbcrlf & _ " FECHA >= TO_DATE(" & strTemp & ".Value)) Then strTemp = Format(dtpFechaInicio.Value.'yyyy-mm-dd')" End If If (Not IsNull(dtpFechaFin.Value)) Then strTemp = Format(dtpFechaFin. 'yyyy-mm-dd') * Otra opción es usar la función TO_CHAR( ) .Value. Ejemplo: Dim strTemp As Strng '---------------------------------------'coge la fecha del dtPicker y la da un formato strSQL = "SELECT * FROM PEDIDOS" & vbCrLf & " WHERE COD_PEDIDO IS NOT NULL " If (Not IsNull(dtpFechaInicio. 'yyyy-mm-dd') AND ' FECHA <= TO_DATE('2000-01-02'. La fecha debe pasarse en formato año-mes-dia para evitar problemas ("yyyy/mm/dd" o "yyyy-mm-dd") Ejemplo: Dim strTemp As Strng '---------------------------------------'coge la fecha del dtPicker y la da un formato strSQL = "SELECT * FROM PEDIDOS" & vbCrLf & " WHERE COD_PEDIDO IS NOT NULL " If (Not IsNull(dtpFechaInicio. Tiene una pega: No funciona si la usas en SQL-PLUS.Value. Se aprovecha que las cadenas se comparan por su código ASCII.Value)) Then strTemp = Format(dtpFechaFin.Value)) Then strTemp = Format(dtpFechaFin.

'yyyy-mm-dd') >= '1999-07-31' AND TO_CHAR(FECHA.' ' ' WHERE COD_PEDIDO IS NOT NULL AND TO_CHAR(FECHA. 'yyyy-mm-dd') <= '2000-01-02' .

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->