jueves, 24 de enero de 2013

SENTENCIAS SQL AVANZADAS




SUB CONSULTAS 

Las subconsultas son construcciones especiales que dificilmente se podrian realizar con JOIN.
Es una sentencia dentro de otra sentencia, por lo general se utliza dentro del WHERE o inclusive dentro de la lista de seleccion.



Inserciones en múltiples filas

Formas avanzadas

Una característica de SQL (desde SQL-92) es el uso de constructores de filas para insertar múltiples filas a la vez, con una sola sentencia SQL:
INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) 
VALUES (''valor1a'', [''valor1b,...'']), 
(''value2a'', [''value2b,...'']),...;
Esta característica es soportada por DB2, PostgreSQL (desde la versión 8.2), MySQL, y H2.
Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas en la tabla 'agenda_telefonica'):
INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850'), ('Alejandro Sosa', '4556550');
Que podía haber sido realizado por las sentencias
INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850');
INSERT INTO agenda_telefonica VALUES ('Alejandro Sosa', '4556550');
Notar que las sentencias separadas pueden tener semántica diferente (especialmente con respecto a los triggers), y puede tener diferente rendimiento que la sentencia de inserción múltiple.
Para insertar varias filas en MS SQL puede utilizar esa construcción:
INSERT INTO phone_book
SELECT 'John Doe', '555-1212'
UNION ALL
SELECT 'Peter Doe', '555-2323';
Tenga en cuenta que no se trata de una sentencia SQL válida de acuerdo con el estándar SQL (SQL: 2003), debido a la cláusula subselect incompleta.
Para hacer lo mismo en Oracle se usa DUAL TABLE, siempre que se trate de solo una simple fila:
INSERT INTO phone_book
SELECT 'John Doe', '555-1212' FROM DUAL
UNION ALL
SELECT 'Peter Doe','555-2323' FROM DUAL
Una implementación conforme al estándar de esta lógica se muestra el siguiente ejemplo, o como se muestra arriba (no aplica en Oracle):
INSERT INTO phone_book
SELECT 'John Doe', '555-1212' FROM LATERAL ( VALUES (1) ) AS t(c)
UNION ALL
SELECT 'Peter Doe','555-2323' FROM LATERAL ( VALUES (1) ) AS t(c)                                                                                              


Copia de filas de otras tablas


Copia de filas de otras tablas
Un INSERT también puede utilizarse para recuperar datos de otros, modificarla si es necesario e insertarla directamente en la tabla. Todo esto se hace en una sola sentencia SQL que no implica ningún procesamiento intermedio en la aplicación cliente. Un SUBSELECT se utiliza en lugar de la cláusula VALUES. El SUBSELECT puede contener JOIN, llamadas a funciones, y puede incluso consultar en la misma TABLA los datos que se inserta. Lógicamente, el SELECT se evalúa antes que la operación INSERT esté iniciada. Un ejemplo se da a continuación.
INSERT INTO phone_book2
 
SELECT *
FROM phone_book
WHERE name IN ('John Doe', 'Peter Doe')
Una variación es necesaria cuando algunos de los datos de la tabla fuente se está insertando en la nueva tabla, pero no todo el registro. (O cuando los esquemas de las tablas no son iguales.)
INSERT INTO phone_book2 ( [name], [phoneNumber] )
 
SELECT [name], [phoneNumber]
FROM phone_book
WHERE name IN ('John Doe', 'Peter Doe')
El SELECT produce una tabla (temporal), y el esquema de la tabla temporal debe coincidir con el esquema de la tabla donde los datos son insertados.
UPDATE
Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de registros existentes en una tabla.
Ejemplo
UPDATE My_table SET field1 = 'updated value asd' WHERE field2 = 'N';

DELETE


Una sentencia DELETE de SQL borra uno o más registros existentes en una tabla.
Forma básica
SQL="DELETE FROM ''tabla'' WHERE ''columna1'' = ''valor1''"

 
Los diseñadores de base de datos que usan una clave suplente como la clave principal para cada tabla, se ejecutará en el ocasional escenario en el que es necesario recuperar automáticamente la base de datos, generando una clave primaria de una sentencia SQL INSERT para su uso en otras sentencias SQL. La mayoría de los sistemas no permiten sentencias SQL INSERT para retornar fila de datos. Por lo tanto, se hace necesario aplicar una solución en tales escenarios.
Implementaciones comunes incluyen:
  • Utilizando un procedimiento almacenado especifico de base de datos que genera la clave suplente, realice la operación INSERT, y finalmente devuelve la clave generada.
  • Utilizando una sentencia SELECT específica de base de datos, sobre una tabla temporal que contiene la última fila insertada. DB2 implementa esta característica de la siguiente manera:
SELECT *
FROM NEW TABLE ( INSERT INTO phone_book VALUES 
      ( 'Cristobal Jeldrez','0426.817.10.30' ) ) 
  • Utilizando una sentencia SELECT después de la sentencia INSERT con función específica de base de datos, que devuelve la clave primaria generada por el registro insertado más recientemente.
  • Utilizando una combinación única de elementos del original SQL INSERT en una posterior sentencia SELECT.
  • Utilizando un GUID en la sentencia SQL INSERT y la recupera en una sentencia SELECT.
  • Utilizando la función de PHP mysql_insert_id () de MySQL después de la sentencia INSERT.
  • Utilizando un INSERT con la cláusula RETURNING para Oracle, que sólo se puede utilizar dentro de un PL/SQL bloque, en el caso de PostgreSQL se puede usar también tanto con SQL como con PL/SQL.
INSERT INTO phone_book VALUES (‘Cristobal Jeldrez',’0426.817.10.30’)
RETURNING phone_book_id INTO v_pb_id
  • En el caso de MS SQL se puede utilizar la siguiente instrucción
  • SET NoCount ON;
  • INSERT INTO phone_book VALUES (‘Cristobal Jeldrez',’0426.817.10.30’);
  • SELECT @@Identity AS ID 
UN VÍDEO DE EJEMPLO : 


UN LINK PARA QUE REFUERCEN LO EXPLICADO : 

http://www.dataprix.com/oracle-sql-developer

SENTENCIAS SQL PARA RECUPERAR Y EXTRAER INFORMACIÓN DE VARIAS TABLAS

JOINS 

Permite recuperar informacion de varias tablas

INNER JOIN 

Recupera informacion de dos a mas tablas.

SINTAXIS:

SELECT campos FROM tabla 1
INNER JOIN tabla2 ON tabla1. Campo=tabla2. campo

INNER JOIN > Clausula para definir la tabla a relacionar.
ON > Permite establecer la relacion con el campo similar en las dos tablas, por lo general la clave primaria.

EJEMPLO

LEFT JOIN : Es practicamente lo mismo que INNER JOIN, con la diferencia que LEFT JOIN, compara todos los datos de la izquierda con los de la derecha, pero si no existen coincidencias en derecha, los coloca como NULL y muestra los resultados sin importar que existan coincidencias.

CROSS JOIN : Producto cartesiano de todos los registros de las dos tablas, no incluye ON para filtrar los resultados.

CLAUSULAS GROUP BY Y HAVING : Permite obtener grupos de resultados, en la relacion con varias tablas.

EJEMPLO : 


UN LINK PARA QUE REFUERCEN UN POCO MAS SOBRE EL TEMA 

http://www.ajpdsoft.com/modules.php?name=News&file=print&sid=131




USO DE SENTENCIAS SQL

El lenguaje SQL (Structured Query Language) fue desarrollado a principios de los años 70 por técnicos de IBM. Su objetivo consistía en proporcionar a los usuarios sin conocimientos de programación un método para extraer y mostrar la información contenida en una base de datos. Y hacerlo utilizando un lenguaje lo más parecido posible al lenguaje natural (en este caso, el inglés). Así, el lenguaje SQL nos facilita una forma de representar instrucciones como, por ejemplo: "Quiero los nombres y teléfonos de la tabla 'Clientes' ordenados alfabéticamente", o "Borra todos los registros de la tabla Clientes cuyo teléfono esté en blanco".

El lenguaje de consulta de datos (Data Query Language). Obtiene los datos de las tablas y determina el modo en que se presentan los datos. La orden SELECT es la instrucción principal de esta categoría. 
El lenguaje de manipulación de datos (Data Manipulation Language). Proporcionan las órdenes INSERT y DELETE para añadir y borrar registros, y la orden UPDATE, que modifica el valor de los datos.  
Es posible que se pregunte de qué le puede servir a usted el conocimiento del lenguaje SQL (de hecho, ya domina los listados programables, los filtros, los borrados múltiples etc., herramientas suficientes en principio para efectuar consultas a la Base de Datos). 
Conociendo el lenguaje SQL puede llegar incluso más lejos. SQL le puede servir para realizar: 
- Consultas sofisticadas de datos. 
- Informes especiales no contemplados en ninguna de las opciones estándares de la aplicación. 
- Listados que por su complejidad escapan del alcance de los listados programables. 
- Correcciones de datos en casos excepcionales. 
- Actualizaciones masivas de datos 
- etc.

Operadores : Se utilizan para realizar comparaciones entre datos entre otros aspectos se me mencionan a continuación.
se divide en aritméticos, relacionales, lógicos y concatenación.

ARITMÈTICOS


RELACIONALES

 


LÓGICOS

AND Se cumple cuando los dos son verdaderos

OR Se cumple cuando uno de los dos es verdadero 

CONCATENACIÓN        se utliza la sentencia CONCAT(campo1, campo2,....), recuerda que va en el select.


CONSULTAS

Consultas.
La sentencia SELECT se utiliza para obtener un conjunto de registros que puede proceder de una o más tablas. A 
grandes rasgos, la estructura de la instrucción Select es la siguiente (las cláusulas encerradas entre corchetes son 
opcionales): 
SELECT [DISTINCT] lista-de-expresiones 
FROM lista-de-tablas 
[WHERE condición-de-selección] 
[GROUP BY lista-de-columnas] 
[HAVING condición-de-agrupación] 
[ORDER BY lista-de-columnas]

Ejecutando sentencias SQL desde NetBea

ns 6.5.







SENTENCIAS SQL COMO AVG,COUNT,MIN,MAX,SUM, SON MUY ÚTILES PARA TRABAJAR CON AGRUPACIONES :



CONSULTAS CON PREDICADO 

BETTWEEN .... AND > Comprueba si un valor esta dentro de un intervalo, es semejante a AND.

LIKE > Comparara un campo con un carácter y permite el uso de comodines.

IN > Comprueba si un dato de un campo se encuentra dentro de un determinado rango.

SI DESEAN SABER MAS DETALLADO SOBRE SQL ENTREN AL LINK .


http://www.ids.es/descargas/docs/faqs/gene/SentenciasSQL.pdf

miércoles, 23 de enero de 2013

MODELAMIENTO DE BASE DE DATOS

MODELAMIENTO DE BASE DE DATOS

COMO USAR LOS COMANDO DE LA CONSOLA DE MySQL

Un modelo de base de datos es la fundación teórica de una base de datos y fundamentalmente determina de que manera los datos van a ser guardados, organizados y manipulados en un sistema de base de datos. De esta forma, define la infraestructura ofrecida por un sistema de base de datos particular. El ejemplo mas popular de un modelo de base de datos, es el modelo relacional.Los esquemas generalmente son almacenados en un diccionario de datos. Aunque un esquema se defina en un lenguaje de base de datos de texto, el término a menudo es usado para referirse a una representación gráfica de la estructura de la base de datos.
Modelo Entidad-Relación
Formulado por P.P. Chen en 1976
Modelo de datos que representa un esquema de base de datos mediante entidades y asociaciones.
Describe una base de datos de una forma sencilla y global.
Se realiza a partir de los requisitos de datos que debe cumplir una base de datos.
Entidades
Atributo - Característica propia de una entidad, común para todas las ocurrencias del mismo tipo.
Dominio -  Conjunto de valores permitidos para un atributo.
Para cada atributo hay que definir:
Nombre Descripción Dominio
Función (identificación o definición)


Objetivos y alcance de SQL 

a) SQL es un lenguaje estándar(ISO) para definición manipulación en SGBD relacionales. 
b) El DML de SQL es un lenguaje de especificación; es decir, las expresiones definen el resultado esperado, dejando que el SGBD se encargue de resolver el mejor método para ejecutar dicha especificación(optimización de la consulta); estos métodos generados por el subsistema de proceso de consultas se denominan planes de acceso o planes de ejecución de la consulta. 
c) La gramática DML está basada en el cálculo relacional orientado a tuplas. 
d) Permite: 
• Definición de tablas y vistas. 
• Especificar un modelo de seguridad de acceso a los datos (definición de usuarios, niveles de autorización o acceso a los datos). 
• Definir restricciones de integridad declarativa. 
• Especificar transacciones. 
• El DML de SQL puede ser utilizado en lenguajes de programación de propósito general 
como C o Pascal o bien en lenguajes específicos del fabricante (p.ej. PL/SQL en 
ORACLE, TRANSACT SQL en MS-SQL Server).. 

CREATE TABLE 

La estructura de datos soportada por SQL es la tabla como soporte a la definición de una relación del modelo RM/B. 
La instrucción CREATE TABLE sirve para especificar una nueva tabla  
CREATE DOMAIN codigos AS VARCHAR(4) NOT NULL; 
CREATE DOMAIN nombres AS VARCHAR(20); 
CREATE DOMAIN cantidades AS INTEGER; 
CREATE TABLE productos ( 
  Pid   codigos, 
  Pdes   nombres, 
  Ppeso   cantidades, 
  Pprecio cantidades, 
PRIMARY KEY (pid)  ); 

EJEMPLO DE BASE DE DATOS