Basesdedatos smbd final

50
Facultad de Administración Sistemas Computacionales Administrativos Experiencia: Base De Datos Integrantes: Moreno Baltazar Luís Ángel Pérez Morales Abraham Ramos López Carolina Catedrático: Dr. Carlos Arturo Torres Gastelú Nombre del Trabajo: Sistemas Manejadores de Base de Datos (SMDB) Veracruz, ver a 25 de agosto de 2010.

Transcript of Basesdedatos smbd final

Page 1: Basesdedatos smbd final

Facultad de Administración Sistemas Computacionales Administrativos

Experiencia:

Base De Datos

Integrantes:

Moreno Baltazar Luís Ángel

Pérez Morales Abraham

Ramos López Carolina

Catedrático:

Dr. Carlos Arturo Torres Gastelú

Nombre del Trabajo:

Sistemas Manejadores de Base de Datos

(SMDB)

Veracruz, ver a 25 de agosto de 2010.

Page 2: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 2 de 50 DR. CARLOS A. TORRES GASTELÚ

INDICE

Introduccion ................................................................................................................................ 3 Data Base Management System ................................................................................................ 6 Funciones De Los Sgbd ............................................................................................................. 7 Objetivos De Los Sgbd ............................................................................................................... 8

Ventajas.................................................................................................................................. 9 Desventajas ............................................................................................................................ 9

Diferentes Sistemas Manejadores De Bases De Datos Disponibles En El Mercado ..................10 Sgbd Licencia Academica .........................................................................................................11 Analisis Comparativo Entre Sistemas Libres Y Propietarios ......................................................12 Oracle .......................................................................................................................................15

Elementos Que Permite Manejar Oracle ................................................................................16 Tipos De Datos En Oracle .....................................................................................................18 Restricciones .........................................................................................................................19 Secuencias ............................................................................................................................20 Creacion De Tablas ...............................................................................................................20 Modificaciones .......................................................................................................................21 Tablas Temporales ................................................................................................................21 Limites ...................................................................................................................................22 Indices ...................................................................................................................................22

Sentencia ― Insert ― ................................................................................................................23 Sentencia ― Update ― ..............................................................................................................23 Sentencia ― Delete ― ...............................................................................................................24 Funcion ―Select ~ Where ~ From ~ As ~Order By ~ Between ~ Case ‖ ..................................24 Funciones En Oracle .............................................................................................................27 Consultas Desde Multiples Tablas .........................................................................................31 Instrucción Join ......................................................................................................................32 Funciones De Agregacion ......................................................................................................33 Cursores ................................................................................................................................33 Procedimientos Almacenados ................................................................................................35 Triggers .................................................................................................................................36

Firebird ......................................................................................................................................43 Objetivos ................................................................................................................................43 Historia ..................................................................................................................................43 Características .......................................................................................................................44

Microsoft Sql Server ..................................................................................................................45

My Sql .......................................................................................................................................46 Conclusion ................................................................................................................................49 Bibliografia ................................................................................................................................50

Page 3: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 3 de 50 DR. CARLOS A. TORRES GASTELÚ

INTRODUCCION

ntes de iniciar un trabajo sobre los diferentes Sistemas Gestores de Bases de Datos, debemos tener en cuenta que todos trabajan bajo un mismo lenguaje comun: SQL. Un poco de Historia:

―Los orígenes del SQL están ligados a los de las bases de datos relacionales. En 1970 E. F. Codd propone el modelo relacional y asociado a este un sublenguaje de acceso a los datos basado en el cálculo de predicados. Basándose en estas ideas, los laboratorios de IBM definen el lenguaje SEQUEL (Structured English QUEry Language) que más tarde sería ampliamente implementado por el SGBD experimental System R, desarrollado en 1977 también por IBM. Sin embargo, fue Oracle quien lo introdujo por primera vez en 1979 en un programa comercial. El SEQUEL terminaría siendo el predecesor de SQL, siendo éste una versión evolucionada del primero. El SQL pasa a ser el lenguaje por excelencia de los diversos SGBD relacionales surgidos en los años siguientes y es por fin estandarizado en 1986 por el ANSI, dando lugar a la primera versión estándar de este lenguaje, el SQL-86 o SQL1. Al año siguiente este estándar es también adoptado por la ISO. Sin embargo este primer estándar no cubre todas las necesidades de los desarrolladores e incluye funcionalidades de definición de almacenamiento que se consideraron suprimir. Así que en 1992 se lanza un nuevo estándar ampliado y revisado del SQL llamado SQL-92 o SQL2. En la actualidad el SQL es el estándar de facto de la inmensa mayoría de los SGBD comerciales. Y, aunque la diversidad de añadidos particulares que incluyen las distintas implementaciones comerciales del lenguaje es amplia, el soporte al estándar SQL-92 es general y muy amplio”

A

Page 4: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 4 de 50 DR. CARLOS A. TORRES GASTELÚ

Pasando a ser un poco más concretos, diremos que: El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales permitiendo gran variedad de operaciones sobre los mismos. Es un lenguaje declarativo de alto nivel o de no procedimiento, que gracias a su fuerte base teórica y su orientación al manejo de conjuntos de registros, y no a registros individuales, permite una alta productividad en codificación. De esta forma una sola sentencia puede equivaler a uno o más programas que utilizasen un lenguaje de bajo nivel orientado a registro. SQL, como lenguaje de programación, posee diferentes dialectos o variaciones. Sin embargo existen dos grandes estándares a los que se ciñen los manejadores de bases de datos. Estos estándares son:

Con la evolución del modelo relacional para manejar características propias del paradigma de orientado a objetos (conocido como enfoque post-relacional u objeto-relacional), así como para la descripción de condiciones dinámicas que rigen la evolución de los datos y el almacenamiento de programas; hoy en día existe un esfuerzo de consolidación y adopción de un nuevo estándar conocido como SQL3. Sin embargo, las herramientas comerciales ofrecen algunas de las características novedosas incluidas en este estándar. Las sentencias SQL pertenecen a dos categorías principales:

1. Lenguaje de Definición de Datos, DDL 2. Lenguaje de Manipulación de Datos, DML.

Estos dos lenguajes no son lenguajes en sí mismos, sino que es una forma de clasificar las sentencias de lenguaje SQL en función de su proposito. La diferencia principal reside en que el DDL crea objetos en la base de datos y sus efectos se pueden ver en el diccionario de la base de datos; mientras que el DML es el que permite consultar, insertar, modificar y eliminar la información almacenada en los objetos de la base de datos. Cuando se ejecutan una sentencia DDL, el SGBD confirma la transacción actual antes y después de otras sentencias DDL. En cambio, las sentencias DML no llevan implícito el commit y se pueden deshacer. Existe pues un problema al mezclar sentencias DML con DDL, ya que estas últimas pueden confirmar las primeras de manera involuntaria e implicita, lo que en ocasiones puede ser un problema.

ANSI SQL, que fue propuesto por el Instituto de Estándares Nacionales Americanos (ANSI).

Una actualización del estándar ANSI SQL propuesto en 1992 y conocido como SQL-92 o SQL2

Page 5: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 5 de 50 DR. CARLOS A. TORRES GASTELÚ

A continuación se presenta una tabla con las sentencias SQL más comunes, clasificadas según el lenguaje al que pertenecen.

Sentencia DDL Objetivo

ALTER PROCEDURE

Recompilar un procedimiento almacenado.

ALTER TABLE Añadir o redefinir una columna, modificar la asignación de almacenamiento.

ANALYZE Recoger estadísticas de rendimiento sobre los objetos de la BD para utilizarlas en el optimizador basado en costos.

CREATE INDEX Crear un índice.

CREATE TABLE Crear una tabla.

DROP INDEX Eliminar un índice.

DROP TABLE Eliminar una tabla.

GRANT Conceder privilegios o papeles, roles, a un usuario o a otro rol.

REVOKE Retirar los privilegios de un usuario o rol de la base de datos.

TRUNCATE Eliminar todas las filas de una tabla.

Sentencia DML Objetivo

COMMIT Confirmar como permamentes las modificaciones realizadas.

DELETE Eliminar filas de datos de una tabla.

INSERT Añadir filas de datos a una tabla.

ROLLBACK Deshacer todas las modificaciones realizadas desde la última

confirmación.

SELECT Recuperar datos de una tabla.

UPDATE Modificar los datos de una tabla.

La primera fase de cualquier base de datos comienza siempre con sentencias DDL, ya que antes de poder almacenar información debemos definir los objetos básicos donde agrupar la información. Los objetos básicos con que trabaja SQL son las tablas. Una tabla es un conjunto de celdas agrupadas en filas y columnas donde se almacenan elementos de información.

Una vez que hemos entendido, lo que es el SQL, que es el lenguaje mediante el cual se entienden todas las bases de datos, podemos proceder a ver lo que es los SGBD.

Page 6: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 6 de 50 DR. CARLOS A. TORRES GASTELÚ

DATA BASE MANAGEMENT SYSTEM (DBMS)

n sistema gestor de base de datos, DBMS Por sus siglas en ingles, es un programa, o conjuntos de programas, que permite que cualquier cantidad de usuarios acceda y modifique los datos de una base de datos. A lo largo de los

años, los sistemas de administración de base de datos han aparecido y desaparecido.

Una base de datos o data base es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. En la actualidad, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital (electrónico), que ofrece un amplio rango de soluciones al problema de almacenar datos.

Existen unos programas denominados sistemas gestores de bases de datos,

abreviados SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. Las propiedades de estos SGBD, así como su utilización y administración, se estudian dentro del ámbito de la informática.

El propósito general de los sistemas de gestión de base de datos es el de manejar

de manera clara, sencilla y ordenada un conjunto de datos que posteriormente se convertirán en información relevante para una organización.

U

Page 7: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 7 de 50 DR. CARLOS A. TORRES GASTELÚ

Funciones de los SGBD

LECTURA: Los SGBD deben permitir la lectura e incorporación de datos, independiente de la versión utilizada.

MANIPULACIÓN Y ACTUALIZACIÓN: Los SGBD deben permitir atender las solicitudes del usuario para EXTRAER, CAMBIAR, ADICIONAR Y ACTUALIZAR datos a la BD.

INDEPENDENCIA DE LOS DATOS: Los sistemas actuales permiten aislar al usuario de la complejidad del almacenamiento físico de los datos.

CONTROL DE INTEGRIDAD: No deben haber inconsistencias respecto a la definición y dominios en la estructura de las tablas. ej. el área de una vereda es una expresión numérica (Number) y no textual (String). ej. el valor edad no puede ser negativo.

CONTROL DE REDUNDANCIAS: Minimizar los datos repetidos. Esto facilita la actualización ya que si hay datos repetidos habrá que modificarlos donde cada uno este. Si datos repetidos no se actualizan simultáneamente se generarán inconsistencias y se dice que la BD estará corrupta.

DICCIONARIO DE DATOS: Los SMBD deben incluir una función de diccionario de datos donde se relacione información explicativa acerca de los datos con sus definiciones.

METADATOS: Los datos sobre los datos son los METADATOS. Corresponden a una gran ficha donde se describen la identificación, calidad, distribución y otra información relevante de un conjunto de datos.

SINCRONIZACIÓN: Una BD puede ser usada por dos usuarios al tiempo y es necesario prevenir que se pueda modificar un mismo registro al simultáneamente. Cada usuario debe percibir en tiempo real los arreglos incorporados por el otro usuario.

SEGURIDAD: Se necesita un administrador (una persona /organización/software) que le brinde al sistema diferentes procesos para proteger la información y dar a los usuarios diferentes niveles de acceso.

Page 8: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 8 de 50 DR. CARLOS A. TORRES GASTELÚ

OBJETIVOS DE LOS SGBD

Abstracción de la información. Los SGBD ahorran a los usuarios detalles acerca del almacenamiento físico de los datos. Da lo mismo si una base de datos ocupa uno o cientos de archivos, este hecho se hace transparente al usuario. Así, se definen varios niveles de abstracción.

Independencia. La independencia de los datos consiste en la capacidad de modificar el esquema (físico o lógico) de una base de datos sin tener que realizar cambios en las aplicaciones que se sirven de ella.

Consistencia. En aquellos casos en los que no se ha logrado eliminar la redundancia, será necesario vigilar que aquella información que aparece repetida se actualice de forma coherente, es decir, que todos los datos repetidos se actualicen de forma simultánea. Por otra parte, la base de datos representa una realidad determinada que tiene determinadas condiciones, por ejemplo que los menores de edad no pueden tener licencia de conducir. El sistema no debería aceptar datos de un conductor menor de edad. En los SGBD existen herramientas que facilitan la programación de este tipo de condiciones.

Seguridad. La información almacenada en una base de datos puede llegar a tener un gran valor. Los SGBD deben garantizar que esta información se encuentra segura de permisos a usuarios y grupos de usuarios, que permiten otorgar diversas categorías de permisos.

Manejo de transacciones. Una Transacción es un programa que se ejecuta como una sola operación. Esto quiere decir que luego de una ejecución en la que se produce una falla es el mismo que se obtendría si el programa no se hubiera ejecutado. Los SGBD proveen mecanismos para programar las modificaciones de los datos de una forma mucho más simple que si no se dispusiera de ellos.

Tiempo de respuesta. Lógicamente, es deseable minimizar el tiempo que el SGBD tarda en darnos la información solicitada y en almacenar los cambios realizados.

Page 9: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 9 de 50 DR. CARLOS A. TORRES GASTELÚ

VENTAJAS Proveen facilidades para la manipulación de grandes volúmenes de datos. Entre éstas: Simplifican la programación de equipos de consistencia. Manejando las políticas de respaldo adecuadas, garantizan que los cambios de la

base serán siempre consistentes sin importar si hay errores correctamente, etc. Organizan los datos con un impactó mínimo en el código de los programas. Bajan drásticamente los tiempos de desarrollo y aumentan la calidad del sistema

desarrollado si son bien explotados por los desarrolladores. Usualmente, proveen interfaces y lenguajes de consulta que simplifican la

recuperación de los datos.

DESVENTAJAS

Es necesario disponer de una o más personas que administren de la base de

datos, en la misma forma en que suele ser necesario en instalaciones de cierto

porte disponer de una o más personas que administren de los sistemas

operativos. Esto puede llegar a incrementar los costos de operación en una

empresa. Sin embargo hay que balancear este aspecto con la calidad y

confiabilidad del sistema que se obtiene.

Si se tienen muy pocos datos que son usados por un único usuario por vez y

no hay que realizar consultas complejas sobre los datos, entonces es posible

que sea mejor usar una planilla de cálculo.

Complejidad: el software muy complejo y las personas que vayan a usarlo

deben tener conocimiento de las funcionalidades del mismo para poder

aprovecharlo al máximo.

Tamaño: la complejidad y la gran cantidad de funciones que tienen hacen que

sea un software de gran tamaño, que requiere de gran cantidad de memoria para

poder correr.

Coste del hardware adicional: los requisitos de hardware para correr un SGBD

por lo general son relativamente altos, por lo que estos equipos pueden llegar a

costar gran cantidad de dinero.

Page 10: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 10 de 50 DR. CARLOS A. TORRES GASTELÚ

HERRAMIENTAS

Analizador de logs

Administrador de procesos.

Herramientas para importar y exportar datos.

Herramientas para monitorizar el uso y el funcionamiento de la base de datos.

Programas de análisis estadístico para examinar las prestaciones o las estadísticas de utilización.

Herramientas para reorganización de índices.

DIFERENTES SISTEMAS MANEJADORES DE BASES DE

DATOS DISPONIBLES EN EL MERCADO

SGBD PROPIETARIOS

Advantage Database dBase FileMaker Fox Pro IBM DB2 Universal Database (DB2

UDB) IBM Informix Interbase de CodeGear, filial de

Borland MAGIC Microsoft Access Microsoft SQL Server

NexusDB Open Access Oracle Paradox PervasiveSQL Progress (DBMS) Sybase ASE Sybase ASA Sybase IQ Window Base IBM IMS Base de Datos Jerárquica CA-IDMS

Page 11: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 11 de 50 DR. CARLOS A. TORRES GASTELÚ

SGBD LICENCIAS GNU Y GPL

Microsoft SQL Server Compact Edition Basica Sybase ASE Express Edition para Linux (edición gratuita para Linux) Oracle Express Edition 10 MySQL

SGBD EN WEB

PHP Magic

SGBD LICENCIA ACADEMICA o SQL Server Compact o Adaptive Server Enterprise o Oracle Database Expres 10g

Page 12: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 12 de 50 DR. CARLOS A. TORRES GASTELÚ

ANALISIS COMPARATIVO ENTRE SISTEMAS LIBRES Y PROPIETARIOS

Page 13: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 13 de 50 DR. CARLOS A. TORRES GASTELÚ

Page 14: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 14 de 50 DR. CARLOS A. TORRES GASTELÚ

Page 15: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 15 de 50 DR. CARLOS A. TORRES GASTELÚ

DETALLE DE 4 SGBD SELECCIONADAS

1.- ORACLE

s 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

destacando:

Soporte de transacciones,

Estabilidad,

Escalabilidad y

Soporte multiplataforma.Historia

HISTORIA

Oracle surge a finales de los 70 bajo el nombre de Relational Software a partir

de un estudio sobre SGBD (Sistemas Gestores de Base de Datos) de George Koch.

Computer World definió este estudio como uno de los más completos jamás escritos

sobre bases de datos. Este artículo incluía una comparativa de productos que erigía a

Relational Software como el más completo desde el punto de vista técnico. Esto se

debía a que usaba la filosofía de las bases de datos relacionales, algo que por aquella

época era todavía desconocido.

En la actualidad, Oracle (Nasdaq: ORCL) todavía encabeza la lista. La

tecnología Oracle se encuentra prácticamente en todas las industrias alrededor del

mundo y en las oficinas de 98 de las 100 empresas Fortune 100. Oracle es la primera

compañía de software que desarrolla e implementa software para empresas 100 por

ciento activado por Internet a través de toda su línea de productos: base de datos,

aplicaciones comerciales y herramientas de desarrollo de aplicaciones y soporte de

decisiones. Oracle es el proveedor mundial líder de software para administración de

información, y la segunda empresa de software.

E

Page 16: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 16 de 50 DR. CARLOS A. TORRES GASTELÚ

ELEMENTOS QUE PERMITE MANEJAR ORACLE

Entre los diferentes tipos de objetos que ORACLE permite definir y manipular son: TABLAS: Implementan el concepto de relación del modelo relacional. Toda tabla está conformada por una serie de columnas (implementan el concepto de atributo). Cada columna posee un nombre, un tipo de datos y dependiendo del tipo de datos una longitud. Dos diferencias fundamentales entre el modelo relacional y la implantación de éste en ORACLE son:

o Si no se definen restricciones de integridad de identidad, en una tabla pueden existir filas (tuplas) con los mismos valores para todas sus columnas.

o A pesar de que físicamente se establece un orden entre las tuplas, a nivel lógico

el usuario no es capaz de determinar tal orden. VISTAS: Constituyen una especie de ―tablas virtuales‖, es decir tablas que no existen físicamente y son generadas automáticamente cuando se accede a ellas. Una vista puede ser definida a través de una operación de consulta sobre una o más tablas o vistas de la base de datos. Constraints: Constituyen el mecanismo primordial para especificar ciertas reglas que deben cumplir los datos almacenados en la base de datos. En un sentido amplio, esta construcción está relacionada con aquellas restricciones de integridad derivadas del esquema relacional que se implanta en el SGBD. Por lo tanto, esta construcción puede ser utilizada para definir restricciones de integridad de identidad, restricciones de integridad referencial, restricciones de dominio en las columnas de una tabla o inclusive ciertas restricciones explícitas. Esta construcción se basa en asociar una expresión declarativa que siempre deberá ser cierta en el contexto de la tabla donde se define. SINÓNIMOS: Permiten definir referencias directas a un objeto de la base de datos. A través de los sinónimos se puede permitir el acceso público a un determinado objeto y ocultar el nombre real del objeto. Un usuario puede crear sinónimos que sólo son visibles por él, o hacer que el sinónimo sea de uso público (pueda ser utilizado por otros usuarios de la base de datos). UNIDADES DE PROGRAMA: ORACLE provee cuatro grandes tipos de unidades de programas:

Las funciones, Los procedimientos almacenados (stored procedures), Los triggers Los paquetes (packages).

Page 17: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 17 de 50 DR. CARLOS A. TORRES GASTELÚ

Toda unidad de programa puede ser escrita utilizando SQL y PL/SQL (constituye la forma más común). Tanto las funciones y los procedimientos suelen utilizarse como parte de la definición de un esquema relacional para implementar restricciones de integridad, reglas del negocio o políticas determinadas a ser garantizadas por la base de datos. LOS TRIGGERS son un tipo especial de procedimientos almacenados que se aplican en una o más tablas, siguiendo la teoría de reglas ECA (reglas Evento-Condición-Acción) propias de un paradigma de modelado de bases de datos conocido como Bases de Datos Activas. En tal sentido, y adicionalmente a la especificación de las acciones a realizar, un ―trigger‖ indica: El evento a partir del cual automáticamente se ejecutará la acción indicada. Los eventos que pueden ser especificados pueden resultan de la composición de un tipo de operación (inserción de una fila, modificación de una fila o eliminación UNIQUE (Llave alterna) Evita valores repetidos en una columna, admitiendo valores nulos. Oracle crea un índice automáticamente cuando se habilita esta restricción y lo borra al deshabilitarse. n de una fila) y un instante de tiempo (previo a la ejecución de la operación que se solicita, posterior a la operación que se solicita o en lugar de la operación que se solicita). Packages: proveen un mecanismo sencillo para encapsular y almacenar un grupo de operaciones (funciones y stored procedures) que se encuentran relacionados. En tal sentido pueden ser considerados como construcciones que permiten definir, de alguna forma, la noción de tipos abstractos de datos en la implantación del modelo relacional que hace ORACLE. Enlaces: Son construcciones que permiten asignar nombres a bases de datos diferentes con el fin de proveer la inter-operabilidad entre éstas. Este tipo construcciones se utilizan en los diferentes enfoques de inter-operación de bases de datos (bases de datos federadas, bases de datos distribuidas, etc.) y se escapan de los objetivos de este curso.

Page 18: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 18 de 50 DR. CARLOS A. TORRES GASTELÚ

TIPOS DE DATOS EN ORACLE Los tipos de datos más comunes y sus características en Oracle Express 10g se resumen en la siguiente tabla. Las versiones de Oracle comercial soportan una gama mucho más amplia de tipos de datos.

Tipo de Dato Descripción

BLOB

Contiene datos binarios con un tamaño máximo de 4 gigabytes. Los

datos binarios nos van a permitir guardar en la base de datos archivos,

imagenes, sonidos, etc ...

Casi siempre es preferible guardar la ruta del archivo en la base de datos

en lugar del propio archivo en modo binario, pero existen ciertas

circunstancias en las que no nos queda otra solución.

BINARY_DOUBLE Presición doble

BINARY_FLOAT Presición simple

CLOB

Un tipo de datos CLOB de Oracle contiene datos de caracteres basados

en el juego de caracteres predeterminados del servidor. Su tamaño

máximo es de 4 gigabytes. Se asigna a cadena.

Use la siguiente expresión para una consulta de un campo CLOB

SELECT DBMS_LOB.substr(campo,

DBMS_LOB.getlength(campo),1)

FROM tablaprueba;

CHAR(tamaño) Almacena datos de tipo carácter alfanumérico de longitud fija, con un

tamaño máximo de 2000.

DATE Almacena fechas desde el 1-Ene-4712 AC hasta el 31-Dic-4712 DC.

LONG Datos de tipo carácter alfanumérico de longitud variable con un tamaño

máximo de hasta 2 Gb.

LONG RAW Soporta datos de longitud variable, con un tamaño máximo de 2 Gb.

NUMBER(dig [, dec]) Datos numéricos de n dígitos, de los cuales dec son decimales. El tamaño

máximo es de 38 dígitos.

NVARCHAR Almacena un valor alfanumérico de longitud variable en caracteres

Unicode con las mismas restricciones de varchar.

RAW(tamaño) Datos de longitud variable, con un tamaño máximo de 255 bytes.

TIMESTAMP Fecha y hora (incluidos los segundos), con un tamaño que abarca desde 7

a 11 bytes.

VARCHAR2(tamaño) Guarda datos de tipo carácter alfanumérico de longitud variable, con un

tamaño máximo de 4,000.

Page 19: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 19 de 50 DR. CARLOS A. TORRES GASTELÚ

RESTRICCIONES

Las restricciones de los datos son reglas que se imponen para asegurarnos que los datos cumplen con una serie de condiciones predefinidas para cada tabla. Estas restricciones ayudan a conseguir la integridad referencial: todas las referencias dentro de una Base de Datos son válidas y todas las restricciones se cumplen.

Restricción Descripción

DEFAULT Establece el valor por defecto para esa columna, si no se le asigna ninguno.

CHECK Comprueba que se cumpla una condición determinada al rellenar esa columna. Esta condición sólo debe estar construida con columnas de esta misma tabla.

FOREIGN KEY

El contenido de esta columna será uno de los valores contenidos en una columna de otra tabla maestra. Esta columna marcada como clave foreana o ajena puede ser NULL. No hay límite en el número de claves foreanas. La clave ajena puede ser otra columna de la misma tabla. Se puede forzar que cuando una fila de la tabla maestra sea borrada, todas las filas de la tabla detalle cuya clave ajena coincida con la clave borrada se borren también (borrado en cascada). Esto se consigue añadiendo la clausula ON DELETE CASCADE en la definición de la clave ajena.

NOT NULL

Establece la obligatoriedad de que esta columna tenga un valor no nulo. Se debe especificar junto a la columna a la que afecta. Los valores nulos no ocupan espacio, y son distintos a 0 y al espacio en blanco. Hay que tener cuidado con los valores nulos en las operaciones, ya que 1 * NULL es igual a NULL.

PRIMARY KEY

Conjunto de columnas que forman la clave primaria de esa tabla. Se comporta como única y obligatoria sin necesidad de explicitarlo. Sólo puede existir una clave primaria por tabla. Puede ser referenciada como clave ajena por otras tablas. Crea un índice automáticamente cuando se habilita o se crea esta restricción. En Oracle, los índices son construidos sobre árboles B+.

UNIQUE Evita valores repetidos en una columna, admitiendo valores nulos. Oracle crea un índice automáticamente cuando se habilita esta restricción y lo borra al deshabilitarse.

Page 20: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 20 de 50 DR. CARLOS A. TORRES GASTELÚ

SECUENCIAS ORACLE proporciona los objetos de secuencia para la generación de valores para campos. Las secuencias son una solución fácil y elegante al problema de los campos de autoincremento. La sintaxis general es la siguiente:

CREATE SEQUENCE

<secuence_name>

[MINVALUE <min_val>]

[MAXVALUE <max_val>]

[START WITH <ini_val>]

[INCREMENT BY <inc_val>]

[NOCACHE | CACHE <cache_val>]

[CYCLE]

[ORDER];

CREACION DE TABLAS La sintaxis para crear tablas es:

Donde:

nombre_tabla Nombre de la tabla que se está creando

nombre_columna Nombre del atributo o campo

tipo_dato Tipo de dato del atributo o campo

DEFAULT

expresión

Representa el valor por defecto de un atributo, de

especificar valores de entrada para el atributo

restricción_columna Restricciones a nivel de atributo

restricción_tabla Restricciones compuestas por más de una columna.

CREATE TABLE nombre_tabla (

{nombre_columna tipo_dato [DEFAULT expresión] [restricción_columna] ...

|restricción_tabla}

[,nombre_columna tipo_dato [DEFAULT expresión] [restricción_columna] ...

|restricción_tabla];

);

Page 21: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 21 de 50 DR. CARLOS A. TORRES GASTELÚ

MODIFICACIONES

Otra cualidad del sistema de gestión de Oracle es la posibilidad de modificar las restricciones definidas para una tabla. Esto puede llevar conllevar a ―inconsistencia‖ de los datos ya introducidos en la base de datos. Por ello, Oracle tiene definidos mecanismos para modificación de los datos ya existentes Esta operación se puede realizar con el comando ALTER TABLE.

ALTER TABLE [esquema.]tabla

clausula_constraint [,…]

[ENABLE clausula_activa | DISABLE

clausula_disable]

[{ENABLE|DISABLE} TABLE LOCK]

[{ENABLE|DISABLE} ALL TRIGGERS];

Hay que tener en cuenta varios puntos:

No es posible disminuir el tamaño de una columna, si esta contiene datos.

En las modificaciones, los tipos anterior y nuevo deben ser compatibles, o la tabla debe estar vacía.

La opción ADD ... NOT NULL sólo será posible si la tabla está vacía.

La opción MODIFY ... NOT NULL sólo podrá realizarse cuando la tabla no contenga ninguna fila con valor nulo en la columna en cuestión.

TABLAS TEMPORALES

Además de las tablas de la base de datos permanentes, Oracle permite la creación de tablas temporales para mantener datos propios y exclusivos a una sesión Oracle determinada. Estos datos permanecerán en el sistema sólo durante el tiempo que dure la transacción o sesión involucrada. No obstante, al igual que para las tablas permanentes, la definición de las tablas temporales se almacena en las tablas del sistema. Sus ventajas son varias, la información contenida en ella esta solo disponible para la sesión actual, cualquier inserción, borrado, actualización solo se refleja en la sesión activa. Muchas funcionalidades de cualquier tabla normal se mantienen en ella, como triggers a nivel tabla, vistas, índices, exportar e importar (claro solo la definición de la tabla).

Page 22: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 22 de 50 DR. CARLOS A. TORRES GASTELÚ

LIMITES ORACLE impone los siguientes límites en lo que respecta a los objetos que maneja:

o La longitud de cualquier identificador (nombre de tabla, nombre de columna, nombre de "constraints", entre otros) se limita a un máximo de 30 caracteres.

o El número máximo de columnas que puede tener una tabla es de 1000.

o El número máximo de columnas que pueden constituir una clave primaria, una

clave alterna o una clave foránea es de 16

INDICES Un índice en el Servidor Oracle es un objeto de la base de datos que permite acelerar la recuperación de filas usando una estructura de punteros. Los índices pueden ser creados explícitamente o automáticamente. Si no se tiene un índice sobre la columna, entonces se debe hacer un barrido total de la tabla para una búsqueda. Un índice ofrece acceso rápido y directo a los registros de una tabla. Su propósito es reducir la necesidad de I/O a disco. El índice es automáticamente usado y mantenido por el Servidor Oracle. Una vez que un índice es creado, no se requiere actividad directa del usuario. Los índices son lógica y físicamente independientes de la tabla sobre la que se aplican. Esto significa que pueden ser creados o eliminados en cualquier momento y no tiene efectos sobre la tabla base u otros índices. Dos tipos de índices pueden ser creados.

1. Un tipo es un índice único o unique. El Servidor Oracle crea automáticamente este tipo de índice cuando en una tabla se define una columna que tiene una restricción de PRIMARY KEY o UNIQUE. El índice toma el mismo nombre que la restricción.

2. El otro tipo de índice que un usuario puede crear es un índice no único

(non-unique). Por ejemplo, se puede crear un índice de columna FOREIGN KEY para una operación de unión en una consulta que acelere la respuesta.

Las claves primarias, únicas y secundarias se indexan automáticamente Si la base de datos se usa, en su mayoría, para consulta (lectura), es recomendable utilizar muchos índices, pues se agiliza el rendimiento. Por el contrario si la base de datos se actualiza con frecuencia, conviene añadir el menor número de índices.

Page 23: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 23 de 50 DR. CARLOS A. TORRES GASTELÚ

Cuando elimina una tabla, también se eliminan los índices asociados.

SENTENCIA “ INSERT “

Para insertar datos en una relación, se especifica la tupla que se desea insertar o se formula una consulta cuyo resultado sea el conjunto de tuplas que se desea insertar. Obviamente, los valores de los atributos de las tuplas que se inserten deben pertenecer al dominio de los atributos. De igual modo, las tuplas insertadas deben ser de la aridad -número de atributos- correcta. Un formato posible es:

INSERT INTO nombre-tabla VALUES (serie de valores); El orden en el que se asignen los valores en la cláusula VALUES tiene que coincidir con el orden en que se definieron las columnas en la creación del objeto tabla, dado que los valores se asignan por posicionamiento relativo. Otra forma de usar la sentecia INSERT es:

INSERT INTO nombre-tabla (columna1, columna2.....) VALUES (valor1, valor2....);

En este caso los valores se asignarán a cada una de las columnas mencionadas por posicionamiento relativo. Es necesario que por lo menos se asignen valores a todas aquellas columnas que no admiten valores nulos en la tabla (NOT NULL).

SENTENCIA “ UPDATE “ En determinadas situaciones puede ser deseable cambiar un valor dentro de una tupla, sin cambiar todos los valores de la misma. Para ello se utiliza el comando UPDATE cuya sintaxis se muestra a continuación.

UPDATE tabla SET {columna = expresión,}+ [WHERE condición]; Se especificará en la cláusula SET las columnas que se actualizarán y con qué valores. La cláusula WHERE indica las filas con las que se va a trabajar, si la cláusula WHERE la actualización afectará a todas las filas de la tabla. Actualiza los campos correspondientes junto con los valores que se le asignen, en el subconjunto de filas que cumplan la condición de selección. Sin condición de selección, la actualización se da en todas las filas de la tabla. Si se desea actualizar a nulos, se asignará el valor NULL.

Page 24: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 24 de 50 DR. CARLOS A. TORRES GASTELÚ

SENTENCIA “ DELETE “ Borrará todas las filas que cumplan la condición especificada en la cláusula WHERE. Si esta cláusula se omite, se borrarán todas las filas de la tabla. DELETE borra todas las filas de una tabla, pero no la definición de la tabla del diccionario. Esta es una diferencia con la sentencia DROP TABLE, que elimina el contenido de la tabla y la definición de la misma. La sintaxis es la que sigue:

DELETE FROM tabla [WHERE condición]; Obsérvese que cada comando DELETE sólo opera sobre una relación. Si se desea borrar tuplas de varias relaciones es necesario utilizar una orden DELETE por cada relación.

FUNCION “SELECT ~ WHERE ~ FROM ~ AS ~ORDER

BY ~ BETWEEN ~ CASE ”

La recuperación de los datos en el lenguaje SQL se realiza mediante la sentencia SELECT, seleccionar. Esta sentencia permite indicar al SGBD la información que se quiere recuperar. Esta es la sentencia SQL, con diferencia, más habitual. La sentencia SELECT consta de cuatro partes básicas:

1. La cláusula SELECT seguida de la descripción de lo que se desea ver, los nombres de las columnas a seleccionar. Esta parte es obligatoria.

2. La cláusula FROM seguida de la especificación de las tablas de las que se han de obtener los datos. Esta parte es obligatoria.

3. La cláusula WHERE seguida por un criterio de selección, una condición. Esta parte es opcional.

4. La cláusula ORDER BY seguida por el criterio de ordenación. Esta parte es opcional.

Una primera aproximación a la sintaxis de la sentencia SELECT puede mostrarnos la siguiente expresión:

SELECT {* | {columna,}+} FROM {tabla,}+ [WHERE condición] [ORDER BY {expresiónColumna [ASC | DESC],}+];

Las columnas a seleccionar se enumeran sin más en la cláusula SELECT. Si se desea seleccionar todas las columnas use el carácter asterisco ' *'.

Page 25: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 25 de 50 DR. CARLOS A. TORRES GASTELÚ

Cuando se consulta una base de datos, los nombres de las columnas se usan como cabeceras de presentación. Si éste resulta demasiado largo, corto o críptico, puede cambiarse con la misma sentencia SQL de consulta, creando un alias de columna. La cláusula FROM define las tablas de las que se van a seleccionar las columnas. Se puede añadir al nombre de las tablas el usuario propietario de las mismas de la forma usuario.tabla. De esta manera podemos distinguir entre las tablas de un usuario y otro. Oracle siempre considera como prefijo el nombre del propietario de las tablas, aunque no se lo indiquemos. De esta forma dos o más usuarios pueden tener tablas que se llamen igual sin que surjan conflictos. Un campo calculado o campo derivado es una expresión numérica y que deberá ser referenciada mediante un alias mediante el uso de la cláusula AS, en Oracle está sentencia es opcional. La sentencia SELECT recupera todas las columnas o un subconjunto de ellas de una tabla. Esto afecta a todas las filas de la tabla, a menos que especifiquemos una condición en la cláusula WHERE. Esta condición regresa todas las filas que cumplen dicha condicional. La complejidad del criterio de búsqueda es prácticamente ilimitada, y en él se pueden combinar operadores de diversos tipos con funciones de columnas, componiendo expresiones más o menos complejas.

Condición de búsqueda basada en rango

La condición BETWEEN indica los puntos extremos del rango, y devolverá todos los datos que se encuentren en el rango solicitado. La condición de pertenencia de un conjunto (IN) comprueba si un valor de los datos se corresponde con uno de los valores especificados en una determinada lista La operación más utilizada sobre las cadenas de caracteres es la comparación de patrones, para la que se usa el operador LIKE. Para la descripción de los patrones se utilizan dos caracteres especiales:

% El carácter % coincide con cualquier subcadena de caracteres

_ El carácter _ coincide con cualquier carácter

Page 26: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 26 de 50 DR. CARLOS A. TORRES GASTELÚ

En general, las filas de la tabla resultados de una consulta SQL, no están ordenadas por ningún criterio particular. Sin embargo podemos garantizar que los resultados de la consulta queden ordenados utilizando la cláusula ORDER BY en la instrucción SELECT.

La cláusula ORDER BY está compuesta por una lista de identificadores de columna según los cuales hay que ordenar los resultados, separados por comas. ORDER BY se usa para especificar el criterio de ordenación de la respuesta a la consulta. Por defecto la ordenación es ascendente, aunque se puede especificar un orden descendente (DESC). La ordenación se puede establecer sobre el contenido de columnas o sobre expresiones con columnas. Cuando se realiza una consulta sobre una tabla en la que se extrae información de varias columnas, puede ocurrir que, si no incluimos la/s columna/s que forman la clave principal, obtengamos filas repetidas en la respuesta. Si este comportamiento es no satisfactorio podemos utilizar la cláusula DISTINCT para eliminar las filas duplicadas obtenidas como respuesta a una consulta. La expresión CASE permite utilizar la lógica IF-THEN-ELSE en sentencias SQL sin tener que invocar procedimientos. Esta expresión se incluye a partir de la versión Oracle9i Server. La siguiente es la sintaxis que presenta la expresión CASE:

SELECT campos,

CASE expresión WHEN Comparación_1 THEN

return_expresión_1

[ WHEN Comparación_2 THEN return_expresión_2

WHEN Comparación_n THEN return_expresión_n

ELSE else_expresión]

END

FROM tabla

Todas estas funciones, son usadas al momento de hacer una consulta usando la funcion SELECT, y pueden o no usarse, depende las necesidades de cada usuario.

Page 27: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 27 de 50 DR. CARLOS A. TORRES GASTELÚ

FUNCIONES EN ORACLE

Existen en ORACLE muchas funciones que pueden complementar el manejo de los datos en las consultas. Se utilizan dentro de las expresiones y actuan con los valores de las columnas, variables o constantes. Se pueden incluir en las clásulas SELECT, WHERE y ORDER BY. Pueden anidarse funciones dentro de funciones. Y existe una gran variedad de funciones para cada tipo de datos:

Aritméticas Cadenas de caracteres,

Manejo de fechas,

Conversión,

Funciones Aritméticas

Función Descripción

ABS(n) Valor absoluto de n.

CEIL(n) Entero inmediatamente superior o igual a n.

FLOOR(n) Entero inmediatamante inferior o igual a n.

MOD(m, n) Resto de la división de m por n

NVL(val, exp) Devuelve la expresión exp si val es NULL, y val si en otro caso.

POWER(m, n) Calcula la potencia n-esima de m.

ROUND(m, n)

Calcula el redondeo de m a n decimales. Si n< 0 el redondeo se efectua por la izquierda del punto decimal.

SIGN(n) Calcula el signo de n, devolviendo -1 si n < 0, 0 si n = 0 y 1 si n > 0.

SQRT(n) Raíz cuadrada de n.

TRUNC(m, n) Calcula m truncado a n decimales (n puede ser negativo).

Page 28: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 28 de 50 DR. CARLOS A. TORRES GASTELÚ

Funciones de Cadenas de Caracteres

Función Descripción

ASCII(cadena) Devuelve el valor ASCII de cadena.

CHR(n) Devuelve el carácter cuyo valor codificado es n.

CONCAT(c1, c2) Concatenada c1 con c2. Es equivalente al operador ||.

INITCAP(cadena) Regresa cadena con el primer carácter en mayúsculas.

LENGTH(cadena) Devuelve la longitud de cadena.

LOWER(cadena) Retorna la cadena con todas sus letras en minúsculas.

LPAD(c1, n, c2) Devuelve c1 con longitud n, y ajustada a la derecha, rellenando por la izquierda con c2.

REPLACE(c1,c2,c3) Devuelve c1 en la que cada ocurrencia de la cadena c2 ha sido sustituida por la cadena c3.

RPAD(c1, n, c2) Devuelve c1 con longitud n, y ajustada a la izquierda, rellenando por la derecha con c2.

RTRIM(c1 [, n])

c1 es una cadena que se desea compactar por la derecha. n son los caracteres individuales que se eliminaran del lado derecho. Si se omite n eliminara todos los espacios en blanco

SUBSTR(c1, m, n) Devuelve la sudcadena de c1 compuesta por n caracteres a partir de la posición m.

TRANSLATE (c1, c2, c3) Convierte caracteres de una cadena en caracteres diferentes, según un plan de sustitución marcado por el usuario.

UPPER(cadena) Convierte la cadena con todas sus letras en mayúsculas.

Page 29: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 29 de 50 DR. CARLOS A. TORRES GASTELÚ

Funciones de Manejo de Fechas:

Oracle almacena fechas en un formato numérico interno de 7 bytes: Siglo, año, mes, día, horas, minutos, segundos

El formato de fecha por defecto es DD-MON-YY SYSDATE es una función que devuelve fecha y hora (pseudocolumna del sistema) DUAL es una tabla virtual de la BD, que puede ser usada para inspeccionar SYSDATE. Operadores aritméticos de fechas:

Sumar o restar un número y/o de una fecha da por resultado una fecha. Restar dos fechas para encontrar la cantidad de días entre esas fechas. Sumar horas a una fecha dividiendo la cantidad de horas por 24.

Función Descripción

ADD_MONTHS(d, n) Fecha d incrementada en n meses.

EXTRACT

Extrae un valor de fecha o de intervalo de tiempo.

EXTRACT ( { YEAR | MONTH | DAY | HOUR |

MINUTE | SECOND } | { TIMEZONE_HOUR |

TIMEZONE_MINUTE } | { TIMEZONE_REGION |

TIMEZONE_ABBR } FROM { date_value | interval_value

} )

LAST_DAY(d) Fecha del último día del mes d.

MONTHS_BETWEEN(d1, d2) Diferencia en meses entre las fechas d1 y d2.

NEXT_DAY(d, cad) Próxima fecha para el día de la semana cad (Domingo, lunes...) después de la fecha d.

SYSDATE Fecha actual.

SELECT SYSTIMESTAMP FROM dual; Fecha y ahora actual

Page 30: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 30 de 50 DR. CARLOS A. TORRES GASTELÚ

Funciones de Conversión de Tipo

Función Descripción

TO_NUMBER(cad, [fmto]) Convierte la cadena cad a un número, opcionalmente de acuerdo con el formato fmto. El formato es opcional

TO_CHAR(d [, fmto]) Convierte la fecha d a una cadena de carácteres, opcionalmente de acuerdo con el formato fmto.

TO_DATE(cad, fmto) Convierte la cadena cad de tipo varchar2 a fecha, opcionalmente de acuerdo con el formato fmto.

Con las fechas pueden utilizarse varios formatos. Estos formatos permiten modificar la presentación de una fecha. En la siguiente tabla se presentan algunos formatos de fecha y el resultado que generan.

Máscaras de Formato Numéricas:

Formato Descripción

cc ó scc Valor del siglo.

y, yyy ó sy, yyy Año con coma, con o sin signo.

yyyy ó yyy ó yy ó y Año sin signo con cuatro, tres, dos o un dígitos.

q Trimestre.

ww ó w Número de la semana del año o del mes.

mm Número del mes.

ddd ó dd ó d Número del día del año, del mes o de la semana.

hh ó hh12 ó hh24 La hora en formato 12h. o 24h.

mi Los minutos de la hora.

ss ó sssss Los segundos dentro del minuto, o desde las 0 horas.

syear ó year Año en Inglés

month o mon Nombre del mes o su abreviatura de tres letras.

day ó dy Nombre del día de la semana o su abreviatura de tres letras.

a.m. ó p.m. El espacio del día.

b.c. ó a.d. Indicador del año respecto al del nacimiento de Cristo.

Page 31: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 31 de 50 DR. CARLOS A. TORRES GASTELÚ

CONSULTAS DESDE MULTIPLES TABLAS

Reglas de Combinación:

Pueden combinarse tantas tablas como se desee.

El criterio de combinación puede estar formado por más de una pareja de columnas.

En la cláusula SELECT pueden citarse columnas de ambas tablas, condicionen

o no la combinación.

Si hay columnas con el mismo nombre en las distintas tablas, deben identificarse especificando la tabla de procedencia o utilizando un alias de tabla.

SUBCONSULTAS

Una subconsulta es aquella consulta de cuyo resultado depende otra consulta, llamada principal, y se define como sentencia SELECT que está incluida en la orden WHERE de la consulta principal. Una subconsulta es una instrucción SELECT anidada dentro de una instrucción SELECT, SELECT...INTO, INSERT...INTO, DELETE, o UPDATE o dentro de otra subconsulta. Una subconsulta, a su vez, puede contener otra subconsulta y así hasta un máximo de 16 niveles. Las particularidades de las subconsultas son:

a)

Su resultado no se visualiza, sino que se pasa a la consulta principal para su comprobación.

b)

Puede devolver un valor único o una lista de valores y en dependencia de esto se debe usar el operador del tipo correspondiente.

c) No puede usar el operador BETWEEN, ni contener la orden ORDER BY.

d)

Puede contener una sola columna, que es lo más común, o varias columnas.Este último caso se llama subconsulta con columnas múltiples. Cuando dos o más columnas serán comprobadas al mismo tiempo, deben encerrarse entre paréntesis.

Page 32: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 32 de 50 DR. CARLOS A. TORRES GASTELÚ

Las subconsultas pueden devolver más de una columna, y se habrán de comparar de manera consecuente:

Las columnas de la cláusula WHERE de la consulta principal deben estar agrupadas por paréntesis.

Las columnas encerradas entre paréntesis deben coincidir en número y tipo de

datos con los datos que devuelve la subconsulta. Se puede utilizar una subconsulta para insertar valores en una tabla en el momento de la creación de la misma con la cláusula AS.

INSTRUCCIÓN JOIN

La instrucción JOIN sirve para unir dos tablas en base a un criterio, el cual generalmente es un campo llave. Es una operación que combina registros de dos tablas en una base de datos relacional que resulta en una nueva tabla (temporal) llamada tabla de JOIN. En el lenguaje de consulta SQL hay dos tipos de JOIN: INNER y OUTER. Como caso especial, una tabla (tabla base, vista o una tabla JOIN) puede realizar la operación JOIN sobre ella misma otra vez. Esto se conoce como self-JOIN. Matemáticamente, un JOIN es una relación de composición. Estas son las operaciones fundamentales en el álgebra relacional.

Page 33: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 33 de 50 DR. CARLOS A. TORRES GASTELÚ

FUNCIONES DE AGREGACION Las funciones de agregación o agrupamiento son funciones que toman una colección de valores y devuelven como resultado un único valor. Las funciones de agrupamiento que se pueden utilizar en Oracle son las siguientes.

Función Cometido

AVG(col) Promedio de todos los valores de la columna col.

COUNT(col) Cuenta el número de filas agrupadas.

MAX(col) Valor máximo de todos los valores de la columna col.

MIN(col) Calcula el valor mínimo de todos los valores de la columna col.

SUM(col) Suma de los valores de la columna col.

STDDEV(col) Desviación estándar de los valores de la columna col.

VARIANCE(col) Varianza de los valores de la columna col

Observe que los valores nulos no participan en el cálculo de las funciones de conjuntos. Estas funciones se pueden utilizar con las cláusulas DISTINCT y ALL. También se pueden utilizar aunque no realicemos agrupación alguna en la consulta, considerando a toda la tabla como un grupo.

CURSORES

Los cursores se utilizan en PL/SQL para manejar las sentencias SELECT. Un cursor está formado por un conjunto de registros devueltos por una instrucción SQL del tipo SELECT. Desde un punto de visto interno a la base de datos Oracle, los cursores son segmentos de memoria utilizados para realizar operaciones con los registros devueltos tras ejecutar una sentencia SELECT. Reciben el nombre de cursores implícitos, cuando la sentencia SELECT regresa solo un registro. Para procesar instrucciones SELECT que devuelvan más de una fila, son necesarios cursores explicítos combinados con un estructura de bloque. Un cursor admite el uso de parámetros. Los parámetros deben declararse junto con el cursor.

Page 34: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 34 de 50 DR. CARLOS A. TORRES GASTELÚ

El siguiente diagrama representa como se procesa una instrucción SQL a través de un cursor.

Cursores implícitos

Se utilizan cuando la sentencia SELECT devuelve un solo registro. En cada cursor implicito debe existir palabra reservada INTO. Las variables que reciben los datos devueltos por el cursor tienen que contienen el mismo tipo de dato que las columnas de la tabla.

Cursores explícitos

Se utilizan cuando la sentencia SELECT puede devolver varios registros. También se pueden utilizar en consultas que devuelvan un solo registro por razones de eficiencia con respecto a los cursores implícitos, eficiencia que mejorará especialmente si el cursor explícito se tiene que ejecutar varias veces dentro del bloque de código PL/SQL. Un cursor explícito tiene que ser definido previamente como cualquier otra variable PL/SQL y debe serle asignado un nombre. Veamos un ejemplo que muestra el nombre de los jugadores que participaron en todos los minutos del Torneo Apertura 2008, posición y goles anotados o recibidos: Los cursores explícitos admiten el uso de parámetros. Los parámetros deben declararse junto con el cursor. Por ejemplo: Considere a los jugadores del apertura 2008 del Futbol Mexicano de primera división que jugaron todos los minutos y además anotaron al menos un gol.

Page 35: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 35 de 50 DR. CARLOS A. TORRES GASTELÚ

Al trabajar con cursores debemos considerar:

Es necesario abrir el cursor para poderlo leer. El resultado de la lectura de un cursor se puede comprobar usando los

o atributos de cursores. Cuando se cierra el cursor, es ilegal tratar de usarlo. Es ilegal tratar de cerrar un cursor que ya está cerrado o no ha sido abierto Por medio de ciclo LOOP podemos iterar a través del cursory debe agregarse

una condición para salir del bucle: Toman los valores TRUE, FALSE o NULL dependiendo de la situación:

PROCEDIMIENTOS ALMACENADOS Un procedimiento es un subprograma que ejecuta una acción específica y que no devuelve ningún valor. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código. La sintaxis de un procedimiento almacenado es la siguiente:

CREATE [OR REPLACE]

PROCEDURE <nombre_procedure> [(<param1> [IN|OUT|IN OUT] <type>,

<param2> [IN|OUT|IN OUT] <type>, ...)]

IS

-- Declaración de variables locales

BEGIN

-- Sentencias

[EXCEPTION]

-- Sentencias control de excepción

END [<nombre_procedure>];

Al especificar el tipo de dato del parámetro no debemos especificar la longitud del tipo. Los parámetros pueden ser de entrada (IN), de salida (OUT) o de entrada salida (IN OUT). El valor por defecto es IN, y se toma ese valor en caso de que no especifiquemos nada. También es posible usar cursores dentro de un procedimiento almacenado.

Page 36: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 36 de 50 DR. CARLOS A. TORRES GASTELÚ

TRIGGERS Un disparador (o trigger) es un tipo especial de procedimiento almacenado asociado a una tabla que se ejecuta al realizar una operación ―básica‖ (INSERT, un DELETE o un UPDATE) sobre ésta. La operación básica que despierta al trigger es conocida como sentencia disparadora. La ejecución del disparador puede ser antes (before) o después (after) de llevar a cabo la sentencia disparadora. Es posible especificar condiciones adicionales para la ejecución del disparador (restrictores). Dado que una sentencia disparadora puede afectar una o más filas de una tabla, es necesario especificar si se quiere que el disparador se ejecute para cada una de las filas afectadas o para el bloque en general. Para diseñar un disparador hay que cumplir dos requisitos:

1. Especificar las condiciones en las que se va a ejecutar el disparador. Esto se descompone en un evento que causa la comprobación del disparador y una condición que se debe cumplir para ejecutar el disparador.

2. Especificar las acciones que se van a realizar cuando se ejecute el disparador. Los triggers PL/SQL constituyen una potente herramienta para mantener la integridad de la base de datos, ya que pueden llevar a cabo cualquier acción que sea necesaria para el mantenimiento de dicha integridad.

Los triggers PL/SQL pueden llamar a otros procedimientos y disparar otros triggers, pero no admiten parámetros y no pueden ser invocados desde otros procedimientos PL/SQL. La sintaxis de un disparador Oracle es

CREATE [OR REPLACE] TRIGGER nombre {BEFORE | AFTER | INSTEAD OF} // Temporalidad del Evento {INSERT | DELETE | UPDATE [OF <lista de columnas>]} ON <tabla>

[FOR EACH ROW | STATEMENT] //Granularidad [WHEN condición]

[DECLARE//Declaración de variables …] BEGIN cuerpo del trigger [EXCEPTION …] END;

Page 37: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 37 de 50 DR. CARLOS A. TORRES GASTELÚ

Temporalidad del Evento: AFTER / BEFORE

• BEFORE: Ejecutan la acción asociada antes de que la sentencia sea ejecutada

o Decidir si la acción debe realizarse o no o Utilizar valores alternativos para la sentencia

CREATE TRIGGER NombreTrigger BEFORE Insert ON NombreTabla ….

• AFTER: Ejecutan la acción asociada después de que se haya ejecutado la sentencia

CREATE TRIGGER NombreTrigger AFTER Insert ON NombreTabla ….

INSTEAD OF Desde Oracle 8 se proporciona los disparadores de sustitución, con ciertas restricciones INSTEAD OF es una cláusula válida solo para vistas; no se puede especificar un disparador INSTEAD OF en una tabla. Si una vista tiene un disparador INSTEAD OF, cualquier vista creada sobre ésta debe tener a su vez un disparador INSTEAD OF. Cuando definimos disparadores INSTEAD OF para columnas LOB, podemos leer tanto el seudo-registro :OLD como el seudo-registro :NEW, pero no se puede modificar sus valores. Evento: Tipo de orden DML sobre una tabla que provoca la activación del disparador.

{INSERT | DELETE | UPDATE [OF <lista de columnas>]}

Granuralidad del Evento: A NIVEL DE FILA: FOR EACH ROW: Ejecutan la acción asociada tantas veces

como filas se vean afectadas por la sentencia que lo dispara. Si ninguna fila se ve afectada, no se dispara

A NIVEL DE SENTENCIA: FOR EACK STATEMENT: Disparadores con nivel de orden. Es la opción por defecto. Ejecutan una única vez la acción asociada, independientemente del número de filas que se vean afectadas por la sentencia (incluso si no hay filas afectadas).

Page 38: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 38 de 50 DR. CARLOS A. TORRES GASTELÚ

Condición: WHEN La cláusula WHEN sólo es válida para los disparadores con nivel de fila, no puede contener subconsultas, vistas. Si está presente, el cuerpo del disparador sólo se ejecutará para las filas que cumplan la condición especificada en la cláusula. La cláusula WHEN tiene la forma:

WHEN condición

Donde condición es una expresión booleana que será evaluada para cada fila. Se puede hacer también referencia a los registros: new y :old dentro de la condición, pero en ese caso no se utilizan los dos puntos.

Registros :old y :new Estas variables se utilizan del mismo modo que cualquier otra variable PL/SQL, con la salvedad de que no es necesario declararlas, son de tipo %ROWTYPE y contienen una copia del registro antes (OLD) y despues(NEW) de la acción SQL (INSERT, UPDATE, DELETE) que ha ejecutado el trigger. Utilizando esta variable podemos acceder a los datos que se están insertando, actualizando o borrando. De uso exclusivo en los disparadores de nivel de fila, si se intenta hacer referencia a cualquiera de los dos dentro de otro tipo de disparador, se obtendrá un error de compilación.

:old y :new son registros que nos permiten acceder a los datos de la fila actual La siguiente tabla resume los valores regresados por estos seudoregistros en diferentes eventos

Evento Seudoregistros

:OLD :NEW

INSERT NULL Nuevos valores

DELETE Valores almacenados NULL

UPDATE Valores almacenados Nuevos valores

Page 39: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 39 de 50 DR. CARLOS A. TORRES GASTELÚ

Bloque PL/SQL Bloque es la unidad de estructura básica en los programas PL/SQL. Supone una mejora en el rendimiento, pues se envían los bloques completos al servidor para ser procesados en lugar de enviar cada secuencia SQL. Partes de un bloque:

Zona de declaraciones: zona opcional. Se declaran los objetos locales (variables, constantes...).

Zona de instrucciones: zona obligatoria.

Zona de tratamiento de excepciones: zona opcional. Se tratan excepciones en

el programa.

Forma de crear un bloque: Zona de declaraciones: DECLARE

Tipos de datos

NUMBER CHAR (longitud fija) VARCHAR (longitud variable) DATE BOOLEAN (es un tipo PL/SQL, no de BD).

Declaración implícita del tipo de datos.

var1 var2%TYPE var tabla.campo%TYPE

Declaración de registros

var tabla%ROWTYPE var cursor%ROWTYPE

Page 40: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 40 de 50 DR. CARLOS A. TORRES GASTELÚ

Cuerpo: bloque PL/SQL y SQL Este bloque de instrucciones se realiza si se ejecuta la sentencia activadora especificada para el trigger y, si existe una cláusula WHEN ésta es TRUE. Con las siguientes restricciones:

o Un disparador no puede emitir ninguna orden de control de transacciones (COMMIT, ROLLBACK o SAVEPOINT).

o El disparador se activa como parte de la ejecución de la orden que provocó el

disparo, y forma parte de la misma transacción que dicha orden. o Cuando la orden que provoca el disparo es confirmada o cancelada, se confirma

o cancela también el trabajo realizado por el disparador. o Ningún procedimiento o función llamada por el disparador puede emitir órdenes

de control de transacciones. o No puede contener ninguna declaración de variables LONG o LONG RAW. o Restricciones en tablas a las que se puede acceder o No puede modificar las columnas de clave primaria.

INSERTING, DELETING Y UPDATING Si un trigger puede ser activado por más de un tipo de operación (por ejemplo, "INSERT OR DELETE OR UPDATE OF Tabla"), el cuerpo del trigger puede utilizar los predicados condicionales INSERTING, DELETING y UPDATING para ejecutar bloques específicos de código, dependiendo del tipo de operación que activó el disparador. La sintaxis es la siguiente

CREATE OR REPLACE TRIGGER Ejemplo BEFORE INSERT OR UPDATE OR DELETE ON tabla BEGIN IF DELETING THEN Acciones asociadas al borrado ELSIF INSERTING THEN Acciones asociadas a la inserción ELSIF UPDATING Acciones asociadas a la modificación END IF; END Ejemplo;

Page 41: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 41 de 50 DR. CARLOS A. TORRES GASTELÚ

En un UPDATE, se puede especificar el nombre de una columna en un predicado condicional UPDATING para determinar si la columna especificada ha sido actualizada. Por ejemplo:

CREATE OR REPLACE TRIGGER Ejemplo BEFORE INSERT OR DELETE OR UPDATE ON tabla BEGIN IF DELETING THEN Acciones asociadas al borrado ELSIF INSERTING THEN Acciones asociadas a la inserción ELSIF UPDATING(‗COL1‘) Acciones asociadas a la modificación ELSIF UPDATING(‗COL2‘) Acciones asociadas a la modificación END IF;

RAISE_APPLICATION_ERROR Permite que un programa PL/SQL pueda generar errores tal y como lo hace Oracle. Cuando se produce un error no tratado en la sección EXCEPTION, el error pasa fuera del bloque, al entorno que realizó la llamada. Con RAISE_APPLICATION_ERROR se pueden generar errores similares con el mensaje que se quiera y, como ocurre con los errores generados por Oracle, el programa genera una EXCEPCIÓN. La excepción puede tratarse en la sección EXCEPTION del bloque PL/SQL que la genera o del bloque que efectúe su llamada, usando el manejador OTHERS y SQLCODE/SQLERRM.

Formato: RAISE_APPLICATION_ERROR(<NE>, <ME>, [<PE>])

<NE>: Número del error, comprendido entre –20.000 y –20.999. <ME>: Mensaje del error, de longitud máxima 512 caracteres. <PE>: Preservar errores es un valor lógico opcional. Indica si el error se

introduce a la lista de errores ya generados (TRUE) o sustituye la lista actual con el nuevo error (FALSE, valor predeterminado).

Permite generar errores con mensajes más significativos que los que generaría Oracle: Puede utilizarse en la sección EXCEPTION. Hace que requieran el mismo tratamiento los errores definidos por el usuario y los errores predefinidos.

Page 42: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 42 de 50 DR. CARLOS A. TORRES GASTELÚ

EXCEPCIONES PREDEFINIDAS Hay Excepciones Predefinidas que controlan errores particulares (Todas aquellas excepciones que no son controladas por el sistema manejador de excepciones Oracle y/o por las excepciones definidas por el programador, controlando cualquier tipo de error). Algunas son:

INVALID_CURSOR: Se genera al intentar efectuar una operación ilegal sobre un cursor, como cerrar o intentar extraer datos de un cursor no abierto.

CURSOR_ALREADY_OPEN: Surge al intentar abrir un cursor ya abierto.

NO_DATA_FOUND: Cuando una orden SELECT..INTO no devuelve ninguna

fila o cuando se intenta referenciar un elemento de una tabla PL/SQL al que no se le ha asignado ningún valor previamente.

TOO_MANY_ROWS: Si una orden SELECT..INTO devuelve más de una fila.

INVALID_NUMBER: Si falla la conversión de cierto valor a un tipo NUMBER o

cuando usamos un dato no numérico en lugar de un dato numérico.

VALUE_ERROR: Se genera cada vez que se produce un error aritmético, de conversión, de truncamiento o de restricciones en una orden procedimental (si es una orden SQL se produce la excepción INVALID_NUMBER). Ej.: Si asignamos una cadena o número de mayor longitud que el tipo de la variable receptora.

STORAGE_ERROR y PROGRAM_ERROR: Son errores internos que no

deberían producirse. Ocurren respectivamente si PL/SQL se queda sin memoria o por un fallo en el motor PL/SQL de Oracle y debería avisarse del error al departamento de soporte técnico de Oracle.

DUP_VAL_ON_INDEX: Es el error ORA-1, generado cuando se intenta

insertar una fila en una tabla con un atributo UNIQUE y el valor de ese campo en la fila que se intenta insertar ya existe.

ZERO_DIVIDE: Intento de división por cero.

Compilado Triggers El funcionamiento de un trigger deja de estar ENABLE si dependen de Procedimientos almacenados o función en el cuerpo del disparador y este es modificado. Los disparadores DISABLE por razones de dependencia son recompilado en la próxima invocación.

Page 43: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 43 de 50 DR. CARLOS A. TORRES GASTELÚ

FIREBIRD

irebird es una base de datos relacional que ofrece

muchas características de SQL ANSI estándar y que

funciona en Linux, Windows, MacOSX y una

variedad de plataformas UNIX. Firebird ofrece una

concurrencia excelente, alto rendimiento y un poderoso

lenguaje de procedimientos almacenados y disparadores.

Ha estado usándose en producción bajo varios nombres

desde 1981.

El Proyecto Firebird es un proyecto independiente de programadores de C y

C++, asesores técnicos y colaboradores que desarrollan y mejoran a Firebird, la base

de datos relacional basada en el código fuente liberado por Inprise Corp (ahora

conocida como Borland Software Corp) el 25 de julio de 2000.

OBJETIVOS Apoyar y lograr el avance del manejador de base de datos relacional Firebird

Proveer los mecanismos e infraestructura no comerciales para aceptar y administrar los

fondos recaudados, e invertir tales fondos para promover el esfuerzo del desarrollo de

esta base de datos.

Fomentar la cooperación y la afiliación de individuos, organizaciones sin fines de

lucro y compañías comerciales involucradas o que estén planeando estar involucradas

en el desarrollo, apoyo y promoción de los proyectos de software de Firebird y sus

productos y actividades asociadas.

HISTORIA A finales de la década de 1990, Borland decidió liberar el código de Interbase.

Diversos integrantes de la plantilla crearon una nueva empresa denominada IBPhoenix,

y junto a otros desarrolladores independientes, crearon el fork ahora conocido como

Firebird. Más tarde, Borland decidiría volver a privatizar Interbase y comercializar sus

licencias. Sin embargo, Firebird sigue siendo un proyecto de código abierto bajo una

licencia similar a la MPL (Mozilla Public License).

F

Page 44: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 44 de 50 DR. CARLOS A. TORRES GASTELÚ

CARACTERÍSTICAS

Es multiplataforma, y actualmente puede ejecutarse en los sistemas

operativos: Linux, HP-UX, FreeBSD, Mac OS, Solaris y Microsoft

Windows.

Ejecutable pequeño, con requerimientos de hardware bajos.

Arquitectura Cliente/Servidor sobre protocolo TCP/IP y otros (embedded).

Soporte de transacciones ACID y claves foráneas.

Es medianamente escalable.

Buena seguridad basada en usuarios/roles.

Diferentes arquitecturas, entre ellas el Firebird incrustado (embedded

server) que permite ejecutar aplicaciones monousuario en ordenadores

sin instalar el software Firebird.

Bases de datos de sólo lectura, para aplicaciones que corran desde

dispositivos sin capacidad de escritura, como cd-roms.

Existencia de controladores ODBC, OLEDB, JDBC, PHP, Perl, .net, etc.

Requisitos de administración bajos, siendo considerada como una base

de datos libre de mantenimiento, al margen de la realización de copias de

seguridad.

Pleno soporte del estándar SQL-92, tanto de sintaxis como de tipos de

datos.

Completo lenguaje para la escritura de disparadores y procedimientos

almacenados denominado PSQL.

Capacidad de almacenar elementos BLOB (Binary Large OBjects).

Soporte de User-Defined Functions (UDFs).

Versión autoejecutable, sin instalación, excelente para la creación de

catálogos en CD-Rom y para crear versiones de evaluación de algunas

aplicaciones.

Page 45: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 45 de 50 DR. CARLOS A. TORRES GASTELÚ

Microsoft SQL server

stá disponible para la mayoría de las plataformas

de sistemas operativos.

Su bajo consumo lo hacen apto para ser

ejecutado en una máquina con escasos recursos

sin ningún problema.

El conjunto de aplicaciones Apache-PHP-MySQL es uno de los más utilizados en aplicaciones en ambiente Web Velocidad a la hora de realizar las operaciones. Según las cifras del fabricante, existirían cinco millones de copias de MySQL corriendo en la actualidad, lo que supera la base instalada de cualquier otra herramienta de bases de datos. Microsoft SQL Server es capaz de integrar los nuevos desarrollos para estos entornos específicos con los desarrollos heredados de aplicaciones "tradicionales". Es más, cada aplicación que desarrollemos para ser empleada en entornos de red local puede ser utilizada de forma transparente –en parte o en su totalidad- desde entornos Internet, Intranet o Extranet. Plataforma de desarrollo fácil y abierto: integrada con las mejores tecnologías de Internet como ActiveX, ADC y Microsoft Transaction Server y con las mejores herramientas de gestión y desarrollo para Internet como FrontPage97, Microsoft Office97 y Visual Interdev. Diseñada para INTERNET: Es el único gestor de base de datos que contiene de forma integrada la posibilidad de generar contenido HTML de forma automática. La Base de Soluciones Integradas: La Integración total con BaclOffice permite resolver toda las necesidades de infraestructura de la empresa con un sólo paquete. Potente y Escalable: Microsoft SQL Server es la única base de datos cuyo rendimiento sobre Internet está publicado, ofreciendo registros espectaculares. Mínimo coste de Propiedad: La sencillez de la instalación, y la potencia de sus herramientas de gestión y el menor coste de toda la industria para entornos Internet, hacen de Microsoft SQL Server la mejor opción con el menor coste.

E

Page 46: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 46 de 50 DR. CARLOS A. TORRES GASTELÚ

My SQL

ySQL es un sistema de gestión de base de datos relacional, multihilo y multi usuario con más de seis millones de instalaciones.1 MySQL AB —desde enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle Corporation desde abril de 2009—

desarrolla MySQL como software libre en un esquema de licenciamiento dual. Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, pero para aquellas empresas que quieran incorporarlo en productos privativos deben comprar a la empresa una licencia específica que les permita este uso. Está desarrollado en su mayor parte en ANSI C. Al contrario de proyectos como Apache, donde el software es desarrollado por una comunidad pública y el copyright del código está en poder del autor individual, MySQL es propietario y está patrocinado por una empresa privada, que posee el copyright de la mayor parte del código. Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Además de la venta de licencias privativas, la compañía ofrece soporte y servicios. Para sus operaciones contratan trabajadores alrededor del mundo que colaboran vía Internet. MySQL AB fue fundado por David Axmark, Allan Larsson y Michael Widenius.

Historia SQL (Lenguaje de Consulta Estructurado) fue comercializado por primera vez en 1981 por IBM, el cual fue presentado a ANSI y desde entonces ha sido considerado como un estándar para las bases de datos relacionales. Desde 1986, el estándar SQL ha aparecido en diferentes versiones como por ejemplo: SQL:92, SQL:99, SQL:2003. MySQL es una idea originaria de la empresa opensource MySQL AB establecida inicialmente en Suecia en 1995 y cuyos fundadores son David Axmark, Allan Larsson, y Michael "Monty" Widenius. El objetivo que persigue esta empresa consiste en que MySQL cumpla el estándar SQL, pero sin sacrificar velocidad, fiabilidad o usabilidad.

M

Page 47: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 47 de 50 DR. CARLOS A. TORRES GASTELÚ

Michael Widenius en la década de los 90 trató de usar mSQL para conectar las tablas usando rutinas de bajo nivel ISAM, sin embargo, mSQL no era rápido y flexible para sus necesidades. Esto lo llevó a crear una API SQL denominada MySQL para bases de datos muy similar a la de mSQL pero más portable. La procedencia del nombre de MySQL no es clara. Desde hace más de 10 años, las herramientas han mantenido el prefijo My. También, se cree que tiene relación con el nombre de la hija del cofundador Monty Widenius quien se llama My. Por otro lado, el nombre del delfín de MySQL es Sakila y fue seleccionado por los fundadores de MySQL AB en el concurso ―Name the Dolphin‖. Este nombre fue enviado por Ambrose Twebaze, un desarrollador de Open source Africano, derivado del idioma SiSwate, el idioma local de Swazilandia y corresponde al nombre de una ciudad en Arusha, Tanzania, cerca de Uganda la ciudad origen de Ambrose.

Lenguajes de programación Existen varias APIs que permiten, a aplicaciones escritas en diversos lenguajes de programación, acceder a las bases de datos MySQL, incluyendo C, C++, C#, Pascal, Delphi (via dbExpress), Eiffel, Smalltalk, Java (con una implementación nativa del driver de Java), Lisp, Perl, PHP, Python, Ruby,Gambas, REALbasic (Mac), (x)Harbour (Eagle1), FreeBASIC, y Tcl; cada uno de estos utiliza una API específica. También existe un interfaz ODBC, llamado MyODBC que permite a cualquier lenguaje de programación que soporte ODBC comunicarse con las bases de datos MySQL. También se puede acceder desde el sistema SAP, lenguaje ABAP.

Page 48: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 48 de 50 DR. CARLOS A. TORRES GASTELÚ

Aplicaciones MySQL es muy utilizado en aplicaciones web, como Drupal o phpBB, en

plataformas (Linux/Windows-Apache-MySQL-PHP/Perl/Python), y por herramientas de

seguimiento de errores como Bugzilla. Su popularidad como aplicación web está muy

ligada a PHP, que a menudo aparece en combinación con MySQL. MySQL es una

base de datos muy rápida en la lectura cuando utiliza el motor no transaccional

MyISAM, pero puede provocar problemas de integridad en entornos de alta

concurrencia en la modificación. En aplicaciones web hay baja concurrencia en la

modificación de datos y en cambio el entorno es intensivo en lectura de datos, lo que

hace a MySQL ideal para este tipo de aplicaciones.

Plataformas

MySQL funciona sobre múltiples plataformas, incluyendo:

AIX

BSD

FreeBSD

HP-UX

GNU/Linux

Mac OS X

NetBSD

Novell Netware

OpenBSD

OS/2 Warp

QNX

SGI IRIX

Solaris

SunOS

SCO OpenServer

SCO UnixWare

eBD

Windows 95, Windows 98, Windows

NT, Windows 2000, Windows XP,

Windows Vista y otras versiones de

Windows.

OpenVMS (véase: www.pi-net.dyndns.org/anonymous/kits/).

Page 49: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 49 de 50 DR. CARLOS A. TORRES GASTELÚ

CONCLUSION

En conclusión, podemos decir, que los sistemas gestores de bases de datos, son unas aplicaciones muy útiles en lo que es la automatización de las empresas, y un gran apoyo en los sistemas de información. Tambien, cada uno tiene ventajas y desventajas, no hay uno que sea perfecto, sin embargo, para nuestros fines, consideramos que el SGBD mas completo, es Oracle. También aprendimos que tienen una importante historia, que existen muchas funciones y también, muchos programas, algunos gratuitos, algunos de paga, algunos de prueba, y que debemos escoger aquel que se ajuste a las necesidades de nuestro cliente. Otro punto importante es que aprendimos que aunque haya muchos programas y versiones de ellas, todas ellas hablan el mismo lenguaje : SQL, lo cual facilita mucho las cosas, ya que si nosotros sabemos codigo SQL, básicamente, la vamos a poder hacer en cualquier sistema que nos pongan.

Page 50: Basesdedatos smbd final

EQUIPO 7 2010-2011 UDICA

BASE DE DATOS Página 50 de 50 DR. CARLOS A. TORRES GASTELÚ

BIBLIOGRAFIA

Connolly & Begg. (2005). Sistemas de bases de datos. Un enfoque práctico para

diseño, implementación y gestión. Pearson Addison Wesley. Madrid.

Kroenke. (2002). Procesamiento de Bases de Datos. Fundamentos, Diseño e Implementación. Octava Edición. Pearson. Prentice Hall.

Luque ruiz, Gómez-Nieto, López Espinosa & Cerruela García. (2002). Bases de

Datos. Desde Chen hasta Codd con Oracle. Alfaomega Ra-Ma. México Piattiani, Esparza Marcos, Calero Coral & Vela Belen.(2007). Tecnología y

diseño de Bases de Datos. AlfaOmega Ra-Ma. México. Silberschatz, Korth & Sudarshan. (2006). Fundamentos de Base de Datos. Mc

Graw Hil. Quinta Edición. España.

http://www.microsoft.com/mexico/sql/2008/default.aspx