Está en la página 1de 64

SQL

SQL (Standar Query Lenguage). Es el lenguaje de consulta universal para base datos. grandes grupos diferenciados: Existen tres DDL (Data Definition Lenguage), encargado de la definicin de la base de datos. DML (Data Manipulation Lenguge), se encarga de manipular la base de datos. DCL (Data Control Lenguge), se encarga de la seguridad, control, de la base de datos.

SQL
Los componentes del lenguaje SQL son: - COMANDOS - CLAUSULAS - TIPO DE DATOS - OPERADORES - PALABRAS CLAVE - FUNCIONES DE AGREGADO - PREDICADOS Estos elementos se combinan para crear, actualizar y manipular la base de datos.

SQL
Existen tres tipos de comandos SQL: - DDL - DML - DCL DDL CREATE DROP ALTER - Data Definition Lenguage - Data Manipulation Lenguage - Data Control Lenguage DML SELECT UPDATE INSERT DELETE - Definicion de datos - Manipulacin de datos - Control de accesos y privilegios entre usuarios DDL GRANT REVOKE

SQL
Las clusulas son condiciones de modificacin utilizadas para definir los datos que se desea manipular FROM WHERE HAVING Permite especificar la tabla de la cual se van a seleccionar los registrosespecificar las condiciones que deben cumplir los registros a Permite Permite expresar la condicin que debe satisfacer cada grupo

Permite separar los registros seleccionados en grupos especficos GROUP BY seleccionar

ORDER BY Permite ordenar los registros seleccionados de acuerdo a un orden especfico

SQL
SQL admite una variada gama de tipos de datos. Numricos (con o sin decimales). Alfanumricos. De Fechas. Booleanos. BLOB (Binary Large Object). Destinado a almacenar imgenes y archivos. Dependiendo de la base de datos el nombre de los tipos puede variar. Numricos Integer Alfanumricos Char(n) Fecha Date Datetime Lgico Bit Boolean BLOB Image Text

Numeric(n,m) Varchar(n,m)

Decimal(n,m)
Float

SQL
Combinaciones de caracteres que se emplean para realizar asignaciones como comparaciones entre datos Se dividen en: Lgicos, Aritmticos, Relacionales, y de Concatenacin.

Permiten comparar expresiones lgicas devolviendo un valor verdadero o falso.


Operador Uso

AND
OR NOY

Y lgico. Evala dos condiciones y devuelve un valor de verdad solo si ambas son ciertas.
O lgico. Evala dos condiciones y devuelve un valor de verdad si alguna de las dos son ciertas. Negacin lgica. Devuelve el valor contrario de la expresin

SQL
Se utilizan para realizar las diferentes operaciones aritmticas entre campos.

Operador
+ * / **

Uso
Adicin Substraccin Producto Divisin Exponenciacin

SQL
Permiten que campos o expresiones puedan ser comparadas.

Operador
< > <> <= >= = !< !> =!

Uso
Menor que Mayor que Distinto de Menor o igual que Mayor o igual que Igual que No mayor que No menor que

Une cadenas de caracteres. El operador de concatenacin en la base Oracle es: |

SQL
Son identificadores con un significado especial para SQL. No pueden ser usadas para otro propsito distinto para el que han sido pensadas ALL AND ANY ASC
ANY
CHECK CREATE DELETE EXISTS FROM IN INTO NOT OR

BEGIN
CLOSE CURSOR DESC FETCH GRANT INDEX LIKE NUMERIC ORDER

BY
COUNT DECIMAL DISTINCT FLOAT GROUP INSERT MAX ON REVOKE

CHAR
COMMIT DECLARE DEFAULT FOR HAVING INTEGER MIN OPEN ROLLBACK

SELECT
UNION VALUES

SET
UNIQUE VIEW

SUM
UPDATE WHERE

TABLE
USER WITH

SQL
Son condiciones que se indican en la clausula WHERE de una consulta SQL. PREDICADOS SQL BETWEENA ND LIKE ALL ANY Comprueba que el valor est dentro de un intervalo Compara un campo con una cadena alfanumrica. Admite el uso de caracteres comodines.

Seala a todos los elementos de la seleccin de una consulta. la condicin se cumplir si la condicin es cierta Indica que
para al menos un elemento del conjunto Devuelve un valor verdadero si el resultado de una subconsulta devuelve resultados Comprueba si un campo se encuentra dentro de un rango determinado.

EXISTS
IN

SQL
Se usan dentro de una clusula SELECT para devolver un nico valor aplicado a un grupo de registros Funcin AVG Uso Calcula el promedio de los valores de un campo determinado Devuelve el nmero de registros de la seleccin Devuelve la suma de los valores de un campo determinadovalor ms alto de un campo especificado Devuelve el Devuelve el valor ms bajo de un campo especifiacdo

COUN T SUM
MAX MIN

SQL
Es el encargado de permitir la definicin de los objetos que forman una base de datos. Acciones:

CREATE: Creacin de tablas, ndices y vistas ALTER: Modificacin de las estructuras de las tablas. DROP: Supresin de tablas ndices y vistas.

SQL
La sintaxis empleada se base en la notacin EBNF. A continuacin el significado de algunos smbolos.
SMBOLO <> [] {} | SIGNIFICADO

Parmetros de una orden que el usuario debe sustituir al escribir dicha orden por los valores que queramos dar a los parmetros.
Contenido opcional. Contenido puede repetirse una o ms veces. Separador de expresiones. Puede emplearse una u otra expresin pero no ms de una a la vez.

SQL
La informacin de una base de datos se almacena en tablas. La creacin de la base de datos debe comenzar por la creacin de tablas. Para la creacin de tablas se usa la sentencia CREATE.
Sintaxis:

CREATE TABLE <NOMBRE_TABLA> ( { <nombre_campo> <tipo_dato (tamao)> [null | not null] [default <valor_por_defecto>] } [, constraint <nombre> primary key (<nombre_campo>[,...n])] [, constraint <nombre> foreign key (<nombre_campo>[,n]) references

SQL
Se usa en las sentencias CREATE TABLE y ALTER TABLE. ndices de campo nico. CONSTRAINT <nombre_constraint> {PRIMARY KEY | UNIQUE | REFERENCES <nombre_tabla_externa>(campo_externo_1[,campo_externo_2]) ndices de campos mltiples CONSTRAINT <nombre_constraint> {PRIMARY KEY (campo_1[, campo_2]) UNIQUE (campo_1[,campo_2] FOREIGN KEY (campo_ref_1 [,campo_ref_2]) REFERENCES <nombre_tabla_externa>(campo_externo_1[, campo_externo_2])}

SQL
Existen tres tipos de ndice:
OPERADOR USO

UNIQUE

PRIMARY KEY FOREIGN KEY

Genera un ndice de clave nica. Los registros en la tabla no pueden contener el mismo valor en los campos indexadosy los campos especificados genera un ndice El campo
de primario. Los campos deben ser nicos y no nulos. Cada tabla solo puede tener una clave principal Genera un ndice externo compuesto como el valor del ndice los campos contenidos en otras tablas.

SQL
Cuando se requiere modificacin de una tabla se emplea la sentencia ALTER. campos a la estructura inicial de una tabla. - Aadir - Aadir restricciones y referencias.
Sintaxis:

ALTER TABLE <nombre_tabla> ADD <nombre_campo> <tipo_dato (tamao)> [null | not null] [default <valor_por_defecto>] { , <nombre_campo> <tipo_dato (tamao)> [null | not null] [default <valor_por_defecto>] };

SQL
La eliminacin de tablas se realiza mediante la opcin DROP TABLE. DROP TABLE elimina datos de manera permanente. Si existe integridad referencial DROP TABLE fallar.
Sintaxis:

DROP TABLE <nombre_tabla>; Al eliminar una tabla se elimina tambin sus ndices.

SQL
Estructura de datos que permite acceder a diferentes filas de una tabla a travs de un campo o varios campos clave. Su objetivo es agilitar la bsqueda de datos en una consulta a una tabla.
Sintaxis:

CREATE [UNIQUE] INDEX <nombre_indice> ON <nombre_tabla> ( { <nombre_campo> [ASC | DESC] } );

SQL
Para eliminar un ndice se emplea la sentencia DROP INDEX
Sintaxis:

DROP INDEX <nombre_tabla>.<nombre_indice>;

SQL
Una vista es una consulta que refleja el contenido de una o ms tablas. Se puede acceder a una vista como si fuese una tabla. Para crear una vista se usa la sentencia CREATE VIEW proporcionando un nombre para la vista y una sentencia SQL SELECT valida.
Sintaxis:

CREATE VIEW <nombre_vista> AS (<sentencia_select>);

SQL
Para modificar una vista se usa la sentencia ALTER VIEW. Si se quiere agregar campos slo se agrega los campos en la sentencia SELECT.
Sintaxis:

ALTER VIEW <nombre_vista> AS (<sentencia_select>);

SQL
Para eliminar vistas se emplea la sentencia DROP VIEW.
Sintaxis:

DROP VIEW <nombre_vista>;

SQL
Objeto para la generacin de cdigos numricos automticos. Simplificar el nombre original de la tabla se suelen utilizar para evitar tener que escribir el nombre del propietario de la tabla.
Sintaxis:

CREATE SEQUENCE <nombre_secuencia> [MIN VALUE <min_value>] [MAX VALUE <min_value>] [START WITH <ini_value>] [INCREMENT BY <inc_value>] [NO CACHE | CACHE <cache_value>] [CYCLE] [ORDER]

SQL
Para eliminar una secuencia se usa la sentencia DROP SEQUENCE.
Sintaxis:

DROP SEQUENCE <nombre_secuencia>

NEXTVAL se usa para obtener el siguientevalor de la secuencia.

CURRVAL se usa para obtener el ultimo valor de la secuencia.


Sintaxis:

SELECT|INSERT|UPDATE <nombre_secuencia>.CURRVAL|NEXTVAL

SQL
Un sinnimo es un nombre alternativo que identifica un tabla en la base de datos Simplicar el nombre original de la tabla se suelen utilizar para evitar tener que escribir el nombre del propietario de la tabla.
Sintaxis:

CREATE SYNONYM <nombre_sinonimo> FOR (<nombre_tabla>);

Para eliminar el sinnimo creado debemos emplear la sentencia DROP SYNONYM. Sintaxis:

DROP SYNONYM <nombre_sinonimo>;

SQL
Para acceder a tablas o vistas de otra base de datos. Puede provocar problemas de rendimiento.
Sintaxis:

CREATE DATABASE LINK<nombre_dblink> CONNECT TO <nombre_usuario> IDENTIFIED BY <contrasea> USING <cadena_conexion>

SQL
TALLER #1 - CREACION DE TABLAS - MODIFICACION DE TABLAS - ELIMINACION DE TABLAS - CREACION DE INDICES - ELIMINACION DE INDICES - CREACION DE VISTAS - MODIFICACION DE VISTAS - ELIMINACION DE VISTAS

SQL
Su objetivo es manipular los datos de las tablas que componen la base de datos
Acciones:

SELECT: Consulta de datos. UPDATE: Modificacin de datos. INSERT: Insercin de datos. DELETE: Eliminacin de datos.

SQL
Para almacenar datos en la base de datos se deben insertar filas en las tablas. Para este propsito SQL pone a nuestra disposicin la sentencia INSERT. Existen dos formas de insertar filas en una tabla: - Insercin Individual de filas. - Insercin Mltiple de filas. La sintaxis del INSERT es diferente segn el propsito de la insercin.

SQL
Para la insercin individual de filas se usa la sentencia INSERT INTO.
Sintaxis:

INSERT INTO < nombre_tabla > [(<campo1>[,<campo2>,...])] VALUES (<valor1>,<valor2>,...);

Si omite algn campo o valor se pueden producir los siguientes errores:


- Que se produzca un error , si el campo no acepta valores nulos. - Que se grave el registro y se deje nulo el campo, cuando el campo acepte valores nulos. - Que se grave el registro y se tome el valor por defecto, cuando el campo tenga definido un valor por defecto.

SQL
Para la insercin mltiple se la sentencia INSERT junto a la sentencia SELECT.
Sintaxis:

INSERT INTO <nombre_tabla> [(<campo1>[,<campo2>,...])] SELECT [(<campo1>[,<campo2>,...])] FROM <nombre_tabla_origen> ;

Normas para la insercin mltiple: - La lista de campos de las sentencias insert y select deben coincidir en nmero y tipo de datos. - Ninguna de las filas devueltas por la consulta debe infringir las reglas de integridad de la tabla en la que vayamos a realizar la insercin

SQL
Para borrar datos de una tabla se emplea la sentencia SELECT.
Sintaxis:

DELETE FROM <nombre_tabla> [WHERE <nombre_tabla>]; Para el borrado de tablas se debe considerar: - Solo podemos borrar datos de una nica tabla. - Cuando borramos datos de una vista, los estamos borrando tambin de la tabla. - Si intentamos borrar un registro de una tabla referenciada por una FOREING KEY como tabla maestra, si la tabla dependiente tiene registros relacionados la sentencia DELETE fallar

SQL
Se usa para el borrado completo de las tablas.
Sintaxis:

TRUNCATE TABLE<nombre_tabla>; Cuando trabajemos con la sentencia TRUNCATE debemos tener en cuenta las siguientes consideraciones. - La sentencia TRUNCATE no es transaccional. No se puede deshacer. - La sentencia TRUNCATE no admite clausula WHERE. Borra toda la tabla. - No todos los gestores de bases de datos admiten la sentencia TRUNCATE.

SQL
Para la actualizacin de datos SQL dispone la sentencia UPDATE. Permite la actualizacin de uno o varios registros de una tabla.
Sintaxis:

UPDATE<nombre_tabla> SET <campo_1> = <valor_1> {[,<campo2> = <valor2>,...,<campoN> = <valorN>]} [ WHERE <condicion>];

SQL
El uso de subconsultas es una tcnica avanzada de consulta que veremos con detalle ms adelante, pero que tratamos aqu de forma introductoria. Se usa cuando debemos actualizar un campo con la informacin de otra tabla. Su sintaxis es similar a UPDATE con la salvedad que podemos usar subconsultas.
Sintaxis:

UPDATE <nombre_tabla> SET <campo1> = <valor1> | <subconsulta1> {[,<campo2> = <valor2> | <subconsulta2> ,... , <campoN> = <valorN> | <subconsultaN>]} [ WHERE <condicion>];

SQL
COMMIT/ROLLBACK: Permite confirmar o deshacer un lote de transaccin. COMMIT Confirmacin de transaccin ROLLBACK Cancelacin de transaccin
Ejemplo: <SQL> INSERT INTO TABLA_1 VALUES(1, ACT, 01-MAY-2012) <SQL> UPDATE TABLA_1 SET DESCRIPCION = INA WHERE CODIGO = 1 <SQL> INSERT INTO TABLA_1 VALUES(2, ACT, 02-MAY-2012) <SQL> ROLLBACK <SQL> INSERT INTO TABLA_1 VALUES(1, ACT, 01-MAY-2012) <SQL> UPDATE TABLA_1 SET DESCRIPCION = INA WHERE CODIGO = 1 <SQL> INSERT INTO TABLA_1 VALUES(2, ACT, 02-MAY-2012) <SQL> COMMIT

SQL
Permite identificar un punto en una transaccin al cual se podr eventualmente regresar. Ejemplo: <SQL> INSERT INTO TABLA_1 VALUES(1, ACT, 01-MAY-2012) <SQL> SAVEPOINT IN_TABLA_1 <SQL> UPDATE TABLA_1 SET DESCRIPCION = INA WHERE CODIGO = 1 <SQL> SAVEPOINT UP_TABLA_1 <SQL> INSERT INTO TABLA_1 VALUES(2, INA, 02-MAY-2012) <SQL> ROLLBACK TO IN_TABLA_1

SQL
La sentencia SELECT nos permite consultar datos. Formato: SELECT [ALL | DISTINCT] <NOMBRE_CAMPO[{, NOMBRE_CAMPO}] FROM <NOMBRE_TABLA>|<NOMBRE_VISTA> [{,<NOMBRE_TABLA>|<NOMBRE_VISTA>}] [WHERE <CONDICION>{AND|OR <CONDICION>}] [GROUP BY <NOMBRE_CAMPO> [{,<NOMBRE_CAMPO>}]] [HAVING <CONDICION> [{AND|OR]<CONDICION}]] [ORDER BY <NOMBRE_CAMPO>|<INDICE_CAMPO[ASC|DESC]> [{,<NOMBRE_CAMPO>|<INDICE_CAMPO>[ASC|DE SC]}]]

SQL
A continuacin se explica cada una de las partes que conforman la sentencia.
Smbolo SELECT ALL DISTINCT FROM WHERE GROUP BY HAVING Significado Indica que la sentencia SQL a ejecutar es de seleccin. Indica que queremos seleccionar todos los valores. Es el valor por defecto y no suele especificarse casi nunca. Indica que queremos seleccionar los valores distintos Indica la tabla o tablas que queremos recuperar los datos. Indica la/las condiciones que deben cumplirse para la recuperacin de datos. Especifica la agrupacin que se da a los datos. Su funcionamiento es similar al WHERE pero aplicado al conjunto de resultados devueltos por la consulta. Siempre se aplica junto a un GROUP BY. Presenta el resultado ordenado por las columnas indicadas. El orden se puede expresar por ASC y DESC

ORDER BY

SQL
Permite filtrar el resultado de una sentencia select Se pueden utilizar varias condiciones con el uso de AND y OR. Para comparar nmeros y fechas se utilizan los signos: =, <, >, <=, >=, betweenand Para comparar caracteres se usa la palabra like el comodn es el %
Ejemplo: SELECT * FROM <nombre_tabla> WHERE <campo_1> <operacin> <condicin> AND|OR <campo_2> <operacin> <condicin>

SQL
Cualquier columna (NUMBER, VARCHAR2, DATE) puede contener el valor NULL. Una operacin retorna NULL si cualquiera de los operandos es NULL. Para comprobar si un valor es NULL se utiliza el operador IS NULL o IS NOT NULL.
Ejemplo: SELECT * FROM <nombre_tabla> WHERE <campo_1> IS NULL ; SELECT * FROM <nombre_tabla> WHERE <campo_1> IS NOT NULL

SQL
AVG: Promedia los datos de un campo o expresin retornados por una consulta. SUM: Suma los datos de un campo o expresin retornados por una consulta. MIN: Mnimo valor del conjunto de valores contenidos en un campo en una consulta. MAX: Mximo valor del conjunto de valores contenidos en un campo en una consulta.
Ejemplo:

SELECT SUM(<campo_1>|<expr>) AVG(<campo_1>|<expr>) FROM <nombre_tabla> ; SELECT MAX(campo_1) MIN(<campo_1>) FROM <nombre_tabla> ;

SELECT

FROM <nombre_tabla> ; SELECT FROM <nombre_tabla> ;

SQL
Suprime los valores duplicados en una columna (o columnas) seleccionada(s). para toda la fila seleccionada. DISTINCT aplica

Sintaxis:

SELECT DISTINCT (<campo_1>) FROM <nombre_tabla> ;

SQL
Para ordenar los registros obtenidos de una consulta se la clusula ORDER BY default se ejecuta el ordenamiento ascendente (ASC). Por Para ordenamiento descendente se utiliza la palabra (DESC). Se puede ordenar por varias columnas simultneamente
Sintaxis:

SELECT * FROM <nombre_tabla> ORDER BY <campo_1> ASC <campo_2> DESC;

SQL
La informacin de una base de datos se encuentra repartida en varias tablas. Para obtener datos de dos o ms tablas es necesario realizar consultas combinadas o JOINS.

Las consultas combinadas pueden ser de tres tipos:


Combinacin Interna Combinacin Externa Uniones

SQL
Permite mostrar los datos de dos o ms tablas a travs de una condicin WHERE
Sintaxis:

SELECT nombre_tabla_1.campo_1, nombre_tabla_2.campo_2 FROM <nombre_tabla_1>, <nombre_tabla_2> WHERE nombre_tabla1.campo_1 = nombre_tabla_2_campo_1 ;


Sintaxis con INNER JOIN: SELECT nombre_tabla_1.campo_1, nombre_tabla_2.campo_2 FROM <nombre_tabla_1> INNER JOIN <nombre_tabla_2> ON nombre_tabla_1.campo_1 = nombre_tabla_2.campo_1 ;

SQL
La combinacin interna es excluyente.

VENTAS VENTA_ID 1 2 3 4 5 6 CLIENTE_ID 100 105 103 100 105 100

CLIENTE_ID CLIENTE_ID NOMBRE 100 JUAN 101 CLARA 102 LORENA 103 MARIO 104 MARIANA 105 PAMELA

SQL
Se usa cuando se requiere que no se excluyan resultados de la unin de dos tablas.diestra o siniestra. Puede ser
Sintaxis LEFT OUTER JOIN: SELECT nombre_tabla_1.campo_1, nombre_tabla_2.campo_2 FROM <nombre_tabla_1> LEFT OUTER JOIN <nombre_tabla_2> ON nombre_tabla_1.campo_1 = nombre_tabla_2.campo_2 ;
VENTAS VENTA_ID 1 2 3 4 5 6 CLIENTE_ID 100 500 501 100 100 503 CLIENTE_ID CLIENTE_ID NOMBRE 100 JUAN 101 CLARA 102 LORENA 103 MARIO 104 MARIANA 105 PAMELA

SQL
Se usa cuando se requiere que no se excluyan resultados de la unin de dos tablas.diestra o siniestra. Puede ser
Sintaxis con RIGHT OUTER JOIN: SELECT nombre_tabla_1.campo_1, nombre_tabla_2.campo_2 FROM <nombre_tabla_1> RIGHT OUTER JOIN <nombre_tabla_2> ON nombre_tabla_1.campo_1 = nombre_tabla_2.campo_2 ;
VENTAS VENTA_ID 1 2 3 4 5 6 CLIENTE_ID 100 500 501 505 100 100 CLIENTE_ID CLIENTE_ID NOMBRE 100 JUAN 101 CLARA 102 LORENA 103 MARIO 104 MARIANA 105 PAMELA

SQL
Se usa cuando se requiere que no se excluyan resultados de la unin de dos tablas.
Sintaxis LEFT OUTER JOIN:

SELECT nombre_tabla_1.campo_1, nombre_tabla_2.campo_2 FROM <nombre_tabla_1>, <nombre_tabla_2> WHERE nombre_tabla1.campo_1(+) = nombre_tabla_2_campo_1 ; Sintaxis RIGHT OUTER JOIN:
SELECT nombre_tabla_1.campo_1, nombre_tabla_2.campo_2 FROM <nombre_tabla_1> WHERE nombre_tabla1.campo_1 = nombre_tabla_2_campo_1(+) ;

SQL
Une dos o ms conjuntos de resultados uno detrs del otro como si fuese una tabla nica. Normas para utilizar la clusula UNION.
- Las consultas deben tener el mismo nmero de campos - Los campos deben ser del mismo tipo. - Slo puede haber una nica clusula ORDER BY al final del SELECT

SQL
Une dos o ms conjuntos de resultados uno detrs del otro como si fuese una tabla nica.
Ejemplo: SELECT nombre_tabla_1.campo_1, nombre_tabla_2.campo_2, nombre_tabla_2.campo_3 FROM <nombre_tabla_1> INNER JOIN <nombre_tabla_2> ON nombre_tabla_1.campo_1 = nombre_tabla_2.campo_1 UNION ALL SELECT nombre_tabla_1.campo_1, nombre_tabla_2.campo_2, 0 FROM <nombre_tabla_1> INNER JOIN <nombre_tabla_2> ON nombre_tabla_1.campo_1 = nombre_tabla_2.campo_1 ;

SQL
Sentencia SELECT que aparece dentro de otro SELECT.

Normas para utilizar la clusula UNION.


- Las consultas deben tener el mismo nmero de campos - Los campos deben ser del mismo tipo. - Slo puede haber una nica clusula ORDER BY al final del SELECT

SQL
Problemas comunes del Rendimiento. - Instruccin sin o con mala clusula WHERE. - Falta de ndice sobre un campo utilizado como filtro. - Mal diseo de la base de datos. - Problema de Hardware (falta de memoria, disco ocupado, cpu ocupado). - Mala configuracin del servidor. - Mala programacin en el cliente. Falta de commit, conexin no cerrada. - Red sobrecargada o muy lenta.

SQL
Los ndices mejoran el rendimiento de las consultas y por ende del servidor. Contiene los valores de uno o varios campos junto con la informacin de la ubicacin fsica del archivo. Los ndices se usan cuando se busca un valor exacto o un rango de valores. Si se usan funciones no se usar el ndice a menos que exista un ndice basado en funcin

SQL
Base de datos normalizada sin informacin repetida. A veces por razones de rendimiento se tiende a desnormalizar. Desnormalizar: Copiar un valor en una tabla que no le pertenece directamente. tiene un costo de programacin pero permite mejoras del Desnormalizar rendimiento.

SQL
Oracle posee un motor interno que decide el mejor camino en una consulta. Se basa en el conocimiento de los datos, su reparticin y los ndices que existen. Plan permite conocer el camino que Oracle va a usar para en una El Explain consulta. La configuracin lgica y fsica de la base, los ndices, las estadsticas, la cantidad de registros son entre otros los factores que considera Oracle para determinar la mejor camino a seguir. Antes de pasar una consulta a produccin se deberan pasar por el Explain Plain en ambiente de desarrollo para detectar posibles problemas de rendimiento.

SQL
Son indicadores que permiten influir en la decisin del motor de Oracle. Fuerza el uso de un ndice o cambia la manera de clculo de Oracle. Se usan con los comandos SELECT, UPDATE y DELETE. Son la ltima opcin para mejorar el rendimiento de una consulta.
Sintaxis:

SELECT /*+ hint +*/ FROM <nombre_tabla>

SQL
Los optimizer hints afectan la manera de calcular el mejor camino de una consulta. /*+ALL_ROWS+*/ Fuerza a que se utilice el optimizador basado en costes y optimiza el plan de ejecucin para que devuelva todas las filas en el menor tiempo posible. Es una buena opcin para procesos en masas e informes en los que son necesarias para empezar a trabajar con ellas. /*+FIRST_ROWS(n)+*/ Fuerza a que se utilice el optimizador basado en costes y optimiza el plan de ejecucin para que devuelva todas las n primeras filas en el menor tiempo posible. Es preciso para iterativos y bucles en los que se puede ir trabajando con las primeras filas mientras se recuperan el resto de /*+FULL(nombre_tabla)+*/ resultados. Fuerza a que se realice la bsqueda accediendo a todos los registros de la tabla indicada. Cuando son pocos los registros puede resultar bueno para mejorar el rendimiento al forzar un escaneado completo de la tabla en lugar de que el optimizador decida acceder a dicha tabla mediante un ndice.

SQL
Los optimizer hints afectan la manera de calcular el mejor camino de una consulta. /*+ROWID(nombre_tabla)+*/ Fuerza a que acceda a la tabla utilizando el ROWID (identificativo nico de los registros de una tabla). Este tipo de hint, por si solo, no es muy til. /*+INDEX(nombre_tabla [nombre_indice])+*/ Fuerza a que se acceda a la tabla utilizando, en sentido ascendente, el ndice indicado. Muchos problemas de rendimiento vienen causados por el hecho de que el optimizador Oracle decide acceder a una tabla utilizando un ndice incorrecto. Mediante este hint podemos indicarle al optimizador que utilice el ndice que nosotros consideremos adecuado. /*+INDEX_DESC(nombre_tabla [nombre_indice])+*/ Idntico al anterior hint pero en este caso elacceso a travs del ndice se hace en sentido descendente.

SQL
Los optimizer hints afectan la manera de calcular el mejor camino de una consulta. /*+AND_EQUAL(nombre_tabla [nombre_indice])+*/ Este hint se utiliza para forzar el uso de ms de un ndice (se utilizaran los ndices indicados como parmetros) y, despus, fusionar los ndices quedndose con los registros encontrados en todas las bsquedas por ndice realizadas. /*+INDEX_FFS(nombre_tabla [nombre_indice])+*/ Fuerza el acceso a los datos de la tabla mediante una bsqueda (Scan) rpida (Fast) y total (Full) sobre el ndice indicado. Es parecido a utilizar el hint FULL pero sobre un ndice en lugar de una tabla, lo cual, difcilmente, puede ser bueno para el rendimiento de una sentencia DML. /*+NO_INDEX(nombre_tabla [nombre_indice])+*/ Indica al optimizador que no se utilicen los ndices indicados. Puede ser til cuando no tengamos claro cual es el mejor ndice que debe ser utilizado para acceder a una tabla pero, por contra, sepamos que podemos tener problemas de rendimiento si se accede a la tabla por un determinado ndice y queramos evitar que esto ocurra..

SQL
Para ordenar los registros obtenidos de una consulta se la clusula ORDER BY default se ejecuta el ordenamiento ascendente (ASC). Por Para ordenamiento descendente se utiliza la palabra (DESC). Se puede ordenar por varias columnas simultneamente
Sintaxis:

SELECT * FROM <nombre_tabla> ORDER BY <campo_1> ASC <campo_2> DESC;

SQL
Para ordenar los registros obtenidos de una consulta se la clusula ORDER BY default se ejecuta el ordenamiento ascendente (ASC). Por Para ordenamiento descendente se utiliza la palabra (DESC). Se puede ordenar por varias columnas simultneamente
Sintaxis:

SELECT * FROM <nombre_tabla> ORDER BY <campo_1> ASC <campo_2> DESC;