1. 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.
2. EQUIPO 7 2010-2011 UDICA
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
BASE DE DATOS Página 2 de 50 DR. CARLOS A. TORRES GASTELÚ
3. EQUIPO 7 2010-2011 UDICA
INTRODUCCION
A
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”
BASE DE DATOS Página 3 de 50 DR. CARLOS A. TORRES GASTELÚ
4. EQUIPO 7 2010-2011 UDICA
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:
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
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.
BASE DE DATOS Página 4 de 50 DR. CARLOS A. TORRES GASTELÚ
5. EQUIPO 7 2010-2011 UDICA
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
Recompilar un procedimiento almacenado.
PROCEDURE
Añadir o redefinir una columna, modificar la asignación de
ALTER TABLE
almacenamiento.
Recoger estadísticas de rendimiento sobre los objetos de
ANALYZE
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.
Conceder privilegios o papeles, roles, a un usuario o a
GRANT
otro rol.
Retirar los privilegios de un usuario o rol de la base de
REVOKE
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.
Deshacer todas las modificaciones realizadas desde la última
ROLLBACK
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.
BASE DE DATOS Página 5 de 50 DR. CARLOS A. TORRES GASTELÚ
6. EQUIPO 7 2010-2011 UDICA
DATA BASE MANAGEMENT SYSTEM
(DBMS)
U 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.
BASE DE DATOS Página 6 de 50 DR. CARLOS A. TORRES GASTELÚ
7. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 7 de 50 DR. CARLOS A. TORRES GASTELÚ
8. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 8 de 50 DR. CARLOS A. TORRES GASTELÚ
9. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 9 de 50 DR. CARLOS A. TORRES GASTELÚ
10. EQUIPO 7 2010-2011 UDICA
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 NexusDB
dBase Open Access
FileMaker Oracle
Fox Pro Paradox
IBM DB2 Universal Database (DB2 PervasiveSQL
UDB) Progress (DBMS)
IBM Informix Sybase ASE
Interbase de CodeGear, filial de Sybase ASA
Borland Sybase IQ
MAGIC Window Base
Microsoft Access IBM IMS Base de Datos Jerárquica
Microsoft SQL Server CA-IDMS
BASE DE DATOS Página 10 de 50 DR. CARLOS A. TORRES GASTELÚ
11. EQUIPO 7 2010-2011 UDICA
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
BASE DE DATOS Página 11 de 50 DR. CARLOS A. TORRES GASTELÚ
12. EQUIPO 7 2010-2011 UDICA
ANALISIS COMPARATIVO ENTRE SISTEMAS LIBRES Y
PROPIETARIOS
BASE DE DATOS Página 12 de 50 DR. CARLOS A. TORRES GASTELÚ
13. EQUIPO 7 2010-2011 UDICA
BASE DE DATOS Página 13 de 50 DR. CARLOS A. TORRES GASTELÚ
14. EQUIPO 7 2010-2011 UDICA
BASE DE DATOS Página 14 de 50 DR. CARLOS A. TORRES GASTELÚ
15. EQUIPO 7 2010-2011 UDICA
DETALLE DE 4 SGBD SELECCIONADAS
1.- ORACLE
E
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.
BASE DE DATOS Página 15 de 50 DR. CARLOS A. TORRES GASTELÚ
16. EQUIPO 7 2010-2011 UDICA
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).
BASE DE DATOS Página 16 de 50 DR. CARLOS A. TORRES GASTELÚ
17. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 17 de 50 DR. CARLOS A. TORRES GASTELÚ
18. EQUIPO 7 2010-2011 UDICA
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
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 ...
BLOB
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
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.
CLOB Use la siguiente expresión para una consulta de un campo CLOB
SELECT DBMS_LOB.substr(campo,
DBMS_LOB.getlength(campo),1)
FROM tablaprueba;
Almacena datos de tipo carácter alfanumérico de longitud fija, con un
CHAR(tamaño)
tamaño máximo de 2000.
DATE Almacena fechas desde el 1-Ene-4712 AC hasta el 31-Dic-4712 DC.
Datos de tipo carácter alfanumérico de longitud variable con un tamaño
LONG
máximo de hasta 2 Gb.
LONG RAW Soporta datos de longitud variable, con un tamaño máximo de 2 Gb.
Datos numéricos de n dígitos, de los cuales dec son decimales. El tamaño
NUMBER(dig [, dec])
máximo es de 38 dígitos.
Almacena un valor alfanumérico de longitud variable en caracteres
NVARCHAR
Unicode con las mismas restricciones de varchar.
RAW(tamaño) Datos de longitud variable, con un tamaño máximo de 255 bytes.
Fecha y hora (incluidos los segundos), con un tamaño que abarca desde 7
TIMESTAMP
a 11 bytes.
Guarda datos de tipo carácter alfanumérico de longitud variable, con un
VARCHAR2(tamaño)
tamaño máximo de 4,000.
BASE DE DATOS Página 18 de 50 DR. CARLOS A. TORRES GASTELÚ
19. EQUIPO 7 2010-2011 UDICA
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
Establece el valor por defecto para esa columna, si no se le asigna
DEFAULT
ninguno.
Comprueba que se cumpla una condición determinada al rellenar esa
CHECK columna. Esta condición sólo debe estar construida con columnas de esta
misma tabla.
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
FOREIGN foreanas. La clave ajena puede ser otra columna de la misma tabla. Se
KEY 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.
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
NOT NULL 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.
Conjunto de columnas que forman la clave primaria de esa tabla. Se
comporta como única y obligatoria sin necesidad de explicitarlo. Sólo
PRIMARY puede existir una clave primaria por tabla. Puede ser referenciada como
KEY 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+.
Evita valores repetidos en una columna, admitiendo valores nulos. Oracle
UNIQUE crea un índice automáticamente cuando se habilita esta restricción y lo
borra al deshabilitarse.
BASE DE DATOS Página 19 de 50 DR. CARLOS A. TORRES GASTELÚ
20. EQUIPO 7 2010-2011 UDICA
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:
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];
);
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 Representa el valor por defecto de un atributo, de
expresión 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.
BASE DE DATOS Página 20 de 50 DR. CARLOS A. TORRES GASTELÚ
21. EQUIPO 7 2010-2011 UDICA
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).
BASE DE DATOS Página 21 de 50 DR. CARLOS A. TORRES GASTELÚ
22. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 22 de 50 DR. CARLOS A. TORRES GASTELÚ
23. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 23 de 50 DR. CARLOS A. TORRES GASTELÚ
24. EQUIPO 7 2010-2011 UDICA
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 ' *'.
BASE DE DATOS Página 24 de 50 DR. CARLOS A. TORRES GASTELÚ
25. EQUIPO 7 2010-2011 UDICA
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
BASE DE DATOS Página 25 de 50 DR. CARLOS A. TORRES GASTELÚ
26. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 26 de 50 DR. CARLOS A. TORRES GASTELÚ
27. EQUIPO 7 2010-2011 UDICA
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.
Entero inmediatamente superior o
CEIL(n)
igual a n.
Entero inmediatamante inferior o
FLOOR(n)
igual a n.
MOD(m, n) Resto de la división de m por n
Devuelve la expresión exp si val es
NVL(val, exp)
NULL, y val si en otro caso.
POWER(m, n) Calcula la potencia n-esima de m.
Calcula el redondeo de m a n
decimales. Si n< 0 el redondeo se
ROUND(m, n)
efectua por la izquierda del punto
decimal.
Calcula el signo de n, devolviendo -1 si
SIGN(n)
n < 0, 0 si n = 0 y 1 si n > 0.
SQRT(n) Raíz cuadrada de n.
Calcula m truncado a n decimales (n
TRUNC(m, n)
puede ser negativo).
BASE DE DATOS Página 27 de 50 DR. CARLOS A. TORRES GASTELÚ
28. EQUIPO 7 2010-2011 UDICA
Funciones de Cadenas de Caracteres
Función Descripción
ASCII(cadena) Devuelve el valor ASCII de cadena.
Devuelve el carácter cuyo valor
CHR(n)
codificado es n.
Concatenada c1 con c2. Es equivalente al
CONCAT(c1, c2)
operador ||.
Regresa cadena con el primer carácter
INITCAP(cadena)
en mayúsculas.
LENGTH(cadena) Devuelve la longitud de cadena.
Retorna la cadena con todas sus letras
LOWER(cadena)
en minúsculas.
Devuelve c1 con longitud n, y ajustada a
LPAD(c1, n, c2) la derecha, rellenando por la izquierda
con c2.
Devuelve c1 en la que cada ocurrencia
REPLACE(c1,c2,c3) de la cadena c2 ha sido sustituida por la
cadena c3.
Devuelve c1 con longitud n, y ajustada a
RPAD(c1, n, c2) la izquierda, rellenando por la derecha
con c2.
c1 es una cadena que se desea
compactar por la derecha. n son los
RTRIM(c1 [, n]) caracteres individuales que se eliminaran
del lado derecho. Si se omite n eliminara
todos los espacios en blanco
Devuelve la sudcadena de c1 compuesta
SUBSTR(c1, m, n) por n caracteres a partir de la posición
m.
Convierte caracteres de una cadena en
TRANSLATE (c1, c2, c3) caracteres diferentes, según un plan de
sustitución marcado por el usuario.
Convierte la cadena con todas sus letras
UPPER(cadena)
en mayúsculas.
BASE DE DATOS Página 28 de 50 DR. CARLOS A. TORRES GASTELÚ
29. EQUIPO 7 2010-2011 UDICA
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.
Extrae un valor de fecha o de intervalo de tiempo.
EXTRACT ( { YEAR | MONTH | DAY | HOUR |
EXTRACT 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.
Próxima fecha para el día de la semana cad (Domingo, lunes...)
NEXT_DAY(d, cad)
después de la fecha d.
SYSDATE Fecha actual.
SELECT SYSTIMESTAMP FROM dual; Fecha y ahora actual
BASE DE DATOS Página 29 de 50 DR. CARLOS A. TORRES GASTELÚ
30. EQUIPO 7 2010-2011 UDICA
Funciones de Conversión de Tipo
Función Descripción
Convierte la cadena cad a un número, opcionalmente
TO_NUMBER(cad, [fmto]) de acuerdo con el formato fmto. El formato es
opcional
Convierte la fecha d a una cadena de carácteres,
TO_CHAR(d [, fmto])
opcionalmente de acuerdo con el formato fmto.
Convierte la cadena cad de tipo varchar2 a fecha,
TO_DATE(cad, fmto)
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.
Nombre del día de la semana o su abreviatura de tres
day ó dy
letras.
a.m. ó p.m. El espacio del día.
b.c. ó a.d. Indicador del año respecto al del nacimiento de Cristo.
BASE DE DATOS Página 30 de 50 DR. CARLOS A. TORRES GASTELÚ
31. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 31 de 50 DR. CARLOS A. TORRES GASTELÚ
32. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 32 de 50 DR. CARLOS A. TORRES GASTELÚ
33. EQUIPO 7 2010-2011 UDICA
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.
Calcula el valor mínimo de todos los valores de la columna
MIN(col)
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.
BASE DE DATOS Página 33 de 50 DR. CARLOS A. TORRES GASTELÚ
34. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 34 de 50 DR. CARLOS A. TORRES GASTELÚ
35. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 35 de 50 DR. CARLOS A. TORRES GASTELÚ
36. EQUIPO 7 2010-2011 UDICA
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;
BASE DE DATOS Página 36 de 50 DR. CARLOS A. TORRES GASTELÚ
37. EQUIPO 7 2010-2011 UDICA
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).
BASE DE DATOS Página 37 de 50 DR. CARLOS A. TORRES GASTELÚ
38. EQUIPO 7 2010-2011 UDICA
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
Seudoregistros
Evento
:OLD :NEW
INSERT NULL Nuevos valores
DELETE Valores almacenados NULL
UPDATE Valores almacenados Nuevos valores
BASE DE DATOS Página 38 de 50 DR. CARLOS A. TORRES GASTELÚ
39. EQUIPO 7 2010-2011 UDICA
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
BASE DE DATOS Página 39 de 50 DR. CARLOS A. TORRES GASTELÚ
40. EQUIPO 7 2010-2011 UDICA
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;
BASE DE DATOS Página 40 de 50 DR. CARLOS A. TORRES GASTELÚ
41. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 41 de 50 DR. CARLOS A. TORRES GASTELÚ
42. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 42 de 50 DR. CARLOS A. TORRES GASTELÚ
43. EQUIPO 7 2010-2011 UDICA
FIREBIRD
F
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).
BASE DE DATOS Página 43 de 50 DR. CARLOS A. TORRES GASTELÚ
44. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 44 de 50 DR. CARLOS A. TORRES GASTELÚ
45. EQUIPO 7 2010-2011 UDICA
Microsoft SQL server
E
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.
BASE DE DATOS Página 45 de 50 DR. CARLOS A. TORRES GASTELÚ
46. EQUIPO 7 2010-2011 UDICA
My SQL
M
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.
BASE DE DATOS Página 46 de 50 DR. CARLOS A. TORRES GASTELÚ
47. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 47 de 50 DR. CARLOS A. TORRES GASTELÚ
48. EQUIPO 7 2010-2011 UDICA
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 SGI IRIX
BSD Solaris
FreeBSD SunOS
HP-UX SCO OpenServer
GNU/Linux SCO UnixWare
Mac OS X eBD
NetBSD Windows 95, Windows 98, Windows
Novell Netware NT, Windows 2000, Windows XP,
OpenBSD Windows Vista y otras versiones de
OS/2 Warp Windows.
QNX
OpenVMS (véase: www.pi-net.dyndns.org/anonymous/kits/).
BASE DE DATOS Página 48 de 50 DR. CARLOS A. TORRES GASTELÚ
49. EQUIPO 7 2010-2011 UDICA
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.
BASE DE DATOS Página 49 de 50 DR. CARLOS A. TORRES GASTELÚ
50. EQUIPO 7 2010-2011 UDICA
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
BASE DE DATOS Página 50 de 50 DR. CARLOS A. TORRES GASTELÚ