PRÁCTICA I. INTRODUCCIÓN A Oracle8



Documentos relacionados
BASE DE DATOS CURSO 00/01

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL)

EL ENTORNO DE TRABAJO SQL ORACLE

Base de datos relacional

SQL (Structured Query Language)

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

A.1. Definiciones de datos en SQL

ADMINISTRACIÓN DE BASE DE DATOS

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

Consultas con combinaciones

CURSO DE SQL SERVER 2005

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos:

MANUAL BÁSICO DEL LENGUAJE SQL

- Bases de Datos - - Diseño Físico - Luis D. García

CONSULTAS BASICAS EN SQL SERVER

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl

Acceso a bases de datos MySQL con PHP

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

BASES DE DATOS OFIMÁTICAS

Bases de datos relacionales y el modelo entidad-relación

Un nombre de usuario de 30 caracteres o menos, sin caracteres especiales y que inicie con una letra.

GENERALIDADES DE BASES DE DATOS

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

8 SQL SERVER 2008 RA-MA

LAS SUBCONSULTAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 9. Reglas de Integridad

Manual de rol gestor de GAV para moodle 2.5

Capítulo 9. Archivos de sintaxis

Repaso de Conceptos Básicos de Bases de Datos

Base de Datos Oracle 10g: Introducción a SQL Código: D Duración: 5 días (40 horas)

LiLa Portal Guía para profesores

Elementos requeridos para crearlos (ejemplo: el compilador)

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

Toda base de datos relacional se basa en dos objetos

BASE DE DATOS RELACIONALES

1. DML. Las subconsultas

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

ADMINISTRACIÓN DE BASES DE DATOS DISTRIBUIDAS

Guía de Laboratorio Base de Datos I.

ELEMENTO I INTRODUCCION A LOS SISTEMAS DE BASES DE DATOS

Operación de Microsoft Word

Tecnología de la Información y la Comunicación. Base de datos. Consultas

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional

Oficina Online. Manual del administrador

Grupo Kybele, Pág. 1

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

SQL Los fundamentos del lenguaje

Bases de Datos Relacionales

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

Oracle 12c DISEÑO Y PROGRAMACIÓN

1.1.- Objetivos de los sistemas de bases de datos Administración de los datos y administración de bases de datos Niveles de Arquitectura

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Programación de sitios web Act 11: Reconocimiento de la unidad 3

El lenguaje de manipulación de datos (DML) es una parte fundamental de SQL.

Base de datos en Excel

Bases de datos en Excel

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos

ÍNDICE CAPÍTULO 1. TIPOS DE ALMACENAMIENTO DE LA INFORMACIÓN... 13

INSTITUCIÓN EDUCATIVA GABRIEL GARCIA MÁRQUEZ BASE DE DATOS. DESARROLLO DE SOFTWARE Página 1 de 28 SQL SQL

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

Bibliografía. Fundamentos de Sistemas de Bases de Datos (3. edición) Elmasri, Navathe Addisson Wesley 2002

Tema 11 Bases de datos. Fundamentos de Informática

[CASI v.0110] Pág. 1

Conceptos básicos Oracle 10g Introducción - Administración de Oracle - Orasite.com

Administración de la producción. Sesión 10: Gestor de Base de Datos (Access)

ADMINISTRACION DE BASES DE DATOS EN ORACLE

ÍNDICE. Introducción... Capítulo 1. Novedades de Access

Curso Online de Microsoft

Guía práctica de SQL

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DDL. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

Si queremos modificar la contraseña de sys, una vez que accedamos al sistema como sys, escribiremos la sentencia:

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

Creación y Gestión de Tablas. Copyright Oracle Corporation, All rights reserved.

Microsoft SQL Server 2005

Estándar de desarrollo de aplicaciones del Govern de les Illes Balears

UNIVERSIDAD AUTONOMA DE LOS ANDES UNIANDES LENGUAJE SQL. SQL es un estándar un lenguaje estructurado para consultas

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

GENERACIÓN DE ANTICIPOS DE CRÉDITO

Restricciones de Integridad

1

Microsoft SQL Server Conceptos.

Modelos y Bases de Datos

A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla.

Introducción a las redes de computadores

Tema 1. Conceptos básicos

Bases de datos: Sistemas de bases de datos:

Formularios. Formularios Diapositiva 1

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales

Maestría en Bioinformática. Bases de Datos y Sistemas de Información. Diseño Lógico. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

PRACTICA DE ADMINISTRACION DE BASES DE DATOS

T12 Vistas y tablas temporales

CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

Maxpho Commerce 11. Gestión CSV. Fecha: 20 Septiembre 2011 Versión : 1.1 Autor: Maxpho Ltd

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

Transcripción:

PRÁCTICA I. INTRODUCCIÓN A Oracle8 Modelos Avanzados de Bases de Datos Curso 2000/2001

Creación de usuario CREATE USER nombre IDENTIFIED BY password; Crea un esquema lógico dónde poder guardar tablas ya que por las condiciones de seguridad de Oracle no pueden crearse bases de datos a no ser siendo el DBA o desde el servidor. Privilegios para un usuario GRANT CONNECT TO nombre; GRANT RESOURCE TO nombre; Cambio de contraseña Borrar usuario ALTER USER nombre IDENTIFIED BY nuevapwd; DROP USER nombre; Seleccionar todas las tablas de un usuario SELECT * FROM user_tables; Seleccionar los nombres de todas las tablas de un usuario SELECT table_name FROM user_tables; Ver el contenido de una tabla: SELECT * FROM nombretabla; 2

Oracle Systems Corporation, fabrica productos software y proporciona servicios para la gestión electrónica de la información. Oracle es un proveedor de software a nivel mundial, su software funciona en más de 100 plataformas diferentes. Oracle8 es la primera versión de la base de datos de Oracle que incorpora la tecnología orientada a objetos. Se trata de una base de datos objeto-relacional, dado que esta implementación no es una base de datos orientada a objetos pura, ni tampoco es una base de datos relacional, representa un híbrido de ambas. 1. Arquitectura de Oracle8 La arquitectura de Oracle8 es cliente-servidor: los usuarios acceden a la base de datos desde su computadora personal (cliente) a través de una red, y la base de datos se encuentra en una computadora diferente (servidor). El servidor es la piedra angular de este sistema que a continuación se describe brevemente. 2. Oracle8 Server El servidor de Oracle8 es un entorno avanzado de gestión de la información. Permite almacenar grandes cantidades de datos y proporciona a los usuarios acceso rápido a los mismos. También, permite la compartición de datos entre aplicaciones; la información se almacena en un cierto lugar y puede ser utilizada por muchos sistemas. 3. Funciones de Oracle8. Oracle8 posee una amplia gama de funcionalidades, las más importantes se comentan a continuación: Mecanismos de seguridad Los sofisticados mecanismos de seguridad de Oracle controlan el acceso a los datos utilizando un conjunto de privilegios. Realización de copias de seguridad y recuperación Oracle proporciona sofisticados procedimientos de realización de copias de seguridad y recuperación de los datos. Gestión del espacio Oracle ofrece una gestión flexible del espacio. Se puede asignar un cierto espacio de disco para el almacenamiento de los datos, y controlar las subsiguientes asignaciones instruyendo a Oracle sobre cuánto espacio debe reservar para los requerimientos futuros. También tiene una serie de características que fueron diseñadas teniendo en cuenta las necesidades de las bases de datos de gran tamaño. 3

Conectividad de carácter abierto Oracle proporciona conectividad hacia y desde paquetes software de otros fabricantes. Utilizando extensiones a la base de datos Oracle, se puede trabajar con información almacenada con otros sistemas de bases de datos, como DB2 de IBM o Microsoft Access. También se pueden almacenar los datos en la base de datos de Oracle y acceder a ellos desde otros paquetes software, como Visual Basic. Herramientas de desarrollo El servidor Oracle, al que normalmente se denomina motor de la base de datos, funciona con un amplio conjunto de herramientas de desarrollo, herramientas de consulta para usuario final, aplicaciones comerciales y herramientas de gestión de la información de ámbito corporativo. Mecanismos de integridad El sevidor Oracle también se encarga de la integridad de los datos. Si se produce cualquier tipo de fallo mientras un usuario está cambiando los datos en una base de datos, este tiene la capacidad de deshacer o cancelar cualquier transacción sospechosa. Componente procedimental A partir de Oracle7, esta opción pasó a formar parte del núcleo del Servidor. El fundamento de esta opción es el lenguaje de programación de Oracle PL/SQL. Con esta opción se pueden implementar las funcionalidades siguientes: 1. Procedimientos almacenados. Se pueden almacenar programas (o segmentos de código) en la base de datos. 2. Disparadores de bases de datos (triggers). Son segmentos de código almacenados en la base de datos, y que se disparan como respuesta a sucesos que tienen lugar en las aplicaciones. 3. Paquetes. Los procedimientos se suelen agrupar, almacenándose el código como una única unidad de programación en la base de datos. Componente de procesamiento distribuido En muchos sistemas hay datos que residen en diferentes computadoras, Oracle permite gracias a la transparencia de ubicación, que todos los usuarios puedan acceder a dicha información sin necesidad de saber en que ordenador se encuentra la información. Componente de consulta en paralelo: Se utiliza con computadoras de múltiples UCP, y permite que el procesamiento de las consultas sea repartido entre múltiples procesos servidores. 4

4. Estructura física y lógica de una Base de datos Oracle Una base de datos es una colección de datos relacionados que son utilizados y recuperados conjuntamente por uno o más sistemas de aplicaciones. La situación física e implementación de la base de datos es transparente para los programas de aplicaciones, y en realidad, se puede mover y reestructurar la base de datos física sin afectar a los programas. Físicamente, en su forma más simple, una base de datos Oracle no es más que un conjunto de archivos que se encuentran en alguna parte del disco. La situación física de estos archivos es irrelevante para la función de la base de datos (aunque es importante para su rendimiento). Los archivos son binarios y sólo se puede acceder a ellos utilizando el software del núcleo de Oracle. La consulta de los datos de los archivos de la base de datos se realiza generalmente con una de las herramientas de Oracle (tales como SQL * Plus). Lógicamente, la base de datos está dividida en un conjunto de cuentas de usuario de Oracle (esquemas), cada una de las cuales está identificada por un nombre de usuario (username) y una contraseña (password) única, exclusiva para esa base de datos. Con frecuencia se confunde una cuenta de usuario Oracle con una base de datos, pero esto no es estrictamente correcto. Se pueden usar dos cuentas de usuario Oracle para contener datos para dos sistemas de aplicaciones completamente diferentes; se tendrían dos bases de datos lógicas implementadas en la misma base de datos física utilizando dos cuentas de usuario Oracle. 5. Archivos Oracle Hay tres conjuntos de archivos en el disco que componen una base de datos, son los siguientes: - Archivos de bases de datos. - Archivos de control. - Registros de rehacer. Los más importantes son los archivos de bases de datos, en los cuales reside la base de datos. Los archivos de control y los registros de rehacer soportan la funcionalidad de la arquitectura en sí. Los tres conjuntos de archivos deben estar presentes, abiertos y disponibles para que Oracle pueda utilizar cualquier dato de la base de datos. 6. SQL *Plus SQL *Plus es la forma en que se definen y manipulan los datos en la base de datos relacional de Oracle. SQL (Structured Query Languaje, lenguaje de consulta 5

estructurado) es el estándar adoptado por todos los fabricantes de bases de datos. El SQL *Plus de Oracle es un superconjunto de SQL estándar: cumple con el estándar de los lenguajes compatibles con SQL, y tiene además una serie de extensiones específicas de Oracle (de ahí el nombre: SQL+Plus). SQL *Plus, cumple con los estándares ANSI (American National Standars Institute) e ISO (International Standards Organization). Para entrar en SQL*Plus basta con pulsar dos veces sobre el icono de SQL*Plus e introducir el login y password. Si no ha ocurrido ningún error se deberá poder ver el siguiente indicativo: SQL>. La interfaz es de lenguajes de comandos, el menú de opciones solo tiene las opciones clásicas de Fichero, Editar, Opciones, Ayuda. 7. SQL Después de la aparición del primer artículo de E.F. Codd [CODD70], "A Relational Model of Data for Large Data Banks" en 1970, que presentaba por primera vez la teoría de las bases de datos relacionales, varios laboratorios de investigación y universidades intensificaron sus trabajos para experimentar esta teoría. También IBM y la universidad de Berkeley comenzaron a desarrollar sus prototipos respectivos System R e INGRES. Un esfuerzo particular se realizó para concebir e implementar (realizar) un lenguaje relacional potente, incluyendo todas las posibilidades del algebra relacional. Varios lenguajes hicieron su aparición entre los años 70 y 76, siendo los principales QUEL y SEQUEL, implantados respectivamente sobre INGRES y System R. Este último conoció un éxito rápido y ha sido corregido y enriquecido en varias versiones para establecerse finalmente en 1980 con el nombre de SQL. Las siglas SQL (pronunciado es-kiu-el en inglés) significan Structured Query Language. Ha sido utilizado por los SGBD de IBM SQL/DS y DB2 comercializados respectivamente en 1981 y 1983. El Instituto Nacional Americano de Normalizacion (ANSI) encargó en 1982 a un comité (X3H2) proponer un lenguaje relacional. Después de cuatro años de trabajo, una primera norma fue adoptada por el ANSI en 1986 y engloba principalmente la version IBM de SQL. Esta norma es comúnmente llamada SQL86. Ha sido adoptada por otras organizaciones de normalización tales como el ISO y X/OPEN en 1987. En enero de 1989, el ANSI publicó una extensión a la norma con el nombre de SQL89. Los comites de ISO y ANSI han seguido trabajando durante varios años para ratificar un estandar llamado oficialmente "International Standard ISO/IEC 9075:1992 Database Language SQL", conocido como SQL92 y que la norma en vigor actualmente. En el apéndice C de [DATE93] puede encontrarse una comparación entre las normas SQL89 y SQL92. Actualmente se está trabajando yá en una nueva extensión que se conoce como SQL3 (apéndice D en [DATE93]). 6

La simplicidad del lenguaje SQL y su normalización son las principales razones de su éxito que no será fácil de desmontar. Actualmente, existe un centenar de productos soportando versiones mas o menos próximas a la norma. 8. SQL y SQL*Plus. SQL *Plus es la forma en que se definen y manipulan los datos en la base de datos relacional de Oracle. SQL (Structured Query Languaje, lenguaje de consulta estructurado) es el estándar adoptado por todos los fabricantes de bases de datos. El SQL *Plus de Oracle es un superconjunto de SQL estándar: cumple con el estándar de los lenguajes compatibles con SQL, y tiene además una serie de extensiones específicas de Oracle (de ahí el nombre: SQL*Plus). SQL *Plus, cumple con los estándares ANSI (American National Standars Institute) e ISO (International Standards Organization). Oracle tiene dos optimizadores de consultas SQL, uno basado en costes y otro basado en reglas, ambos analizan la sintaxis y le dan formato en una instrucción eficiente antes de que el motor de la base de datos la reciba para procesarla. El administrador, o gestor, de la base de datos DBA determina qué optimizador actúa por defecto para cada instancia de la base de datos. Objetos básicos. Antes de presentar el lenguaje SQL*Plus de Oracle, juzgamos necesario introducir los objetos que manipula este lenguaje. Estos objetos son más o menos similares, en todos los SGBD relacionales y tienen su origen en los conceptos definidos en el modelo que les reúne. SQL manipula cinco familias de objetos a saber: las bases de datos, las tablas, las vistas, los usuarios, los índices. Base de Datos Oracle permite describir el universo a modelizar, en una base de datos, que se nos presenta como un recipiente receptor de las informaciones del mundo real. Una base de datos está compuesta por un conjunto de tablas del sistema, creadas implícitamente por el sistema en el momento de la creación de la base y de un conjunto de tablas y vistas que describen los objetos del universo del discurso. Una base vacía está compuesta de tablas desprovistas de datos y de tablas del sistema que almacenan las informaciones relativas al estado de la base de datos. 7

Tabla. En Oracle el universo del sistema está descrito con la ayuda de tablas; cada una de estas tablas representa una clase de objetos o a una asociación entre clases de objetos. Una tabla está compuesta de columnas y de líneas o filas llamadas convencionalmente atributos y registros respectivamente. Una columna representa una característica de la entidad tal como la identificación de un cliente o su nombre. Debe tener nombre y tipo. Los datos de una misma columna son obligatoriamente del mismo tipo (cadenas de caracteres, numéricos, etc.). Una columna puede estar forzada con una restricción de integridad NOT NULL, que exige la presencia de datos en esa columna obligatoriamente. Por defecto, toda definición de columna es declarada NULL. En el seno de una misma tabla, el identificador de una columna debe ser único, pero puede ser utilizado en otras tablas. El número de columnas componentes de una tabla determina su grado. Las posiciones de las columnas en la tabla son las especificadas durante la creación de la misma. Una fila es una combinación de los diferentes valores de columnas de una tabla y representa una ocurrencia. El número de filas en la tabla determina su cardinalidad. Una tabla así, es llamada en la norma ANSI una tabla base. Vista. Una vista es una tabla virtual definida lógicamente sobre las tablas de la base. Su definición utiliza la orden de extracción de datos SELECT, que es la única componente almacenada en la base. El objetivo de las vistas es permitir a los usuarios manipular los subconjuntos de datos asegurando un máximo control de integridad y de confidencialidad de los datos. Una vista se nombra como una tabla y su identificador debe ser único en una base de datos con respecto a las otras vistas y tablas. Usuario. Uno de los objetivos de un SGBD es el de afianzar la seguridad de acceso a los datos. Para hacer esto, SQL genera tanto los usuarios y sus permisos de acceso, como los datos integrados en la base. Para acceder a una base de datos cada usuario debe disponer de una autorización de acceso a la base y de utilización de los datos. El propietario de la base de datos (owner) es la única persona que puede autorizar a un grupo de usuarios a acceder a su base. Estos permisos se dan a través de órdenes SQL y pueden ser retirados en cualquier momento. Índice. SQL manipula los índices para aumentar el rendimiento del sistema y asegurar la integridad de los datos. A cada tabla que se crea se le asocia una tabla índice, almacenando 8

los índices de las ocurrencias de la tabla según columnas especificadas en la creación de los mismos. Los índices se pueden clasificar en orden creciente o decreciente. Elementos del lenguaje. Formato de sentencias SQL. SQL es un lenguaje de formato libre que trata todos los espacios en blanco contiguos (incluyendo blancos, tabs o newlines) como un único blanco. Se pueden incluir comentarios precedidos por el símbolo -- si el comentario ocupa solo una línea ó usar el símbolo /* para iniciar un comentario que ocupará más de una línea. Este tipo de comentario debe terminar siempre con el símbolo */. Identificadores. Un identificador es el nombre de un objeto. Puede consistir de letras, dígitos y subrayados (_). El primer carácter debe ser una letra. Su longitud máxima es de 18 caracteres. Los tipos de identificadores usados son: Base de Datos: Tabla: Columna: Propietario: Hasta 10 caracteres (es el nombre del directorio UNIX). Debe ser único en la base de datos. Debe ser único en una tabla. Si hay dos columnas con el mismo nombre en tablas diferentes se identifican con la notación <tabla>.<columna>. En una base de datos con MODE ANSI el nombre de cada objeto se cualifica con el nombre del usuario que lo creó: <propietario>.<objeto>. El nombre del propietario puede tener hasta 8 caracteres de longitud. Tipos de Datos. ORACLE-SQL tiene los tipos de datos siguientes: CHAR(tamaño) Almacena datos de tipo carácter de longitud fija, con un tamaño máximo de 2.000. VARCHAR2 (tamaño) Almacena datos de tipo carácter de longitud variable, con un tamaño máximo de 4.000. NUMBER(1,d) Almacena datos numéricos, siendo << l >> la longitud y <<d >> el número de dígitos decimales. BLOB Es un objeto binario de gran tamaño, siendo el tamaño máximo 4 GB (gigabytes). RAW(tamaño) Datos binarios puros con una longitud máxima de 2.000 bytes. DATE Almacena fechas desde el 1 de enero del 4712 a.c. hasta el 31 de diciembre del 4712 d.c. LONG Almacena datos de tipo carácter de longitud variable, hasta 2 gigabytes. 9

Nota: Cuando se definen columnas numéricas con una cierta longitud y un cierto número de dígitos decimales, la longitud define el número total de dígitos, incluyendo las partes decimal y entera. Por ejemplo, el número mayor que se puede almacenar en number(4,2) es 99,99. Valores nulos. Según el creador del modelo relacional E.F. Codd, un sistema relacional debe permitir la gestión de valores nulos (null). Para comprender la noción de valores nulos, pongamos el ejemplo de dar de alta a un cliente del cual no conocemos aún el número de teléfono. Qué hacemos, introducir un valor cualquiera o mantener vacío ese campo? Según el tipo de ese campo, la introducción de un carácter cualquiera 0 o de una cadena vacia " " no ocupa el mismo tamaño, que la notación de valores nulos, que indica que el contenido de este campo es indefinido independientemente del tipo. SQL utiliza por defecto valores nulos en la definición de todas las columnas. Para no autorizar la introducción de valores nulos, se debe indicar esta restricción con la opción NOT NULL después de especificar el tipo de datos. ORACLE utiliza una lógica trivaluada para trabajar con los valores nulos. Así, cualquier expresión aritmética que contenga un valor nulo, su valor también será nulo. En una expresión lógica con valores nulos hay que aplicar las tablas de verdad con tres valores ya conocidas. 9. Clasificación de las ordenes SQL*Plus. SQL*Plus es una extensión de la norma SQL. Esta extensión afecta a las órdenes de definición y de manipulación de datos. Se distinguen cinco familias de ordenes: - El lenguaje de definición de datos: Este componente permite describir los objetos, modelizando el universo del discurso. Ofrece las órdenes para crear o suprimir una base de datos, las tablas y las vistas en una base, etc. Oracle8 permite la utilización de particiones de tablas para aumentar la disponibilidad de grandes bases de datos consiguiendo de esta forma que sean más fáciles de administrar.. - El lenguaje de manipulación de datos: Este componente ofrece toda la riqueza de los operadores relacionales y de conjuntos para extraer y poner a punto los datos de una base. - El lenguaje de control de datos: A través de esta componente podemos mantener la confidencialidad y la integridad de los datos. El acceso a los datos está protegido contra usuarios malintencionados. 10

- Control de transacciones y concurrencia: Esta parte del lenguaje está compuesto de un conjunto de ordenes que permiten la gestión de transacciones y de acceso concurrente. Este componente garantiza la integridad y la coherencia de los datos. - Administración de datos: Varias tareas son agrupadas en la administración, a saber, la mejora del rendimiento, los mecanismos de salvaguarda o de seguridad y restauración de la base, la vigilancia del estado de la base y su evolución. 11

9.1. SQL: Lenguaje de definición de datos (DDL) El lenguaje de definición de datos permite: Definir y crear una nueva tabla. Suprimir una tabla que ya no se necesita. Cambiar la definición de una tabla existente. Definir una tabla virtual (o vista) de datos. Establecer controles de seguridad para una base de datos. Construir un índice para hacer más rápido el acceso a la tabla. Controlar el almacenamiento físico de los datos por parte del DBMS. A continuación exponemos los órdenes de SQL del lenguaje de manipulación de datos: Sentencias sobre Esquemas. Crear un esquema: Crea múltiples tablas y/o vistas en una simple transacción, también se puede conceder privilegios: CREATE SCHEMA AUTHORIZATION <nombre usuario> { <conjunto de sentencias CREATE y GRANT> } Sentencias sobre Bases de Datos. Crear una base de datos: CREATE DATABASE <nombre base de datos> Seleccionar y abrir una base de datos: DATABASE <nombre base de datos> [EXCLUSIVE] EXCLUSIVE: no permitirá el acceso concurrente de otros usuarios. Cerrar la base de datos abierta: CLOSE DATABASE Borrar físicamente una base de datos: DROP DATABASE <nombre base de datos> 12

Sentencias sobre Tablas. Crear una tabla: CREATE TABLE <nombre de tabla> (nombre_columna1 tipo [restricción de columna],... nombre_columnan tipo [restricción de columna], [restricción_de_tabla]); Restricciones de columnas: NOT NULL: La columna no permitirá valores nulos. CONSTRAINT: Permite asociar un nombre a una restricción. DEFAULT valor: La columna tendrá un valor por defecto. El DBMS utiliza este valor cuando no se especifica un valor para dicha columna. PRIMARY KEY: Permite indicar que esta columna forma parte de la clave primaria. REFERENCES nombretabla [ON DELETE CASCADE]: Es la manera de indicar que este campo, es clave externa y hace referencia a la clave primaria de otra tabla. Esta clave ajena es sólo de una columna. UNIQUE: Obliga a que los valores de una columna tomen valores únicos (no puede haber dos filas con igual valor). Se implementa creando un índice para dicha(s) columna(s). CHECK (condición): Permite indicar que condición debe de cumplir esa columna. Restricciones de tablas: PRIMARY KEY (columna1, columna2...): Permite indicar que columna/s forma/n la clave primaria. FOREIGN KEY (columna1, columna2...) REFERENCES nombretabla [ON DELETE CASCADE]: Indica que este campo/s, es/son clave externa y hace referencia a la clave primaria de otra tabla. UNIQUE (columna1, columna2...): El valor combinado de una o varias columnas va a ser único. CHECK (condición): Permite indicar que condición debe de cumplir varios campos de la tabla. 13

Renombrar una tabla RENAME TABLE <nombre tabla existente> TO <nuevo nombre tabla> Eliminar una tabla de la base de datos DROP TABLE <nombre tabla> [CASCADE CONSTRAINT] Modificar una tabla: ALTER TABLE <nombre tabla> {ADD <nombre columna nueva> <tipo de dato> [DEFAULT constante] CONSTRAINT restricciones CONSTRAINT restricciones MODIFY <nombre columna> [<tipo de dato>] [DEFAULT constante] CONSTRAINT restricciones DROP <nombre columna> Donde restricciones puede ser: [NOT]NULL {PRIMARY KEY UNIQUE} [REFERENCESA tabla][on DELETE CASCADE] [CHECK condición] Sentencias sobre Índices. Al crear una clave principal se le asigna automáticamente un índice para hacer los accesos más rápidos. Si hay otra columna a la que se va a acceder a menudo, se le puede asignar también un índice para hacer que esos accesos sean también más rápidos. Problema: ocupan espacio. Crear un índice CREATE [UNIQUE] INDEX <nombre índice> ON <nombre tabla> (<nombre columna> [ASC DESC],...) UNIQUE: ASC DESC: el índice no admite claves duplicadas. orden ascendente o descendente respectivamente. Borrar un índice DROP INDEX <nombre índice> 14

Cambiar el nombre de un índice ALTER INDEX <nombre antiguo índice> RENAME TO <nuevo nombre> Sentencias sobre Sinónimos Si una tabla tiene un nombre muy largo se le puede asignar un sinónimo que permita trabajar más cómodamente. Crear un sinónimo CREATE SYNONYM <nombre sinónimo> FOR <nombre tabla> Borrar un sinónimo: DROP SYNONYM <nombre sinónimo> 15

9.2. SQL: Lenguaje de Manipulación de Datos (DML) Inserción: sentencia INSERT Consiste en añadir una o varias filas a una tabla. La sentencia es la siguiente: INSERT INTO <nombre tabla> [(<lista de columnas>)] {VALUES (<lista de valores>) <sentencia SELECT> } Se puede emplear para dos objetivos distintos: a) Insertar una fila en una tabla: INSERT INTO <nombre tabla> [(<lista de columnas>)] VALUES (<lista de valores>) b) Insertar en una tabla el resultado de una consulta (inserción multifila): INSERT INTO <nombre tabla> [(<lista de columnas>)] <sentencia SELECT> NOTAS: Los valores de tipo DATE o CHAR se deben encerrar entre comillas simples. Si no se indica la lista de columnas, se consideran todas las de la tabla. En la opción b) la tabla donde se inserta se puede utilizar en la consulta SELECT. En la opción b) la consulta no puede obtener una cláusula ORDER BY. Los valores insertados deben ser de un tipo compatible con el de las columnas de la tabla. Eliminación: sentencia DELETE Permite eliminar filas de una tabla. La sentencia es: DELETE FROM <nombre tabla> [WHERE <condición>] NOTAS: Si no se pone condición, se borran todas las filas de la tabla. 16

Modificación: sentencia UPDATE Se emplea para modificar los datos de las filas existentes en una tabla: UPDATE <nombre tabla> SET { <columna> = <expresión> [,...] {(<lista de columnas>) *} = (<lista de expresiones>) } [WHERE <condición>] NOTAS: Una expresión puede estar formada por una subconsulta SELECT entre paréntesis cuyo resultado es una única fila de una sola columna (un único valor simple). La lista de columnas está formada por aquellas columnas a las cuales se les modificará su valor. Si se omite la cláusula WHERE entonces se actualizan todas las filas de la tabla destino. En la condición también puede escribirse una subconsulta. Selección: sentencia SELECT La sintaxis de la orden SELECT consta básicamente de las cláusulas SELECT y FROM como obligatorias y de otras varias cláusulas opcionales: <cláusula SELECT> <cláusula FROM> [ <cláusula WHERE> ] [ <cláusula GROUP BY> [ <cláusula HAVING> ] ] [ <cláusula ORDER BY>] Las cláusulas GROUP BY y HAVING se verán otra práctica. El formato detallado es: SELECT [ALL DISTINCT UNIQUE ] <lista de selecciones> FROM <nombre de tabla> [alias de tabla] [,...] [WHERE <condición>] [GROUP BY <lista de columnas> [HAVING <condición>] ] [ORDER BY <nombre de columna> [ASC DESC] [,...] ] Permite indicar los datos (columnas o expresiones) que queremos obtener. SELECT [ALL DISTINCT UNIQUE ] <lista de selecciones> DISTINCT: <lista de selecciones>: Elimina las filas duplicadas en el resultado de la consulta. UNIQUE es igual que DISTINCT. Lista de nombre de columnas o expresiones separadas por comas. 17

NOTAS: Las columnas ambiguas se preceden del nombre de la tabla: <tabla>.<columna> * refiere a todas las columnas de todas las tablas. Cláusula FROM Permite indicar las tablas que contienen los datos. FROM { <nombre de tabla> [alias de tabla] } [,...] <alias de tabla>: Es un sinónimo activo sólo en el ámbito de la sentencia SELECT. Cláusula WHERE. Sirve para indicar la condición que deben cumplir las filas resultantes. WHERE <condición> Una condición está formada por una o varias expresiones condicionales conectadas por los operadores lógicos AND, OR y NOT. Una expresiones condicional tiene una de las formas siguientes: a) Expresiones de comparación: <expresión1> <operador relacional> <expresión2> Verifica si las dos expresiones satisfacen la comparación. < expresión1> [NOT] BETWEEN <expresión2> AND <expresión2> Verifica si la expresión1tiene un valor comprendido entre los valores de la expresión2 y la expresión3. <expresión> [NOT] IN (<lista de valores>) Verifica si la expresión tiene un valor de los indicados en la lista de valores. <nombre de columna> [NOT] LIKE <string> [ESCAPE <carácter de escape> ] Verifica si el valor de la columna se adapta al patrón de búsqueda (string). Se admiten caracteres comodín ( "%" representa cero o más caracteres, "_" representa un único carácter). El carácter de escape / permite referirse a los caracteres comodín como caracteres y no como comodines. <nombre de columna> IS [NOT] NULL Verifica si el valor de la columna es nulo. 18

b) Expresiones de combinación (JOIN): Una combinación entre dos o más tablas se representa con una comparación entre al menos una columna de cada tabla. c) Expresión con subconsulta: Permiten comparar el valor de una expresión con los resultados de una sentencia SELECT (subconsulta). De esta forma se pueden producir encadenamientos de sentencias SELECT. Se estudiará en la próxima práctica. Cláusula ORDER BY Permite ordenar el resultado de la consulta. ORDER BY <nombre de columna> [ASC DESC] [,...] DESC: los valores de la columna afectada estarán en orden descendente. 10. Error! Marcador no definido.composición de tablas La composición (join) de tablas se produce cuando se combinan datos de dos o más tablas. Es un caso particular de la operación del álgebra relacional llamada producto cartesiano. Para poder realizar la composición deben existir columnas comunes a las tablas, de forma que al componer dos tablas A y B con las columnas comunes X e Y se satisface una condición del tipo A.X=B.Y o similar. Estas condiciones se incluyen en la condición de la cláusula WHERE. Error! Marcador no definido.equicomposición. Es el caso más habitual, en el cual la condición es una igualdad entre dos columnas: A.X = B.Y Thetacomposición. Similar a la anterior, pero el operador relacional que realiza la comparación es distinto de la igualdad: A.X θ B.Y θ { >, <, <>, >=, <= } 19

Error! Marcador no definido.composición múltiple. Es la generalización a más de dos tablas. Por ejemplo, para tres tablas la condición será del tipo: (A.X = B.Y1) AND (B.Y2 = C.Z) Error! Marcador no definido.autocomposición. Es una composición de una tabla consigo misma. Para poder realizarla, obligatoriamente hay que emplear alias dentro de la orden SELECT que eviten los problemas de ambigüedad: SELECT... FROM <tabla> X, <tabla> Y where X.<columna1> = Y.<columna2> Error! Marcador no definido.tabla A Tabla B a b c d e 1 1 1 'x' 'y' 2 3 2 'z' 'w' la equicomposición con A.b=B.c daría: Error! Marcador no definido.composición normal A.a A.b B.d B.e 1 1 'x' 'y' Error! Marcador no definido.expresiones Una expresión consiste en: a) Un nombre de columna, una constante o cualquier combinación de ellas conectadas por operadores aritméticos. b) Un nombre de función (de agregación, de tratamiento de fechas,..). 20

Error! Marcador no definido. Operadores. a) Aritméticos: + - * / b) De relación: = <> (!=) > >= < <= 21

EJERCICIOS Crear la base de datos ACADEM con las siguientes tablas: Departamento. Contiene el código (tres letras mayúsculas) y el nombre (40 caracteres) de los departamentos del centro. La clave primaria es el código. Area. Contiene cada una de las áreas de conocimiento a las que pueden pertenecer las asignaturas del centro. Sus atributos son el código (tres letras mayúsculas) y el nombre (55 caracteres). La clave primaria es el código. Profesor. Se almacena la información de los profesores del centro. Sus atributos son: el código (dos dígitos), apellidos (25 caracteres cada uno), nombre (20 caracteres), activo (indica si está en activo o no), categoría administrativa (4 caracteres, siendo TU titular de universidad, CEU catedrático de Escuela Universitaria, TEU titular de escuela universitaria, AU ayudante de universidad y AEU ayudante de Escuela Universitaria, dedicación ( TC si es tiempo completo y n h son n horas semanales) y fechas de alta y baja en plantilla. La clave primaria es el código aunque también interesa buscar por nombre y apellidos. Grupo. En función del número de alumnos y del tamaño de las clases se crean diversos grupos. Cada grupo se identifica por el curso, su clase ( T si es de teoría y P si es de prácticas) y su código (3 caracteres alfanuméricos). Además tiene un nombre de 30 caracteres. Docencia. Contiene el horario lectivo del centro. Para cada hora de clase impartida se quiere saber el grupo, la asignatura, el local, el día de la semana, hora, periodicidad (1 para todas las semanas, 2 para cada dos semanas). No pueden coincidir a la vez en el mismo local, mismo día y hora clases diferentes a no ser que se impartan en semanas alternas o en cuatrimestres diferentes. Un profesor no puede impartir dos horas de clase distintas el mismo día a la misma hora, salvo que sean semanas alternas o en distintos cuatrimestres. Asignaturas. Contiene las asignaturas que se imparten en el centro, con las siguientes columnas: siglas (hasta 6 letras), nombre (40 caracteres), número de créditos (entero), curso en que se imparte (entero, por ejemplo, 1 para primero), anualidad ('A' si es anual, '1' si es del primer cuatrimestre y '2' si es del segundo cuatrimestre; si no se imparte tomará el valor nulo), clase ( T si es troncal, 'O' obligatoria y 'P' optativa), horas semanales de teoría (entero), horas semanales de prácticas (entero), número de grupos de teoría (entero), número de grupos de prácticas (entero) y número de alumnos matriculados (entero). La clave primaria es la sigla. También se tiene como clave secundaria el nombre. Locales. Contiene la relación de espacios (aulas, seminarios, laboratorios, despachos de profesores, etc.) de que dispone el centro. Las columnas son: código (5 caracteres alfanuméricos), nombre (40 caracteres), docente (indica si es de uso docente o no), capacidad (entero), edificio (10 caracteres) y situación física (40 caracteres). 22

1. Listar todos los datos disponibles de todos los departamentos. 2. Listar el código y nombre de las áreas de conocimiento. 3. Listar los tipos de categorías que tienen los profesores (no mostrar repetidos). 4. Listar, código y nombre (nombre de pila y apellidos) de los profesores en activo (1=sí, 0=no). 5. Listar código y nombre de los profesores con código mayor de 20 y menor de 40. 6. Listar los profesores que son numerarios (categorías "TU", "CEU" o "TEU"). 7. Listar los profesores que contienen "Ruiz" en su primer o segundo apellidos. 8. Listar los departamentos ordenados por su nombre. 9. Listar los profesores en activo ordenados por apellidos y nombre. 10. Listar las áreas de conocimiento de cada departamento ordenadas por su nombre. Los departamentos también se ordenan por su nombre. 11. Listar los profesores del departamento de informática (código = INF ) que están en activo ordenados alfabéticamente. 12. Listar el nombre de cada departamento y el nombre de los profesores que lo forman. 23

BIBLIOGRAFÍA Abbey, M y Corey, M.J. (1997). Oracle 8. Guía de Aprendizaje. Ed. Oracle Press AIS Inc (1998). La Biblia de Oracle 8. Ed. Anaya Freeze, W.S. (1998). SQL. Manual de referencia del programador. Ed. Paraninfo. 24