martes, 1 de junio de 2010

SENTENCIA JOIN

Join
La sentencia JOIN en SQL permite combinar registros de dos o más tablas en una base de datos relacional.

En el Lenguaje de Consultas Estructurado (SQL), hay tres tipo de JOIN: interno, externo, y cruzado. En casos especiales una tabla puede unirse a sí misma, produciendo una auto-combinación, SELF-JOIN. Matemáticamente, JOIN es composición relacional, la operación fundamental en el álgebra relacional, y generalizando es una función de composición.


Productos Cartesianos

• Un producto Cartesiano se forma cuando:– Una condición de unión está omitida.– Una condición de unión no es válida.– Todas las filas de la primera tabla se unen a todaslas filas de la segunda tabla.• Para evitar un producto Cartesiano, incluya siempreuna condición de unión válida en una cláusula WHERE.

De equivalencia (equi-join) Se usa para comparaciones de igualdad en el predicado JOIN. Cuando se usan operadores, tales como <> no se puede clasificar en este rango.

Ejemplo:
SELECT *FROM empleado INNER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento

Natural (Natural join) Es una combinación de equivalencia se comparan todas las columnas que tengan el mismo nombre en ambas tablas. La tabla resultante contiene sólo una columna por cada par de columnas con el mismo nombre.


SELECT *FROM empleado NATURAL JOIN departamento
Sintaxis de Uniones Externas

• También puede utilizar una unión externa para ver filasque no cumplen la condición de unión.

• El operador de unión externa es el signo más (+).

SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column(+) = table2.column;SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column(+) = table2.column;SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column = table2.column(+);

Creación de Uniones con la Cláusula ON


• La condición de unión para la unión natural esbásicamente una unión de igualdad de todas las columnas con el mismo nombre.• Para especificar condiciones arbitrarias o especificarcolumnas para unir, se utiliza la cláusula ON.• La condición de unión se separa de otras condicionesde búsqueda.• La cláusula ON facilita la comprensión del código.


En este caso se recuperaran datos de la tabla empleados y departamentos haciendo caso espeficio ON sobre los campos en comun que tenga las tablas.


SELECT e.employee_id, e.last_name, e.department_id,d.department_id, d.location_idFROM employees e JOIN departments dON (e.department_id = d.department_id);

A continuacion se veran mas ejemplos de Joins


1. SELECT e.last_name, e.department_id, D.department_nameFROM employees e , departments dWHERE e.department_id = d.department_id;SELECT e.last_name, e.department_id, d.department_nameFROM employees e JOIN departments dON(e.department_id = d.department_id);

2. SELECT e.job_id, l.location_idFROM employees e, departments d, locations lWHERE e.department_id = d.department_idAND d.location_id = l.location_idAND d.department_id=30;SELECT e.job_id, l.location_idFROM employees e JOIN departments dON(e.department_id = d.department_id)JOIN locations lON(d.location_id = l.location_id)AND d.department_id=30;

3. SELECT e.last_name, d.department_name, l.city, l.location_idFROM employees e, departments d, locations lWHERE e.department_id = d.department_idAND d.location_id = l.location_idAND e.commission_pct is not null;SELECT e.last_name, d.department_name, l.city, l.location_idFROM employees e JOIN departments dON (e.department_id = d.department_id)JOIN locations lON (d.location_id = l.location_id)AND e.commission_pct is not null;


4. SELECT e.last_name, d.department_nameFROM employees e, departments dWHERE e.department_id = d.department_idAND e.last_name LIKE '%a%';SELECT E.last_name, D.department_nameFROM employees e JOIN departments dON (e.department_id = d.department_id)AND e.last_name LIKE '%a%';


5. SELECT e.last_name, e.job_id, e.department_id, d.department_nameFROM employees e, departments d, locations lWHERE e.department_id = d.department_idAND d.location_id = l.location_idAND l.city LIKE '%Toronto%';SELECT e.last_name, e.job_id, e.department_id, d.department_nameFROM employees e JOIN departments dON(e.department_id = d.department_id)JOIN locations lON(d.location_id = l.location_id)AND l.city LIKE '%Toronto%';

6. SELECT e.last_name, e.employee_id "EMP#", j.last_name
"Manager",j.employee_id "Mgr#"FROM employees e, employees jWHERE e..manager_id = j.employee_id;SELECT e.last_name, e.employee_id "EMP#", j.last_name
"Manager",j.employee_id "Mgr#"FROM employees e JOIN employees jON(e.manager_id = j.employee_id);

7. SELECT e.last_name, e.employee_id "EMP#", j.last_name "Manager",j.employee_id "Mgr#"FROM employees e, employees jWHERE e..manager_id = j.employee_id(+)ORDER BY e.employee_id ASC;SELECT e.last_name, e.employee_id "EMP#", j.last_name "Manager",j.employee_id "Mgr#"FROM employees e. JOIN employees jON(e.manager_id = j.employee_id(+))ORDER BY e.employee_id ASC;

8. SELECT e.last_name, d.department_id, c.last_nameFROM employees e, employees cWHERE e.department_id = c.department_idAND e.employee_id <> c.employee_id;SELECT e.department_id, e.last_name,c.last_nameFROM employees e JOIN employees cON(e.department_id = c.department_id)AND e.employee_id <> c.employee_id;

9. SELECT e.last_name, j.job_id, d.department_name, e.salary,
j.job_titleFROM jobs j, employees e, departments dWHERE j.job_id = e.job_idAND e.department_id = d.department_id;SELECT e.last_name, j.job_id, d.department_name, e.salary,
j.job_titleFROM jobs j JOIN employees eON (j.job_id = e.job_id) JOIN departments dON (e.department_id = d.department_id);

10. SELECT e.last_name, e.hire_dateFROM employees e, employees cWHERE c.last_name = 'Davies'AND e.hire_date > c.hire_date;SELECT e.last_name, e.hire_dateFROM employees e JOIN employees cON (c.last_name = 'Davies')AND e.hire_date > c.hire_date;

11. SELECT e..last_name "Emp", E.hire_date, J.last_name"Manager",
J.hire_dateFROM employees e , employees j.WHERE e.manager_id = j.employee_idAND e.hire_date < j.hire_date;SELECT e.last_name "Emp", e.hire_date, j.last_name "Manager",
j.hire_dateFROM employees e JOIN employees jON (e.manager_id = j.employee_id)AND e.hire_date <>

jueves, 13 de mayo de 2010

Sentencias SQL

Sentencias SQL

SELECT Recuperación de datos

INSERT Lenguaje de manipulación
UPDATE de datos (DML)
DELETE
MERGE

CREATE Lenguaje de definición
ALTER de datos (DDL)
DROP
RENAME
TRUNCATE

COMMIT Control de transacciones
ROLLBACK
SAVEPOINT

GRANT Lenguaje de control
REVOKE de datos (DCL)
--------------------------------------------------------------------

SELECCION DE TODAS COLUMNAS DE UNA TABLA.

SELECT *
FROM Nombre de la tabla.

SELECCION DE COLUMNAS ESPECIFICAS

Encontramos que podemos seeleccionar columnas de una tabla de una manera especifica separando por (,) utilizando la siguiente sentencia:

SELECT Campo1 (primer nombre), Campo2 (salario)
FROM Empleados

--------------------------------------------------------------------

FORMA ESCRIBIR LA SENTENCIA SQL DE UNA MANERA CORRECTA.

Este aspecto es bien importante ya que cabe notar que las sentencias no son sensibles al bloqueo de mayusculas sin embargo se puede trabajar de forma mas organizada si a las palabras reservadas se inician en mayuscula ejemplo: SELECT-FROM.

Tambien se indica que las palabras clave para realizar la consulta no se pueden dividir ni abreviar de ninguna manera.

--------------------------------------------------------------------
LAS EXPRESIONES ARITMETICAS


Tipo de Operador Descripción
+ Suma
- Resta
* Multiplicación
/ División

--------------------------------------------------------------------

COMO USAR LOS OPERADORES LOGICOS EN LA CONSULTA SQL

Seleccionamos los campos requeridos para realizar la consulta, dentro de la misma seleccion añadimos el operador a describir es preciso determinar que lleva un orden logico o prioridad para realizar la operacion requerida. Ejemplo

SELECT last_name, salary, salary + 300
FROM employees;

Selecciono campo 1 lo separo por (,) con el campo 2 y al campo salario le sumaremos 300.

--------------------------------------------------------------------

Prioridades de Los Operadores

La multiplicación y la división tienen prioridad sobre la suma y la resta. Los paréntesis se utilizan para forzar acciones
prioritarias y para darle claridad a las sentencias.

Los parentesis se usan de la siguiente forma, realizamos la sentencia requerida seleccionando los campos a consultar 12*(salary+100)
en esta peticion multiplicaremos el salario del empleado y le sumaremos 100, claramente y segun la indicacion dada anteriormente y la prioridad de los operadores se realizara primero la multiplicacion y luego de la suma de acuerdo a los valores determinados en la columna salario.
--------------------------------------------------------------------

Crear Alias

• Cambia el nombre de una cabecera de columna.
• Requiere comillas dobles si contiene espacios.

Ejemplo:

SELECT last_name AS name, commission_pct comm
FROM employees;

--------------------------------------------------------------------

Operador de Concatenación


• Concatena columnas o cadenas de caracteres a otras columnas.
• Está representado por dos barras verticales ().
• Crea una columna resultante que es una expresión de caracteres.

Un ejemplo claro con respecto a esta concatenación es indicado a continuación

SELECT last_namejob_id AS "Employees"
FROM employees;

seleccionamos campos; apellidos y mediante el pipe concatenamos los valores seleccionados en el ejemplo dado seria unir el campo del apellido con id_trabajo y mostarlo en una columna que lleve como nombre empleados ejecutando la consulta desde la tabla empleados.

--------------------------------------------------------------------

Uso de Cadenas de Caracteres Literales

SELECT last_name ’ is a ’job_id
AS "Employee Details"
FROM employees;

Este es otro ejemplo claro del uso del pipe para concatenar en este caso el resultado de la consulta permite visualizar desde la tabla empleados los campos como apellido y la descripcion del cargo es decir el emplado 'is a' y el cargo que corresponda en cada fila.
--------------------------------------------------------------------
Se puede obviar en la consulta las filas duplicadas mediante la palabra reservada DISTINC

SELECT DISTINCT department_id
FROM employees;

Esta clausula da como resultada seleccionar el campo departamento-ID desde la tabla empleados y no repite empleados pertenecientes a varios departamentos.
--------------------------------------------------------------------

Condiciones de Comparación

= Igual que
> Mayor que
>= Mayor o igual que
<> No igual a

--------------------------------------------------------------------

USO DE CONDICIONES

Existen varios tipos de condiciones en nuestro modelo dentro de las cuales podemos restringir de forma adecuada nuestra sentencia. a continuacion expondre las mas utilizadas.

Utilice la condición IN de pertenencia para comprobar
si hay valores en una lista.

Utilice la condición LIKE para realizar búsquedas con comodines de valores válidos de la cadena de búsqueda.LIKE ’_o%’;
--------------------------------------------------------------------

Uso de las Condiciones NULL
Compruebe si hay valores nulos con el operador IS NULL.

SELECT last_name, manager_id
FROM employees
WHERE manager_id IS NULL;
Esta sentencia busca determinar quien no tiene jefe ya que realizamos la consulta a la tabla empleados y la restriccion esta dada para el "patron" nulo o que no tiene datos en esa fila.

jueves, 6 de mayo de 2010

PRINCIPIOS BASICOS

ORACLE

Oracle es un sistema de gestión de base de datos relacional (o RDBMS por el acrónimo en inglés de Relational Data Base Management System), desarrollado por Oracle Corporation.

Se considera a Oracle como uno de los sistemas de bases de datos más completos Soporte de transacciones, sus principales características son:

Estabilidad
Escalabilidad
Soporte multiplataforma.

TIPOS DE BASES DE DATOS

Las bases de datos pueden clasificarse de varias maneras, de acuerdo al contexto que se este manejando, o la utilidad de la misma

SEGÚN LA VARIABILIDAD DE LOS DATOS ALMACENADOS

Bases de datos estáticas

Estas son bases de datos de sólo lectura, utilizadas primordialmente para almacenar datos históricos que posteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a través del tiempo, realizar proyecciones y tomar decisiones.

Bases de datos dinámicas

Encontramos bases de datos donde la información almacenada se modifica con el tiempo, permitiendo operaciones como actualización, borrado y adición de datos, además de las operaciones fundamentales de consulta. Un ejemplo de esto puede ser la base de datos utilizada en un sistema de información de una tienda de abarrotes, una farmacia, un videoclub.

SEGÚN EL CONTENIDO

Bases de datos bibliográficas

Solo contienen un surrogante (representante) de la fuente primaria, que permite localizarla. Un registro típico de una base de datos bibliográfica contiene información sobre el autor, fecha de publicación, editorial, título, edición, de una determinada publicación, etc. Puede contener un resumen o extracto de la publicación original, pero nunca el texto completo, porque si no, estaríamos en presencia de una base de datos a texto completo (o de fuentes primarias —ver más abajo). Como su nombre lo indica, el contenido son cifras o números. Por ejemplo, una colección de resultados de análisis de laboratorio, entre otras.


MODELOS DE BASES DE DATOS

Además de la clasificación por la función de las bases de datos, éstas también se pueden clasificar de acuerdo a su modelo de administración de datos.


Un modelo de datos es básicamente una "descripción" de algo conocido como contenedor de datos (algo en donde se guarda la información), así como de los métodos para almacenar y recuperar información de esos contenedores. Los modelos de datos no son cosas físicas: son abstracciones que permiten la implementación de un sistema eficiente de base de datos; por lo general se refieren a algoritmos, y conceptos matemáticos. Algunos modelos con frecuencia utilizados en las bases de datos:

BASES DE DATOS JERÁRQUICAS

Éstas son bases de datos que, como su nombre indica, almacenan su información en una estructura jerárquica. En este modelo los datos se organizan en una forma similar a un árbol (visto al revés), en donde un nodo padre de información puede tener varios hijos. El nodo que no tiene padres es llamado raíz, y a los nodos que no tienen hijos se los conoce como hojas.
Las bases de datos jerárquicas son especialmente útiles en el caso de aplicaciones que manejan un gran volumen de información y datos muy compartidos permitiendo crear estructuras estables y de gran rendimiento.


Una de las principales limitaciones de este modelo es su incapacidad de representar eficientemente la redundancia de datos.

BASE DE DATOS DE RED

Éste es un modelo ligeramente distinto del jerárquico; su diferencia fundamental es la modificación del concepto de nodo: se permite que un mismo nodo tenga varios padres (posibilidad no permitida en el modelo jerárquico).


Fue una gran mejora con respecto al modelo jerárquico, ya que ofrecía una solución eficiente al problema de redundancia de datos; pero, aun así, la dificultad que significa administrar la información en una base de datos de red ha significado que sea un modelo utilizado en su mayoría por programadores más que por usuarios finales.


BASES DE DATOS TRANSACCIONALES

Son bases de datos cuyo único fin es el envío y recepción de datos a grandes velocidades, estas bases son muy poco comunes y están dirigidas por lo general al entorno de análisis de calidad, datos de producción e industrial, es importante entender que su fin único es recolectar y recuperar los datos a la mayor velocidad posible, por lo tanto la redundancia y duplicación de información no es un problema como con las demás bases de datos, por lo general para poderlas aprovechar al máximo permiten algún tipo de conectividad a bases de datos relacionales.

BASES DE DATOS RELACIONALES

Éste es el modelo utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Tras ser postulados sus fundamentos en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos. Su idea fundamental es el uso de "relaciones". Estas relaciones podrían considerarse en forma lógica como conjuntos de datos llamados "tuplas". Pese a que ésta es la teoría de las bases de datos relacionales creadas por Codd, la mayoría de las veces se conceptualiza de una manera más fácil de imaginar. Esto es pensando en cada relación como si fuese una tabla que está compuesta por registros (las filas de una tabla), que representarían las tuplas, y campos (las columnas de una tabla).


El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query Language o Lenguaje Estructurado de Consultas, un estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales. Durante su diseño, una base de datos relacional pasa por un proceso al que se le conoce como normalización de una base de datos. Durante los años 80 la aparición de dBASE produjo una revolución en los lenguajes de programación y sistemas de administración de datos. Aunque nunca debe olvidarse que dBase no utilizaba SQL como lenguaje base para su gestión.



BASES DE DATOS MULTIDIMENSIONALES

Son bases de datos ideadas para desarrollar aplicaciones muy concretas, como creación de Cubos OLAP. Básicamente no se diferencian demasiado de las bases de datos relacionales (una tabla en una base de datos relacional podría serlo también en una base de datos multidimensional), la diferencia está más bien a nivel conceptual; en las bases de datos multidimensionales los campos o atributos de una tabla pueden ser de dos tipos, o bien representan dimensiones de la tabla, o bien representan métricas que se desean estudiar.

BASES DE DATOS ORIENTADAS A OBJETOS
Este modelo, bastante reciente, y propio de los modelos informáticos orientados a objetos, trata de almacenar en la base de datos los objetos completos (estado y comportamiento).
Una base de datos orientada a objetos es una base de datos que incorpora todos los conceptos importantes del paradigma de objetos:

Encapsulación - Propiedad que permite ocultar la información al resto de los objetos, impidiendo así accesos incorrectos o conflictos.


Herencia - Propiedad a través de la cual los objetos heredan comportamiento dentro de una jerarquía de clases.


Polimorfismo - Propiedad de una operación mediante la cual puede ser aplicada a distintos tipos de objetos.


En bases de datos orientadas a objetos, los usuarios pueden definir operaciones sobre los datos como parte de la definición de la base de datos. Una operación (llamada función) se especifica en dos partes. La interfaz (o signatura) de una operación incluye el nombre de la operación y los tipos de datos de sus argumentos (o parámetros). La implementación (o método) de la operación se especifica separadamente y puede modificarse sin afectar la interfaz.

Los programas de aplicación de los usuarios pueden operar sobre los datos invocando a dichas operaciones a través de sus nombres y argumentos, sea cual sea la forma en la que se han implementado. Esto podría denominarse independencia entre programas y operaciones.