Diseño de Bases de Datos y Seguridad en la Información &8562



Documentos relacionados
Grupo Kybele, Pág. 1

Lenguaje de consulta de datos SELECT PARTE 2

Tema 5. Lenguaje de Definición de Datos

Introducción 1 Recuperación de Datos mediante la Sentencia SQL SELECT

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos:

ÍNDICE. Introducción... Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1

Práctica 3: Lenguaje SQL 2ª Parte: Definición de datos. Objetivos

ÍNDICE INTRODUCCIÓN...17

CREACIÓN, SUPRESIÓN Y MODIFICACIÓN DE TABLAS.

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL)

Introducción a SQL (DDL)

SQL: Lenguaje de definición de datos (DDL) (*) DBMS: DATA BASE MANAGEMENT SYSTEM. SGBD: SISTEMAS GESTOR DE BASE DE DATOS

(LDD) VARCHAR2 (n) : alfanumérico (hasta 240) NUMBER (n,p) : números con signo y punto decimal

Bases de Datos 1. Teórico: Structured Query Language

Práctica 3: El lenguaje SQL (2ª parte). (6ª sesión).

GUÍA DE TRABAJO N 5 GRADO 11 Programación y Diseño de Articulación SENA Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6

6.1. Introducción. Guía 5. SQL.

1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón

GUÍA DE TRABAJO N 7 GRADO 11. Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6 GUIA N 7 COMANDOS MYSQL II. CREAR UNA TABLA

Oracle Database 12c SQL and PLSQL Fundamentals

Tipos de datos en SQL. SQL. DDL (Data Definition Language) CREATE DOMAIN CREATE TABLE CREATE TABLE. CREATE TABLE con restricciones de atributo

Diseño de bases de datos

Modulo I: Introducción Gestores de Bases De Datos

RESUMEN DEL LENGUAJE SQL

Taller de Herramientas de Software : ST 213 Secc: V y W

Triggers 24/12/2016. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle

Modelamiento y Diseño de Base de Datos

Desarrollo Web en Entorno Servidor

GBD Diseño físico de DDBB

FUNDAMENTOS ORACLE 12C

A. Introducción. B. Los DATABASES TRIGGERS. PL/SQL en objetos de la base de datos. Oracle 11g - SQL, PL/SQL, SQL*Plus 271

SQL: Lenguaje de Interrogación Estructurado

Se considera a Oracle como uno de los sistemas de bases de datos más completos, destacando su:

Tutorial MySql - 1 -

ÍNDICE. Introducción... XVII. Capítulo 1. Oracle 10g y el Grid Computing... 1

RESUMEN SQL. Tipo de coincidencia Modelo Planteado Coincide No coincide. Varios caracteres 'ab*' 'abcdefg', 'abc' 'cab', 'aab'

El SQL es un lenguaje estándar de programación para el acceso a bases de datos.

INDICE CARTAS DESCRIPTIVAS S3

Oracle Fundamentos. Programa de Estudio.

Oracle Fundamentos. Programa de Estudio.

PL/SQL avanzado: Secuencias, triggers, cursores y subprogramas

Manejo de Tablas y Llaves Foráneas

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

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

Ambos conjuntos son completamente distintos: propósito, acciones,... L M D. datos

El Lenguaje SQL. Funciones en SQL

Sistemas y Aplicaciones Informáticas

Manual Aprendiendo Practicando Oracle SQL (Spanish Edition) Click here if your download doesn"t start automatically

Tema 4. DML (Parte I)

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008

SQL. Amparo López Gaona. México, D.F. Noviembre 2003

Manual de Sentencias Básicas en SQL

ORACLE 10g. Descripción A QUIEN VA DIRIGIDO?

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

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

DISPARADORES EN SQL DISPARADORES EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999

Un proyecto de IBM llamado Sistem/R construye un prototipo simple llamado SQUARE que después se transformó en SQL.

Access SQL: DDL y DML. Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos.

Bases de Datos 2. Teórico

Diseño de bases de datos Práctica-1 Definición de datos

Guía práctica SQL. (c) Francisco Charte Ojeda

A.1. Definiciones de datos en SQL

SQL. Structured Query Language

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

INFORMÁTICA MÉDICA. Profesor: MsC. Liz Armenteros Chávez

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

ÍNDICE PRIMERA PARTE... 17

SQL Los fundamentos del lenguaje

T07 Opciones de integridad referencial

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

ÍNDICE INTRODUCCIÓN...13

UNIVERSIDADE DE VIGO ESCOLA TÉCNICA SUPERIOR DE ENXEÑEIROS DE MINAS MÉTODOS COMPUTACIONALES. Transparencias

8 SQL SERVER 2008 RA-MA

El lenguaje SQL III: Creación de bases de datos y seguridad. Introducción

SQL Oracle 12c. Este curso le permitira saber y conocer:

Tema 1. Introducción a MySQL. José Muñoz Jimeno Octubre 2015

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

CERTIFICADO DE PROFESIONALIDAD IFCD0112

Objetos de Bases de Datos

ADMINISTRACION DE ORACLE 9i Guía de estudio (OCA) TEMA 1

Vistas en InformiX Sistemas de Bases de Datos II EMT CETP A/S Leonardo Carámbula

SQL. Orígenes y Evolución

Oracle Database: Introducción a SQL

BASES DE DATOS 2º CURSO E.U.I. / F.I. Práctica 3: El lenguaje SQL. 2ª Parte: Definición de datos 10 DE ABRIL DE 2000

MATERIAL INTRODUCTORIO ORACLE 11G

Unidad III. Bases de Datos

NORMAS DE DESARROLLO DE APLICACIONES PARA LA

Unidad. Lenguaje SQL. (Structured Query Language)

Concepto de vista. (con ciertas limitaciones). nivel físico) Una vista es una tabla virtual (no tiene una correspondencia a

Introducción a SQL 14/11/2012. Introducción a SQL

BASES DE DATO TO I VISTAS curso 2008

APÉNDICE SQL (Structures Query Language)

Integridad Referencial. Restricciones (constraints)

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

Consultas con combinaciones

Objetivos: Descripción del curso. Curso: Dirigido a: INTRODUCCIÓN A SQL - ORACLE UNIVERSIDAD NACIONAL DE INGENIERÍA

Transcripción:

',6(f2'(%$6(6'('$726<6(*85,'$'(1/$,1)250$&,Ï1 &8562 $3817(63$5$/$635È&7,&$6HU&8$75,0(675( Para cualquier consulta a la sintaxis de las órdenes SQL o SQL*PLUS puede consultarse cualquier libro de ORACLE, o los manuales gratuitos en pdf o en línea accesibles a partir de la página de la asignatura (en http://kybele.escet.urjc.es/). Para las prácticas voluntarias del primer parcial se utilizará el servidor relacional de ORACLE. El programa cliente que se utilizará será SQL*PLUS. SQL*PLUS admite las sentencias SQL propias de ORACLE más otras propias para el formateo de la salida, etc. Fundamentalmente se utilizarán los siguientes comandos de SQL*PLUS: 3$66:25': Para cambiar el password del usuario (también puede cambiarse mediante ALTER USER). /: ejecuta el comando SQL o PL/SQL almacenado en el buffer. RUN: lista y ejecuta el comando SQL o PL/SQL almacenado en el buffer. HOST comando: ejecuta un comando del SO. LIST: lista el contenido del buffer. @ o 67$57 fichero: ejecuta un fichero EDIT [fichero]: edita el fichero, o bien la sentencia almacenada en el buffer. Para poder utilizar esta opción en el laboratorio el fichero auxiliar utilizado por SQL*PLUS debe estar en un directorio en el que el usuario tenga permiso de escritura. Puede cambiar el directorio por defecto en Opciones/Editfile. DEFINE [variable[=valor]]: define o muestra el valor de variables SPOOL [fichero OFF]: manda la salida a fichero o deja de hacerlo. '(6&5,%( objeto: describe una tabla, vista o sinónimo. Existen otras instrucciones útiles de edición y carga de ficheros como APPEND, CHANGE, GET, SAVE. La forma de trabajar será utilizar un editor de texto para guardar las instrucciones en un VFULSW(creación de las tablas, inserción de datos, consultas, etc.). Es conveniente incluir en el VFULSW antes de cada creación de tabla un borrado de la misma mediante la instrucción DROP TABLE tabla [CASCADE CONSTRAINTS]. De esta forma nos aseguramos que la tabla no existe, evitando errores. Mediante la opción CASCADE CONSTRAINTS nos aseguramos que la tabla se borra aunque existan dependencias entre tablas que impedirían su borrado. Aunque el lenguaje SQL admitido por ORACLE es muy similar al estándar visto en clase (SQL:1999), existen algunas diferencias que se irán descubriendo en el desarrollo de las prácticas. Las más importantes son los tipos de datos, las opciones de borrado y modificación de claves ajenas, y la creación de dominios (ORACLE no admite dominios, los cuales deberán simularse mediante CHECKs o tablas auxiliares). ORACLE admite una gran variedad de tipos de datos. Los más importantes, que serán los que fundamentalmente se utilicen en las prácticas son: CHAR (tamaño): cadenas de caracteres de longitud fija. VARCHAR2 (tamaño): cadenas de caracteres de longitud variable, hasta un máximo tamaño. NUMBER (l,d): número de un máximo de l dígitos, d de los cuales son decimales. Grupo Kybele, http://kybele.escet.urjc.es/ Pág. 1

DATE: fecha. Probablemente sea necesario utilizar funciones de formateo de tipos, tales como to_date o to_char (véase más adelante en este mismo documento). Aunque en los manuales podrá consultarse la sintaxis completa del SQL, la sintaxis básica de la instrucción de creación de tablas es la siguiente: CREATE TABLE nombre ( columna1 tipodatos [DEFAULT valorpordefecto] [restricciones de columna1],... columnan tipodatos [DEFAULT valorpordefecto] [restricciones de columnan], [restricción de tabla],... [restricción de tabla]); Las restricciones de columna son: [CONSTRAINT nombrerestricción] -> [NOT] NULL UNIQUE/PRIMARY KEY REFERENCES tabla [(columna)] [ON DELETE CASCADE/SET NULL] CHECK (condición) [CONSTRAINT nombrerestricción] -> UNIQUE/PRIMARY KEY (columnas) FOREIGN KEY (columnas) REFERENCES tabla [(columnas)] [ON DELETE CASCADE/SET NULL] CHECK (condición) Como vemos en la sintaxis, no es obligatorio darle un nombre a las restricciones, aunque puede resultar conveniente para poder identificar posibles errores en el caso de las inserciones rechazadas por ORACLE. ORACLE sólo admite opciones en el caso de borrado de claves ajenas (a diferencia del estándar). Las únicas opciones admitidas son borrado en cascada, con puesta a nulos y restringido (que es la opción por defecto en el caso de no poner nada). Evidentemente, cuando una clave ajena tiene como opción de borrado la puesta a nulos, las columnas asociadas deberán admitir este valor. ORACLE, como todo SGBD, mantiene un catálogo que almacena datos acerca de los usuarios, tablas, privilegios, etc. Podemos acceder al catálogo por medio de vistas que pueden consultarse. Realizando una consulta a la vista ALL_CATALOG vemos todos los objetos (tablas, vistas, sinónimos) visibles por el usuario. Algunas vistas útiles son USER_TABLES, USER_VIEWS, etc. Instrucciones ALTER TABLE, INSERT, DELETE y UPDATE. La sintaxis básica es la siguiente: ALTER TABLE tabla -> ADD (columnas, restricciones de columnas y/o restricciones de tabla) MODIFY (columnas y restricciones de columnas) Grupo Kybele, http://kybele.escet.urjc.es/ Pág. 2

DROP PRIMARY KEY UNIQUE(columnas) DROP CONSTRAINT restricción DROP COLUMN columna (columnas) [DISABLE UNIQUE (columnas)/primary KEY/CONSTRAINT restricción [CASCADE];] [ENABLE UNIQUE (columnas)/primary KEY/CONSTRAINT restricción;] Para la inserción de datos usaremos la instrucción INSERT. Si no indicamos las columnas, el sistema supondrá que estamos insertando valores en todas ellas. INSERT INTO tabla/vista [(columnas)] subconsulta/values (expresiones); Para el borrado usaremos la siguiente sintaxis. Si no incluimos la cláusula WHERE, se borrarán todas las filas. DELETE [FROM] tabla/vista [WHERE condición]; Para la modificación de valores se utilizará la siguiente sintaxis. Análogamente al caso anterior, si no usamos la cláusula WHERE se modificarán todas las filas. UPDATE tabla/vista SET columna=expresión subconsulta (columnas)=subconsulta WHERE [condición]; Hay que tener en cuenta que en el caso de las vistas deberán cumplirse determinadas condiciones para permitir las inserciones, borrado y actualizaciones de las tablas base. La sintaxis básica de la orden SELECT es la siguiente: SELECT [ALL DISTINCT] <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] [,...] ] DISTINCT: Elimina las filas duplicadas en el resultado de la consulta. <alias de tabla>:es un sinónimo activo sólo en el ámbito de la sentencia SELECT. Las condiciones pueden incluir operadores lógicos (AND, OR, NOT). En las condiciones podemos utilizar, entre otras, las siguientes expresiones: < expresión1> [NOT] BETWEEN <expresión2> AND <expresión2> <expresión> [NOT] IN (<lista-de valores>) <nombre de columna> [NOT] LIKE <string> [ESCAPE <carácter de escape> ] Grupo Kybele, http://kybele.escet.urjc.es/ Pág. 3

<nombre de columna> IS [NOT] NULL Expresiones con subconsulta, que 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. ORDER BY <nombre de columna> [ASC DESC] [,...] Permite ordenar el resultado de la consulta. COMPOSICIÓN DE TABLAS. La composición (join) de tablas se produce cuando se combinan datos de dos o más tablas. 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 (utilizando otros operadores, como >, <, etc). Estas condiciones se incluyen en la condición de la claúsula WHERE. Esto puede generalizarse a más de dos tablas, por ejemplo (A.X = B.Y1) AND (B.Y2 = C.Z). En el caso de realizar una composición de una tabla consigo misma, obligatoriamente hay que emplear alias dentro de la orden SELECT que eviten los problemas de ambigüedad. Algunas de las funciones aplicables a datos de tipo carácter son: LQLWFDSFKDU Æ pone en mayúscula el primer carácter de cada cadena de caracteres. ORZHUFKDU Æ pone en minúsucla la cadena de caracteres completa UHSODFHFKDUVWUVWU Æ En la cadena de caracteres char, cada ocurrencia de str1 se reemplaza por str2 VXEVWUFKDUPQ Æ Extrae n caracteres de la cadena de caracteres char, a partir de la posición m. OHQJWKFKDU Æ Longitud de char Entre las funciones específicas para fechas tenemos: V\VGDWH Æ Fecha y hora actual ODVWBGD\ Æ último día del mes actual DGGBPRQWKVGQ Æ suma o resta n meses a partir de la fecha d PRQWKVBEHWZHHQIV Æ diferencia en meses entre la fecha f y la fecha s QH[WBGD\GGD\ Æ Fecha del día especificado (lunes, martes,...en inglés)de la semana siguiente a d Otras funciones útiles para el tratamiento de fechas son WRBFKDU y WRBGDWH, que devuelven, respectivamente, un dato en formato carácter o fecha. El uso básico es el siguiente: WRBFKDU (expresión, plantilla) WRBGDWH (cadena, plantilla) Entre los posibles códigos a usar en la plantilla tenemos los siguientes: < Æ devuelve el último dígito del año << Æ devuelve los dos últimos dígitos del año <<< Æ devuelve los tres últimos dígitos del año <<<< Æ devuelve los cuatro últimos dígitos del año 6<($5<($5 Æ año, utilizando signo para las fechas a.c. Grupo Kybele, http://kybele.escet.urjc.es/ Pág. 4

4 Æ trimestre del año 00 Æ mes 50 Æ mes en números romanos 0RQWK Æ Nombre del mes (9 caracteres) :: Æ semana del año : Æ semana del mes ''' Æ día del año '' Æ día del mes ' Æ día de la semana '< Æ Abreviatura del nombre del día ++R++ Æ Hora del día ++ Æ hora del día utilizando las 24 0, Æ minutos 66 Æ segundos Para una consulta más detallada tanto de las funciones anteriores como de otras muchas, pueden consultarse los manuales de ORACLE accesibles desde la página de la asignatura. Por último hay que resaltar el hecho de que es posible sumar a las fechas valores de la forma: fecha+n. En este caso Oracle suma n días a la fecha, teniendo en cuenta posibles desbordamientos de meses o años. La cláusula GROUP BY se utiliza cuando se quieren realizar consultas agrupadas. Así, se puede pensar en estos conjuntos de filas como grupos, utilizándose las siguientes funciones (que también pueden ser utilizadas sin GROUP BY): avg(nombre_columna) Æ Valor medio de todos los valores de nombre_columna count(*) Æ Número de filas de la tabla max(nombre_columna) Æ Valor máximo almacenado en nombre_columna min(nombre_columna) Æ Valor mínimo almacenado en nombre_columna Ejemplo: select ciudad, avg(ventas) from clientes group by ciudad; Hay que tener en cuenta que hay que agrupar todas las columnas que no aparezcan mencionadas en la cláusula group_by. La cláusula HAVING se utiliza para especificar una condición de búsqueda de un grupo de filas. Por ejemplo: select ciudad, avg(ventas) from clientes group by ciudad having ciudad> t ; SUBCONSULTAS. Una subconsulta forma parte de una condición de búsqueda en la cláusual WHERE o HAVING. Además de las vistas en la práctica anterior, también se pueden aplicar las siguientes condiciones de búsqueda en subconsultas: ƒ Test de comparación subconsulta. Compara el valor de una expresión con el valor producido por una subconsulta y devuelve un valor true si la comparación es cierta. Operadores: >, <>, <, <=, >, >= Ejemplo: Grupo Kybele, http://kybele.escet.urjc.es/ Pág. 5

SELECT nombre FROM tabla WHERE columna! (SELECT col FROM tabla2 WHERE...); ƒ Test de pertenencia a conjunto subconsulta. Compara un único valor de datos con una columna de valores producida por una subconsulta y devuelve un resultado true si el valor coincide con uno de los valores de la columna. Operador: IN Ejemplo: SELECT nombre FROM tabla WHERE col,1 (SELECT col FROM tabla2 WHERE...); ƒ Test de existencia. Comprueba si una subconsulta produce alguna fila de resultados. Sólo se utiliza en subconsultas. Operador: EXISTS Ejemplo. Listar las oficinas donde haya ventas por encima de 100 SELECT nombre FROM oficina WHERE (;,676 (SELECT * FROM ventas WHERE ventas.oficina=oficina.id AND cant_ventas>100) ƒ Test de comparación cuantificada. Se utilizan cuando una subconsulta devuelve más de un valor. Compara un valor de dato con la columna de valores producidos por una subconsulta. SOME y ANY son equivalentes y se utilizan para aplicar a la consulta cada resultado de una subconsulta. ALL se utiliza para comparar el valor del test con todos los resultados de una subconsulta, si todos devuelven TRUE, entonces se ejecutará la consulta. Operadores: SOME, ANY, ALL Ejemplo. SELECT nombre FROM tabla WHERE ciudad = ANY (SELECT nombre FROM tabla2 WHERE codigo<3); Aunque las subconsultas suelen encontrarse tras la cláusula WHERE, también pueden ir tras la cláusula HAVING. Ejemplo. SELECT nombre, avg(importe) FROM ventas, pedidos WHERE ventas.idemp=pedidos.idemp AND fabrica= lafabrica GROUP BY nombre HAVING avg(impventas)> (SELECT avg(imppedidos) FROM pedidos)); VISTAS Una vista es una representación lógica de subconjuntos de datos de una o más tablas. Pueden presentarse conjuntos lógicos de combinaciones de datos creando vistas de tablas. Grupo Kybele, http://kybele.escet.urjc.es/ Pág. 6

Las vistas es una tabla lógica (no física) que se basa en una tabla o en otra vista. Una vista no contiene datos en si misma, es como una ventana a través de la cual pueden verse y cambiarse datos de tablas. Las tablas sobre las que se define una vista se llaman tablas base. La vista se almacena como una sentencia SELECT en el diccionario de datos. CREATE [OR REPLACE] [FORCE NOFORCE] VIEW nombre_vista [(alias...)] AS subconsulta [WITH READ ONLY] Donde: OR REPLACE. Se utiliza por si la vista ya estuviera creada anteriormente. De esta forma una vista podrá ser modificada. FORCE. Crea la vista independientemente de si la tabla base existe. NOFORCE. Crea la vista sólo si la tabla base existe. Está opción es la que está por defecto. Subconsulta. Es una sentencia SELECT WITH READ ONLY. Asegura que no podrán ejecutarse operaciones DML sobre la vista. Algunas reglas para utilizar instrucciones DML en una vista ƒ No puede borrarse una fila si la vista contiene: ¾ Funciones de agrupamiento ¾ Una cláusula GROUP BY ¾ La cláusula DISTINCT ƒ No pueden modificarse datos de una vista si: ¾ Se cumple alguna de las condiciones del borrado ¾ Las columnas están definidas mediante expresiones ƒ No se pueden añadir datos a una vista si: ¾ Se cumple cualquiera de las condiciones del borrado ¾ Hay columnas NOT NULL en la tabla base que no están seleccionadas en la vista Para borrar una vista: DROP VIEW nombre_vista; Grupo Kybele, http://kybele.escet.urjc.es/ Pág. 7