teoria bases de datos

download teoria bases de datos

If you can't read please download the document

description

teoria basica para diseño de bases de datos y DDL en oracle, mysql y sqlserver incluye codigo para cada uno de los gestores anteriores

Transcript of teoria bases de datos

Presentacin de PowerPoint

Teora BDArnoldo [email protected] una peticin al SGBD para que procese un determinado comando SQL. Esto incluye tanto peticiones de datos como creacin de bases de datos, tablas, modificaciones, inserciones, etc.

existen consultas de:Seleccin - SELECTInsercin - INSERTActualizacin - UPDATEEliminacin - DELETE

Consulta

El lenguaje de consulta estructurado o SQL (por sus siglas en ingls Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas. Una de sus caractersticas es el manejo del lgebra y el clculo relacional que permiten efectuar consultas con el fin de recuperar, de forma sencilla, informacin de bases de datos, as como hacer cambios en ellas.SQLDecimos que hay redundancia de datos cuando la misma informacin es almacenada varias veces en la misma base de datos. Esto es siempre algo a evitar, la redundancia dificulta la tarea de modificacin de datos, y es el motivo ms frecuente de inconsistencia de datos. Adems requiere un mayor espacio de almacenamiento, que influye en mayor coste y mayor tiempo de acceso a los datos.

Redundancia de datos

Slo se produce cuando existe redundancia de datos. La inconsistencia consiste en que no todas las copias redundantes contienen la misma informacin. As, si existen diferentes modos de obtener la misma informacin, y esas formas pueden conducir a datos almacenados en distintos sitios. El problema surge al modificar esa informacin, si slo cambiamos esos valores en algunos de los lugares en que se guardan, las consultas que hagamos ms tarde podrn dar como resultado respuestas inconsistentes (es decir, diferentes). Puede darse el caso de que dos aplicaciones diferentes proporcionen resultados distintos para el mismo dato.

Inconsistencia de datos

Cuando se trabaja con bases de datos, generalmente los datos se reparten entre varios archivos. Si, como pasa con MySQL, la base de datos est disponible para varios usuarios de forma simultnea, deben existir mecanismos que aseguren que las interrelaciones entre registros se mantienen coherentes, que se respetan las dependencias de existencia y que las claves nicas no se repitan.

Integridad de datos

Por ejemplo, un usuario no debe poder borrar una entidad de una base de datos, si otro usuario est usando los datos de esa entidad. Este tipo de situaciones son potencialmente peligrosas, ya que provocan situaciones con frecuencia imprevistas. Ciertos errores de integridad pueden provocar que una base de datos deje de ser usable.

Integridad de datos

Los problemas de integridad se suelen producir cuando varios usuarios estn editando datos de la misma base de datos de forma simultnea. Por ejemplo, un usuario crea un nuevo registro, miestras otro edita uno de los existentes, y un tercero borra otro. El DBMS debe asegurar que se pueden realizar estas tareas sin que se produzcan errores que afecten a la integridad de la base de datos.

Integridad de datos

En la entidad FUERTE debe existir, en la llave primaria, un registro con el mismo valor del campo que se desea ingresar en el entidad DEBIL.

Por ejemplo no podemos ingresar la venta de un producto en FACTURA_DETALLE si no tenemos ingresado el producto en la tabla PRODUCTORESTRICCIN DE INTEGRIDAD REFERENCIALModelos de Datos Conceptuales Modelos de Datos Lgicos Modelos de Datos FsicosModelos de datosModelos de Datos Conceptuales Son los orientados a la descripcin de estructuras de datos y restricciones de integridad. Se usan fundamentalmente durante la etapa de Anlisis de un problema dado y estn orientados a representar los elementos que intervienen en ese problema y sus relaciones. El ejemplo ms tpico es el Modelo Entidad-RelacinModelos de Datos ConceptualesDiagrama entidad - relacin

Modelos de Datos Lgicos Son orientados a las operaciones ms que a la descripcin de una realidad. Usualmente estn implementados en algn Manejador de Base de Datos. El ejemplo ms tpico es el Modelo Relacional, que cuenta con la particularidad de contar tambin con buenas caractersticas conceptuales (Normalizacin de bases de datos). Modelos de Datos LgicosDiagrama Relacional

Modelos de Datos Fsicos Son estructuras de datos a bajo nivel implementadas dentro del propio manejador. Ejemplos tpicos de estas estructuras son los rboles B+, las estructuras de Hash, etc.

Modelos de Datos FsicosLa base de datos implementada en ORACLE

1. Planteamiento del problema2. Diagrama Entidad Relacin3. Traslado a el Diagrama Relacional4. Normalizacin5. Crear la base de datos en el SGBD

Pasos para la creacin de una BD.El proceso de trasladar un problema del mundo real a un computador, usando bases de datos, se denomina modelado.Para el modelado de bases de datos es necesario seguir un procedimiento determinado. Pero, cuando el problema a modelar es sencillo, con frecuencia estaremos tentados de pasar por alto algunos de los pasos, y crear directamente bases de datos y tablas. En el caso de las bases de datos, como en cualquier otra solucin informtica, esto es un gran error. Siempre ser mejor seguir todos los pasos del diseo, esto nos ahorrar (con toda seguridad) mucho tiempo ms adelante. Sobre todo si alguna vez tenemos que modificar la base de datos para corregir errores o para implementar alguna caracterstica nueva, algo que sucede con mucha frecuencia.

Modelos de Datos Conceptuales : diagrama entidad relacinLa primera fase del diseo de una aplicacin (la base de datos, generalmente, es parte de una aplicacin), consiste en hablar con el cliente para saber qu quiere, y qu necesita realmente.Esto es una tarea ardua y difcil. Generalmente, los clientes no saben demasiado sobre programacin y sobre bases de datos, de modo que normalmente, no saben qu pueden pedir. De hecho, lo ms habitual es que ni siquiera sepan qu es lo que necesitan.

Adems de consultar con el cliente, una buena tcnica consiste en observar el funcionamiento del proceso que se quiere informatizar o modelar. Generalmente esos procesos ya se realizan, bien de una forma manual, con ayuda de libros o ficheros; o bien con un pequeo apoyo ofimtico.Con las bases de datos lo ms importante es observar qu tipo de informacin se necesita, y que parte de ella se necesita con mayor frecuencia. Por supuesto, modelar ciertos procesos puede proporcionarnos ayudas extra sobre el proceso manual, pero no debemos intentar que nuestra aplicacin lo haga absolutamente todo, sino principalmente, aquello que es realmente necesario.

Una vez recogidos los datos, el siguiente paso es crear un modelo conceptual. El modelo ms usado en bases de datos es el modelo Entidad-Relacin, que es el que vamos a explicar a continuacin.1. identificar en el planteamiento lo siguiente:ADJETIVOS-> ENTIDADES

SUSTANTIVOS -> ATRIBUTOS

VERBOS -> RELACIONES

Pasos para iniciar un Diagrama E-REN UNA RELACIN ENTRE DOS TABLAS EXISTEN LAS SIGUIENTES CARDINALIDADES:

1. UNO A UNO2. UNO A MUCHOS3. MUCHOS A MUCHOSCARDINALIDADPara definir la carnalidad de una relacin debemos analizar tomando un registro de una tabla A, hacia la otra tabla B y luego tomando un registro de B tabla hacia la A y verificar de acuerdo a los siguientes criterios:1- si en ambos anlisis dio 1 a 1, entonces la relacin es 1:12 si en ambos anlisis dio 1 a muchos entonces la relacin es N:N (muchos a muchos)3. si uno da 1 a M y en el otro 1 a 1, entonces es uno a muchos.

Definir la carnalidad^En esencia, el modelo entidad-relacin (en adelante E-R), consiste en buscar las entidades que describan los objetos que intervienen en el problema y las relaciones entre esas entidades.Todo esto se plasma en un esquema grfico que tiene por objeto, por una parte, ayudar al programador durante la codificacin y por otra, al usuario a comprender el problema y el funcionamiento del programa.

Modelo entidad relacinEntidad: es una representacin de un objeto individual concreto del mundo real.Conjunto de entidades: es la clase o tipo al que pertenecen entidades con caractersticas comunes.Atributo: cada una de las caractersticas que posee una entidad, y que agrupadas permiten distinguirla de otras entidades del mismo conjuntoDominio: conjunto de valores posibles para un atributo.Conceptos generalesInterrelacin: es la asociacin o conexin entre conjuntos de entidades.Grado: nmero de conjuntos de entidades que intervienen en una interrelacin.Clave: es un conjunto de atributos que identifican de forma unvoca una entidad.Clave candidata: es cada una de las claves mnimas existente en un conjunto de entidades.Clave principal: (o primaria), es una clave candidata elegida de forma arbitraria, que usaremos siempre para identificar una entidad.A menudo la clave de una entidad est ligada a la clave principal de otra, an sin tratarse de una interrelacin. Por ejemplo, supongamos una entidad viaje, que usa la clave de un vehculo y aade otros atributos como origen, destino, fecha, distancia. Decimos que la entidad viaje es una entidad dbil, en contraposicin a la entidad vehculo, que es una entidad fuerte. La diferencia es que las entidades dbiles no necesitan una clave primaria, sus claves siempre estn formadas como la combinacin de una clave primaria de una entidad fuerte y otros atributos.

Entidades fuertes y dbiles

decimos que existe una dependencia de existencia entre una entidad, subordinada, y otra, dominante, cuando la eliminacin de la entidad dominante, conlleva tambin la eliminacin de la entidad o entidades subordinadas.Dependencia de existencia:Toda entidad se transforma en una tabla Todo atributo se transforma en una columna dentro de la tabla a la que pertenece El identificador de la entidad se convierte en la clave primaria de la tabla Toda relacin N:M se convierte en una tabla que tendr como clave primaria las dos claves primarias de las entidades que se asocian y llevar el nombre de una de las tablas guion bajo el nombre de la otra tabla, si la nueva tabla es muy comn y tiene un nombre especifico es valido usar este.En las relaciones 1:N la clave primaria de la entidad con cardinalidad 1 pasa a la tabla de la entidad cuya cardinalidad es N Si la cardinalidad de ambas es (1,1) se pasa la clave de cualquiera de ellas a la otra, depende que entidad es dbil y cual es fuerte), en otras palabras a que entidad se le van a ingresar los datos primero.

Paso del modelo ER al relacionalLa llave fornea es el campo de una tabla que hace referencia a la llave primaria de otra tabla. Una tabla que tiene una llave fornea es una entidad dbil ya que depende de la otra tabla , en otras palabras se debe ingresar datos primero a las entidades fuertes y luego a las dbiles hasta llegar a las ms dbiles de todas.

LLAVE FORANEA:

Normalizacin de BDTomado del sito de Microsoft https://support.microsoft.com/en-us/kb/283878/es

La normalizacin es el proceso de organizar los datos de una base de datos. Se incluye la creacin de tablas y el establecimiento de relaciones entre ellas segn reglas diseadas tanto para proteger los datos como para hacer que la base de datos sea ms flexible al eliminar la redundancia y las dependencias incoherentes. Fundamentos de la normalizacin

Los datos redundantes desperdician el espacio de disco y crean problemas de mantenimiento. Si hay que cambiar datos que existen en ms de un lugar, se deben cambiar de la misma forma exactamente en todas sus ubicaciones. Un cambio en la direccin de un cliente es mucho ms fcil de implementar si los datos slo se almacenan en la tabla Clientes y no en algn otro lugar de la base de datos. Qu es una "dependencia incoherente"? Aunque es intuitivo para un usuario mirar en la tabla Clientes para buscar la direccin de un cliente en particular, puede no tener sentido mirar all el salario del empleado que llama a ese cliente.

El salario del empleado est relacionado con el empleado, o depende de l, y por lo tanto se debera pasar a la tabla Empleados. Las dependencias incoherentes pueden dificultar el acceso porque la ruta para encontrar los datos puede no estar o estar interrumpida.

******ojo*****Hay algunas reglas en la normalizacin de una base de datos. Cada regla se denomina una "forma normal". Si se cumple la primera regla, se dice que la base de datos est en la "primera forma normal". Si se cumplen las tres primeras reglas, la base de datos se considera que est en la "tercera forma normal". Aunque son posibles otros niveles de normalizacin, la tercera forma normal se considera el mximo nivel necesario para la mayor parte de las aplicacionesAl igual que con otras muchas reglas y especificaciones formales, en los escenarios reales no siempre se cumplen los estndares de forma perfecta. En general, la normalizacin requiere tablas adicionales y algunos clientes consideran ste un trabajo considerable. Si decide infringir una de las tres primeras reglas de la normalizacin, asegrese de que su aplicacin se anticipa a los problemas que puedan aparecer, como la existencia de datos redundantes y de dependencias incoherentes. El proceso de normalizacin de bases de datos consiste en designar y aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo entidad-relacin al modelo relacional.

Las bases de datos relacionales se normalizan para: Evitar la redundancia de los datos. Disminuir problemas de actualizacin de los datos en las tablas. Proteger la integridad de los datos.

NormalizacinAtomizarVerificar que la llave primaria es nicaVer que no existan campos que solamente sean utilizando por un porcentaje bajo de los registros.

1FNCree tablas independientes para conjuntos de valores que se apliquen a varios registros.Relacione estas tablas con una clave externa.Verifique que no existen las mismas columnas (que signifiquen exactamente lo mismo) en varias tablas, de existir abstraiga una tabla Madre.2FNLos registros no deben depender de nada que no sea una clave principal de una tabla, una clave compuesta si es necesario. Por ejemplo, considere la direccin de un cliente en un sistema de contabilidad. La direccin se necesita en la tabla Clientes, pero tambin en las tablas Pedidos, Envos, Facturas, Cuentas por cobrar y Colecciones. En lugar de almacenar la direccin de un cliente como una entrada independiente en cada una de estas tablas, almacnela en un lugar, ya sea en la tabla Clientes o en una tabla Direcciones independiente.

2FN (cont)Si se encuentran valores que se repiten en una columna, en otras palabras si podemos definir el dominio de dicha columna y este dominio es un conjunto finito y manejable de datos se debe crear un catalogo (Maestro)3FNcumplir la tercera forma normal, aunque en teora es deseable, no siempre es prctico. Si tiene una tabla Clientes y desea eliminar todas las dependencias posibles entre los campos, debe crear tablas independientes para las ciudades, cdigos postales, representantes de venta, clases de clientes y cualquier otro factor que pueda estar duplicado en varios registros. En teora, la normalizacin merece el trabajo que supone. Sin embargo, muchas tablas pequeas pueden degradar el rendimiento o superar la capacidad de memoria o de archivos abiertos. 3FN EXCEPCIN: Ligaduras de Integridad y Restriccionessobre la BDCuando asignamos un tipo de dato a una columna, por ejemplo: texto, fecha, numero entero, numero decimal.Cuando utilizamos Check para determinar el conjunto de valores posibles (dominio) de la columnaUtilizar not nullLigaduras de DominioLos tipos son chequeados autom aticamenteChequeo de valores con check:alter table X add constraint atr1_ck check (atr1_ck in(S,N));Chequeo de Obligatoriedad con not null:alter table X modify atr2 not null;Ejemplos en SQLSe deben imponer sobre la base de datos restricciones de llave primaria (PK) en los atributos llave de las relaciones del modelo relacional.

Por ejemplo para el esquema Ciudad(Codigo,Nombre) se impondra la siguiente restriccin:

ALTER TABLE CIUDADESADD CONSTRAINT CIU_CODIGO_PKPRIMARY KEY(CODIGO);Llaves Primarias (PKs)

En ocasiones es deseable que el valor de un atributo no se repita. Si el atributo es PK, de este chequeo se encarga la BD. De lo contrario debe hacerse explicito por medio de una restriccion de UNIQUE

EJEMPLO:ALTER TABLE CIUDADADD CONSTRAINT CIU_NOMBRE_UKUNIQUE(NOMBRE);Valores nicosSe dice que una tupla (registro, fila) es colgante o hurfana si existe un valor en la llave fornea (entidad dbil) que no existe en la llave primaria de la tabla referenciada (entidad fuerte).Los SGBD no permiten el ingreso de tuplas colgantes, se debe tomar en cuenta que si se desea crear una relacin cuando la BD ya tiene datos el SGBD no permitir crear una llave fornea si van a quedar tuplas colgantes. Para arreglar esa situacin se debe ingresar los valores a la entidad fuerte ANTES de crear la relacin.

Tupla Colgante o HurfanaEn una entidad fuerte no se pueden eliminar las tuplas (registros , filas) si existen tuplas que tengan una relacin, con el valor a eliminar, en la entidad dbil ya que quedaran como tuplas colgadas.En ese caso se deben eliminar primero todas la tuplas en la entidad dbil para luego eliminar las tuplas en la entidad fuerte.Esto se puede evitar configurando la relacin como ON DELETE CASCADE que al momento de eliminar la llave primaria en la entidad fuerte tambin eliminara los registros relacionados por la llave foranea de la entidad(es) debiles.Eliminacin de valoresEn una entidad fuerte no se pueden modificar el valor de la llave primaria si existen tuplas relacionadas en la entidad dbil , ya que quedaran como tuplas colgadas.En ese caso se deben crear un nuevo registro con el nuevo valor de la llave primaria y modificar los valores en cada una de las tuplas de la entidad debil y luego borrar la tupla de la entidad fuerte que contena el valor antiguo.Esto se puede evitar configurando la relacin como ON UPDATE CASCADE, que significa actualizacin en cascada y lo que hace es que al modificar el valor de la llave primaria de la entidad fuerte automticamente se modificaran en cascada los valores de las llaves forneas en las entidades dbiles.Modificacin del valor de la llave primaria en una entidad fuerteAlgebra RelacionalAlgebra relacional se define como un conjunto de operaciones sobre un esquema de BD relacional. Una caracterstica importante de todas las operaciones del lgebra relacional es que tanto los operandos como el resultado son relaciones(tablas). En otras palabras el resultado del algebra relacional da una TABLA TEMPORAL.Definicin de Algebra Relacional**Proyeccin las columnas del SELECT**Seleccin la condicin del WHERE **Combinacin unir las columnas de varias tablas con join**Unin unir las filas de varias tablas con UNIONIntercesin unir tablas con INNER JOINProducto Cartesiano en el FROM poner mas de 2 tablas sin WHERE

Operaciones del algebra relacionalCalculo RelacionalEl Clculo relacional es un lenguaje de consulta que describe la respuesta deseada sobre una Base de datos sin especificar como obtenerla, a diferencia del lgebra relacional que es de tipo procedural, el clculo relacional es de tipo declarativo; pero siempre ambos mtodos logran los mismos resultados.

Calculo RelacionalEl algebra relacional define los elementos de SELECT WHERE y JOIN del SQL.

El calculo relacional es un lenguaje de consulta que adems de las operaciones del algebra relaciona define los elementos de GROUP BY, y las funciones de agregado que sonSUM, AVG, MAX, MIN, COUNT entre otras.Sntesis Calculo y algebra relacionalHASTA AQU EL EXAMEN FINAL DEL MODULO 1El lenguaje de consulta estructurado o SQL (por sus siglas en ingls Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas. Una de sus caractersticas es el manejo del lgebra y el clculo relacional que permiten efectuar consultas con el fin de recuperar, de forma sencilla, informacin de bases de datos, as como hacer cambios en ellas.SQLDDLDATA DEFINITION LANGUAGEDMLDATA MANIPULATION LANGUAGEDCLDATA CONTROL LANGUAGETCLTRANSACTION CONTROL LANGUAGE

SUB LENGUAJES DEL SQLData Manipulation LanguageEste lenguaje permite la manipulacin de los datos almacenados en nuestra BDR.Lo conforman las sentencias:SELECT FROMWHEREINSERTDELETEUPDATEGRUOP BYORDER BYJOINSUNIONFUNCIONES DE AGREGADO

DMLEn un correo electrnico explique cual es la contribucin de Edgar Frank Codd, a las bases de datos relacionales, cual fue el antes y cual es el futuro de las BASES DE DATOS.TAREASe acostumbra escribir las instrucciones SQL en maysculas y los nombres de las tablas y columnas en minsculas o viceversa, se debe mantener dicho formato.Las instrucciones SQL deben terminar con un punto y coma ";"Las cadenas de caracteres se escriben entre comillas dobles o sencillas "texto" 'texto';Se puede escribir el nombre de la tabla punto y el nombre del campo cliente.nombre es el campo nombre de la tabla cliente

SINTAXISDEL SQLCONSULTAS DE SELECCINPARA REALIZAR CONSULTAS DE SELECCIN UTILIZAMOS EL COMANDO SELECT LA SINTAXIS DEL MISMO ES:SELECT campo1,campo2.campoN FROM nombre_de_la_tabla WHERE condicion;SQL DMLSELECT nombre,direccion FROM clientes WHERE nit = 1258748-4;

Esta instruccin muestra los campos nombre y direccion de la tabla clientes donde el nit del cliente es 1258748-4.EjemploOPERADORES LOGICOSANDOPERADOR YOROPERADOR OXOROPERADOR O EXCLUSIVONOTOPERADOR DE NEGACIONOPERADORES EN SQLOPERADORES DE COMPARACIN=IGUAL o != DISTINTOMAYOR QUE>= MAYOR O IGUAL QUE c:\datos\pizza.sql

Restaurarmysqldump -u root -p mac_pizza pizza < c:\datos\pizza.sqlExportar una tablaVER DOCUMENTO ORIGINAL

http://www.desarrolloweb.com/articulos/1202.phpOPCIONES DE MYSQLPara ingresar al cliente de consola de MySQL se abre una ventana de simbolo de sistema: tecla windows + rEscribimos cmd y pulsamos enterEscribimos cd y la ruta donde esta instaldo mysql y de mysql la carpeta "bin"Cliente de consola de MysqlPara ingresar :Una vez se encuentre en la carpeta bin de mysqlmysql u usuario p (enter)password (enter)

para salir:exit; (enter)ComandosSHOW DATABASES;USE nombre_BD;SHOW TABLES;PARA MOSTRAR LA ESTRUCTURA DE LA TABLADESCRIBE nombre_tabla;

MOSTRAR EL CODIGO SQL NECESARIO PARA CREAR LA TABLASHOW CREATE TABLE nombre_tabla;

ComandosCREATE TABLE nombre_tabla(campo1 tipo_dato longitud [NOT NULL], campo2 tipo_dato longitud [NOT NULL]. campoN tipo_dato longitud [NOT NULL], PRIMARY KEY(campo1,campo2campoN));Crear una tablaAgregarALTER TABLE nombre_tabla ADD PRIMARY KEY(campo1, campo2campoN);QuitarALTER TABLE nombre_tabla DROP PRIMARY KEY;Llave primariaAGREGAR UN CAMPOALTER TABLE nombre_tablaADD COLUMN nombre_columna tipo_dato [longitud] [NOT NULL] AFTER nombre_columna;

QUITAR UN CAMPOALTER TABLA nombre_tablaDROP COLUMN nombre_columna

CAMPOSALTER TABLE nombre_tablaMODIFY nombre_columna nuevo_tipo_dato [longitud] [NOT NULL];

ALTER TABLAE nombre_tabla CHANGE nombre_anterior_columna [nuevo_nombre_columna], [nuevo_tipo_de_dato [nueva_longitud]] [NOT NULL];Cambiar un campoRENAME TABLE nombre_antiguo nuevo_nombreCambiar nombre TablaDATA MANIPULATION LANGUAGELENGUAJE DE MANIPULACIN DE DATOS, SUS PRINCIPALES COMANDOS SON:SELECTINSERTDELETEUPDATESHOWDESCRIBE

LENGUAJE DMLEl comando SELECT nos permite realizar la extraccin de columnas de una o varias tablas, tambin nos permite mostrar columnas calculadas u operaciones en una consulta.SELECTCALCULO:SELECT 5*2+3/5;RESULTADO: 10.6

MOSTRAR COLUMNA CALCULADASELECT nombre_cliente, sub_total, (sub_total * .10) as descuento, (sub_total (sub_total*.10))as total FROM factura;

JOIN nos va a permitir es agregar las columnas de una tabla a otra, siempre y cuando se iguale la columna de llave fornea de una tabla con la llave primaria de la otra, en otras palabras debe existir una relacin entre las dos tablas.Se pueden unir con JOIN tablas que no se encuentran relacionadas, pero probablemente el resultado no tenga sentido y no est garantizada la integridad de los datos.

JOIN (unin a nivel de columnas)SELECT nombre_tabla.nombre_campo, nombre_tabla.nombre_campo. nombre_tablaN.nombre_campoN FROM tabla1 JOIN tabla2 ON tabla1.campo. = tabla2.campo.fk JOIN tabla 3 ON tabla2.campo.pk = tablaN.campo.fkProcedimientoSuponiendo que existe las tablas siguientes:ClienteFactura_encabezadoNit_clientenumero_facturaNombreSerieDireccionfecha NIT_cliente (fk)EjemploSELECT cliente.direccion, cliente.nombre, factura_encabezado.fecha, factura_encabezado.numero_factura, factura_encabezado.serie FROM ..Seleccionamos los campos que deseamos mostrarSELECT cliente.direccion, cliente.nombre, factura_encabezado.fecha, factura_encabezado.numero_factura, factura_encabezado.serie FROM cliente JOIN factura_encabezado ON cliente.NIT_cliente = factura_encabezado.NIT_cliente; (SI LO DESAMOS PODEMOS AGREGAR UN WHERE O UN HAVING SI UTILIZAMOS GROUP BY)ESCRIBIMOS LA PALABRA JOIN Y LAS TABLAS QUE SE INCLUYEN EN LA CONSULTACada JOIN crea una nueva tabla, si se desea agregar otra tabla a la consulta la nueva tabla debe estar relacionada con una de la dos tablas del primer join y se repetira el proceso colocando en el ON la comparacin de las llaves de la nueva tabla y la tabla con la que tiene relacion.JOIN DE MAS DE 2 TABLASEn el SELECT agregar las tablas.columnas de la nueva tabla En el FROM agregar un JOIN con la nueva tabla En el ON igualar la llave primaria con la fornea de la nueva tabla y la tabla relacionada

Ejemplo al JOIN anterior le queremos agregar los datos del detalle de facturaDetalle_facturaNumero_facturaSerieCodigo_productocantidadAgregamos la tabla detalle_facturaSELECT cliente.direccion, cliente.nombre, factura_encabezado.fecha, factura_encabezado.numero_factura, factura_encabezado.serie, factura_detalle.codigo_producto,factura_detalle.cantidad FROM cliente JOIN factura_encabezado ON cliente.NIT_cliente = factura_encabezado.NIT_cliente JOIN factura_detalle ON factura_encabezado.numero_factura = factura_detalle.numero_factura AND factura_encabezado.serie = factura_detalle.serie;

SELECT c.direccion, c.nombre, fe.fecha, fe.numero_factura, fe.serie, fd.codigo_producto,fdetalle.cantidad FROM cliente c JOIN factura_encabezado fe ON c.NIT_cliente = fe.NIT_cliente JOIN factura_detalle fd ON fe.numero_factura = fd.numero_factura AND fe.serie = fd.serie;

Acortando la instruccin utilizando aliasSELECT c.direccion, c.nombre, fe.fecha, fe.numero_factura, fe.serie, fd.codigo_producto,fdetalle.cantidad, p.nombre_producto, p.precio FROM cliente c JOIN factura_encabezado fe ON c.NIT_cliente = fe.NIT_cliente JOIN factura_detalle fd ON fe.numero_factura = fd.numero_factura AND fe.serie = fd.serie JOIN producto p on fd.codigo_prodcto = p.codigo_producto;

Agregamos productoSUMSUMAAVGPROMEDIOCOUNTCONTARMAXMAXIMOMINMINIMOSTDEVDESVIACIN ESTNDAR SOBRE TOTALIDAD DE LOS DATOS STDEVP DESVIACIN ESTNDAR SOBRE MUESTRAVARVARIANZA SOBRE LA TOTALIDAD DE LOS DATOSVARPVARIANZA SOBRE MUESTRA AL AZARFunciones de agregado en mysqlGROUP BY va a agrupar filas de acuerdo a una columna y por lo general a se aplica una funcion de agregado.

Por ejemplo: agrupamos por cliente y sumamos laColumna total de los detalles de factura para obtenerLa totalidad de las compras de dicho cliente, se puede utilizar tambien HAVING o WHERE para crear una condicion y filtrar algunas filas.GROUP BYCUANDO UTILIZAMOS UN GROUP BY La instruccin WHERE permite filtrar a nivel de filas, esto quiere decir que la condicion debe ser puesta sobre un elemento de la tablaLa instruccin HAVING permite filtrar a nivel de los grupos formados por el GROUP BY, esto quiere decir que la condicin se basa una columna con una funcion de agregado que fue aplicada al GROUP BY.WHERE y HAVINGSELECT codigo_pelicula,id_categoria, titulo_pelicula, precio FROM peliculaWHERE precio > 75GROUP BY id_categoria HAVING count(id_categoria) > 3;EJEMPLOUna sub consulta es cuando escribimos una o mas consultas dentro de otraA la consulta externa se le llama consulta principaly las dems se llaman sub consultas.Sub consultasExisten dos tipos de sub consultasLas que retornan un conjunto de registros a los que llamamos "record set" SELECT * FROM cliente;

Las que retornan un valor , a las que llamaremos escalar.SELECT max(precio) FROM producto;

Sub consultasEstas consultas, al contener un conjunto de registros, son tomadas como tablas temporales, a las cuales les debemos agregar un alias y debemos escribirlas despues del FROM.La sub consulta de tipo record set pasa a ser una tabla virtual y podemos seleccionar los campos que deseamos mostrar en la consulta principal.Sub consultas de tipo record setSELECT nompizza, precio_costo FROM (SELECT pizza.nompizza,sum((ingrediente.costounidad * receta.cantidad) + (ingrediente.costounidad * receta.cantidad *.50)) as precio_costoFROM pizza JOIN receta ON receta.idpizza = pizza.idpizzaJOIN ingrediente ON receta.idingrediente = ingrediente.idingrediente GROUP BY pizza.nompizza) as precio_pizzaWHERE precio_costo > 40;ejemploUna vista es una tabla virtual derivada de las tablas reales de una base de datos. Las vistas no se almacenan en la base de datos, slo se almacena una definicin de consulta, es decir una vista contiene la instruccin SELECT necesaria para crearla. Resultado de la cual se produce una tabla cuyos datos proceden de la base de datos o de otras vistas. Eso asegura que los datos sean coherentes al utilizar los datos almacenados en las tablas. Si los datos de las relaciones cambian, los de la vista que utiliza esos datos tambin cambia. Por todo ello, las vistas gastan muy poco espacio de disco.

VISTASCREATE VIEW nombre_vista ASINSTRUCCIN_SQL_QUE_GENERA_LA_VISTA;Sintaxis vistaCREATE VIEW precio_pizzaAS SELECT pizza.nompizza,sum(ingrediente.costounidad * receta.cantidad + ingrediente.costounidad * receta.cantidad *.50) as precio_costoFROM pizza JOIN receta ON receta.idpizza = pizza.idpizzaJOIN ingrediente ON receta.idingrediente = ingrediente.idingrediente GROUP BY pizza.nompizza;EJEMPLOEstas sub consultas son las que devuelven un valor, y deben ser escritas como parte de la condicin en el WHERE o en el HAVING.EJEMPLO:Mostrar aquellos productos cuyo precio sea mayor al precio promedioSELECT * from productos WHERE precio > (SELECT AVG(producto.precio)FROM producto) ;SUBCONSULTAS ESCALARESSGBD Sistema Gestor de Bases de Datos

DBMSData Base Magnament SystemSGBD (DBMS)

En bases de datos se denomina ACID a las caractersticas de los parmetros que permiten clasificar las transacciones de los sistemas de gestin de bases de datos. Cuando se dice que es ACID compliant se indica -en diversos grados- que ste permite realizar transacciones.

En concreto ACID es un acrnimo de Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad en espaol.ACIDSGBDSOFTWARE ADMINISTRACIONORACLESQL DEVELOPERPOSTGRESQLPGADMINMYSQLMYSQL WORKBENCHSQL SERVERSQL SERVER MAGNAMENT STUDIOSoftware de administracin para el SGBDSGBDSOFTWARE ADMINISTRACIONORACLESYS, SYSTEMPOSTGRESQLpostgresMYSQLrootSQL SERVERel usuario asignado durante la instalacin y si se activa el modo de sesin mixto el usuario "sa".Super usuarios por SGBDSGBDSOFTWARE ADMINISTRACIONORACLEUsuario, contraseaPOSTGRESQLUsuario, contraseaMYSQLUsuario, contraseaSQL SERVERAutenticacin de Windows y tambin tiene el "Modo Mixto" donde aparte de la autenticacin de Windows podemos crear usuarios y contraseas para equipos que no abren sesin en Windows.Tipos de inicio de sesion por SGBDPara ORACLE una base de datos, es una instancia (Instalacin que se encuentra ejecutndose) de su SGDB.El SGDB de ORACLE contiene un elemento llamado "TABLE SPACE" en el cual creamos las tablas que necesitamos y sus respectivas relaciones, vistas y elementos. Se acostumbra asignar al TABLE SPACE un usuario y que este usuario tenga el mismo nombre del TABLE SPACE.ORACLE SQL DEVELOPERORACLE DMLCREATE TABLESPACE ventasDATAFILE 'C:\oraclexe\app\oracle\oradata\XE\ventas.dbf'SIZE 1024M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;Creacin de un table spaceCREATE USER compras IDENTIFIED BY comprasDEFAULT TABLESPACE comprasQUOTA UNLIMITED ON comprasACCOUNT UNLOCK;Crear un usuario para el tablespace creado anteriormenteGRANT "DBA" TO "COMPRAS" WITH ADMIN OPTION;ALTER USER "COMPRAS" DEFAULT ROLE "DBA";Otorgar permisos de DBA al usuario comprasAlfanumricos (texto) CHAR VARCHAR2 VARCHAR NCHARNVARCHAR2LONG (Obs.)

http://www.tuinformaticafacil.com/oracle-11g/tipos-de-datos-en-oracle-11g

Tipos de datos en oracleNumricos Fecha Binarios OtrosNUMBER DATE RAW ROWIDFLOAT LONGRAW BLOB CLOB NLOB BFILE

Alfanumricos Numricos Fecha Binarios OtrosCHAR NUMBER DATE RAW ROWIDVARCHAR2 FLOAT LONGRAWVARCHAR BLOBNCHAR CLOBNVARCHAR2 NLOBLONG (Obs.) BFILE

Creacin de un diagrama relacin de la base de datos

CREATE TABLE suppliers( supplier_id numeric(4), supplier_name varchar2(50), CONSTRAINT check_supplier_id CHECK (supplier_id BETWEEN 100 and 9999));CHECK EN ORACLESQL SERVERNumricos exactos

bigint

numeric

bit

smallint

decimal

smallmoney

int

tinyint

money

TIPOS DE DATOSfloat real Numricos aproximados

date datetimeoffset datetime2 smalldatetime datetime time Fecha y hora

char varchar text Cadenas de caracteres

nchar nvarchar ntext Cadenas de caracteres Unicode

binary varbinary image Cadenas binarias

cursor timestamp hierarchyid uniqueidentifier sql_variant xml table Otros tipos de datos

Para ver mas detalladamente los tipos de datos:

http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=349Tipos de datosEn la consola escribir:sqlcmd -s DBA-PC

Donde DBA-PC es el nombre de la instancia de SQLSERVER.

Para recuperar acceso a un sql server

LUEGO:

CREATE LOGIN DBA with PASSWORD='12345';GO;-- DONDE DBA es el usuario y 12345 la constrasea

SP_ADDSRVROLEMEMBER 'DBA','SYSADMIN';GO-- Donde SP_ADDSRVROLEMEMBER es un store procedure (procedimiento almacenado) que al usuario DBA le asigna el rol de SYSADMIN.

Ahora iniciamos sesin, con el usuario y password creados, teniendo cuidado de seleccionar "autenticacin de sql server"

Tipos de datos en POSTGRESQL

TAMBIEN EXISTEN LOS TIPOSBOOLEANMONEYProgramacin dentro del SGBDCada SGBD tiene su propio lenguaje de programacin interno, que permite automatizar las tareas comunes y de auditoria de la BD.SGBDLenguajeSQLSERERT-SQLORACLEPL-SQLMYSQLsin nombrePOSTGRESQLPL-PGSQL

LenguajesEXISTEN 3 TIPOS DE OBJETOS PROGRAMABLES:

1. FUNCIONES DEFINIDAS POR EL USUARIO (DBA) 2. PROCEDIMIENTOS ALMACENADOS (STORE PROCEDURE)3. DISPARADORES (TRIGGERS)OBJETOS PROGRAMABLESCada SGBD debe tener capacidad de manejar VariablesFunciones propias del sistemaCursoresPara metros de entrada y salidaLenguaje estructurado

OTROS ELEMENTOSAntes de iniciar a programar debemos tener presente los listados de funciones que ya vienen integradas en los SGBD:Sqlserverhttps://msdn.microsoft.com/es-es/library/ms174318%28v=sql.120%29.aspxORACLE:http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions001.htmMYSQL:http://mysql.conclase.net/curso/index.php?cap=011#

Listos para programar????PROGRMACION MYSQLFUNCIONES TRIGGERSSTORE PROCEDURESUna funcin en MySQL es una rutina creada para tomar unos parmetros, procesarlos y retornar en un salida.Se diferencian de los procedimientos en las siguientes caractersticas:

Solamente pueden tener parmetros de entrada IN y no parmetros de salida OUT o INOUT Deben retornar en un valor con algn tipo de dato definido Pueden usarse en el contexto de una sentencia SQL Solo retornan un valor individual, no un conjunto de registros. Las funciones se utilizan principalmente dentro de un marco Matemtico para ampliar la funciones aritmticas que trae incorporado MYSQL.Funciones en MYSQLDELIMITER //

CREATE FUNCTION iva FLOAT(precio) RETURNS FLOATBEGIN DECLARE resultado FLOAT; SET resultado = precio + precio * .12;RETURN resultado;END//DELIMITER ;FUNCIONES MYSQLLas variables se declaran con DECLARE y se les asigna un valor con SET: DECLARE resultado FLOAT; SET resultado = precio + precio * .12;Manejo de variablesBifurcaciones condicionalesEl condicional simple IF que tenemos en la mayora de los lenguajes de programacin, que puede ser complementado o no con un ELSE para el caso de que no se cumpla. La sintaxis es IF condicin THEN (el ELSE si hace falta) END IF.IF THEN ELSE EN MYSQL IF val = 0 then INSERT INTO tbejemplo VALUES('No disponible'); else INSERT INTO tbejemplo VALUES(val); end IF;IF THEN ELSE EN MYSQLCondicional que nos permite evaluar el valor de una variable y realizar diversas acciones segn varias posibilidades. Es una forma de abreviar un montn de IF anidados. En este caso el ELSE nos permite definir un valor por defecto (como el default en un switch/case de C, Java o PHP):CASE EN MYSQLCASE val when 1 then INSERT INTO prueba VALUES('Suficientes'); when 2 then INSERT INTO prueba VALUES('Reserva'); else INSERT INTO prueba VALUES ('Insuficientes); end case;CASE EN MYSQLWHILE:Un bucle que hace que un procedimiento se repita mientras se de una condicin. Si la condicin ya no se da antes de entrar al bucle, no entra.WHILE EN MYSQLwhile i