Title: Presentacin de PowerPoint
1Práctica 2 Bases de Datos
2.1 Introducción a ORACLE 2.2 Lenguajes del SQL
2Práctica 2.1 Introducción a ORACLE
- Sistema Gestor de Bases de Datos Relacionales
(SGBDR), que maneja distintos tipos de datos - Tradicionales como INTEGER, VARCHAR2, DATE, ...,
etc. - Nuevos y complejos imágenes, docs, mapas, video,
audio, ..., etc. - Entorno multiusuario (Cliente/Servidor).
ficheros
servidor ORACLE
Arquitectura Lógica
cliente ORACLE
Arquitectura Comunicaciones
3Práctica 2.1 ORACLE y su SQL
- ORACLE Sistema Gestor de Base de Datos
Relacional - Versátil
- Probada eficiencia y escalabilidad
- Amplia difusión
- Basado en el lenguaje de datos PL/SQL (extensión
de SQL) - SQL-PLUS herramienta interfaz de Oracle
- permite conectarse al Servidor Oracle
- envía sentencias SQL para su ejecución y muestra
los resultados - contiene su propio lenguaje de comandos (locales)
- permite la ejecución de scripts
- script fichero de texto que contiene un conjunto
de sentencias SQL
4Práctica 2.1 Introducción al SQL
Identificación de Usuario
- Una máquina con el Sw cliente de Oracle tendrá el
SQL - y los archivos de configuración que
posibilitan la conexión - Al arrancar el SQL, la primera operación será la
conexión - Para ello, SQL solicitará al usuario
- nombre
- contraseña
- cadena de conexión
- (identificación servidor)
5Práctica 2.1 Introducción al SQL Cambio
de Contraseña
6Práctica 2.1 Introducción al SQL
- Permite introducir una sentencia SQL.
- Tiene un buffer que almacena la última sentencia
ejecutada - Proporciona un editor de línea para modificar el
buffer - (para modificar y volver a ejecutar la
última sentencia) - También permite la ejecución de scripts (ficheros
.sql) - Formatea los resultados de las consultas en
informes básicos
7Práctica 2.1 Introducción al SQL Comandos
SQL (I)
- Comandos de sesión
- connect username/password_at_cadena de
conexión conectar a un servidor - disconnect termina conexión actual
- quit / exit salir (termina conexión y sesión)
- host devuelve el control al S.O. (vuelve con
EXIT)
8Práctica 2.1 Introducción al SQL Comandos
SQL (II)
- Operaciones con el Buffer
- Ed invoca al editor
- R Run ejecuta el contenido del buffer
- L List lista el contenido del buffer
(completo) - L n L n m ...
- lista el contenido de las líneas que se
especifican.
9Práctica 2.1 Introducción al SQL Comandos
SQL (III)
- Operaciones con el texto del Buffer
- A Append texto
- concatena el texto a la última línea del
buffer - Input texto
- inserta nuevas líneas a continuación de la
línea activa - Del Delete borra la línea activa
- C Change txt antiguo txt nuevo
- cambia el texto antiguo por el nuevo
10Práctica 2.1 Introducción al SQL Comandos
SQL (IV)
- Operaciones con ficheros
- Ed ltficherogt edita el fichero
- Start _at_ ltficherogt ejecuta un fichero .sql
- Get ltficherogt introduce el fichero en el buffer
sin ejecutarlo - Save ltficherogt guarda el contenido del buffer
en el fichero - Save ltficherogt append
- guarda el buffer en el fichero
concatenándolo con lo que ya tenía
11Práctica 2.1 Introducción al SQL Comandos
SQL (V)
- Operaciones de spooling
- Spool ltficherogt arranca el spooling
- (todo lo que aparece por pantalla se
guardará en el fichero) - Spool muestra el nombre del fichero de salida.
- Spool off desactiva el spool.
- Spool out desactiva el spool y manda imprimir
el fichero.
12Práctica 2.1 Descripción Relacional
- Dos Pasos
- Diseño sobre el papel, se realizará el diseño de
un esquema relacional que atienda a las
necesidades descritas en el enunciado. Se
representará mediante un Grafo Relacional. - Implementación mediante un editor de textos
(notepad) se creará un fichero con una secuencia
de comandos (script) destinada a crear todas las
tablas necesarias (según cada diseño). Este
script de creación se ejecutará desde SQL. - no es posible crear una tabla dos veces, y por
ello es conveniente encabezar el script con la
destrucción (drop) de cada tabla. De este modo,
se podrá ejecutar el script varias veces (para
hacer pruebas).
13Práctica 2.2 Lenguajes del SQL
- Instrucciones del Lenguaje SQL divididas en
dos tipos - para la definición de los objetos Lenguaje de
Definición de Datos - para el manejo de la información Lenguaje de
Manipulación de Datos
- Ambos conjuntos son completamente distintos
propósito, acciones, ...
L D D
L M D
LCD
creación supresión alteración
inserción borrado modificación
datos
actualización
objetos
usuarios, sesión, ...
recuperación
definición
manejo
control
14Práctica 2.2 Lenguaje Definición Elementos
- Sus acciones buscan definir la semántica del
esquema - relacional qué relaciones hay y cómo son,
cuáles son - sus dominios, cuáles las asociaciones,
restricciones, etc.
- Tres acciones básicas creación, supresión,
alteración - Tres instrucciones básicas CREATE, DROP, ALTER
- Aplicables a una amplia gama de elementos
- esquemas, tablas, vistas, índices, ...
- aserciones, dominios,... secuenciales,
- Estos objetos no existen en todas las
implementaciones
15Práctica 2.2 Lenguaje Definición Notación
- Para definir las cláusulas del lenguaje,
utilizaremos una de las notaciones más empleadas
en la especificaciones de este tipo la Forma
Normal de Backus (extendida) - Símbolos
ETIQUETA símbolos terminales del lenguaje lt
gt símbolos no terminales del lenguaje operador
de definición elementos opcionales
agrupación de elementos alternativa ... repe
tición
16Práctica 2.2 Lenguaje Definición Creación
de Tablas
CREATE TEMPORARY TABLE ltnombregt ( ltelemento
de tablagt , ltelemento de tablagt ...
) ltelemento de tablagt ltdef_columnagt
ltrestricción_tablagt ltdef_columnagt ltnombregt
lttipo_datosgtdominio SET DEFAULT
ltvalorgt CONSTRAINT ltnombregt
ltrestriccióngt ltretricción tablagt
CONSTRAINT ltnombregt ltrestriccióngt
17Práctica 2.2 Lenguaje Definición
Restricciones
- definición clave primaria PRIMARY KEY
- unicidad (clave alternativa) UNIQUE
- existencia NOT NULL
CREATE TABLE gente (DNI CHAR(8) PRIMARY KEY,
Nombre VARCHAR(20) UNIQUE NOT NULL, Apellidos
VARCHAR (20) UNIQUE NOT NULL) CREATE TABLE gente
(DNI CHAR(8), Nombre VARCHAR2(20) NOT NULL,
Apellidos VARCHAR2(20) NOT NULL, PRIMARY KEY
(DNI), UNIQUE (Nombre,Apellidos) )
18Práctica 2.2 Lenguaje Definición
Interrelaciones
- Se especifican mediante referencias (clave
ajenas) - clave ajena se define como una restricción más
(a nivel de columna o de tabla) - FOREIGN KEY (ltcolumnasgt)
- REFERENCES TO ltnombre_tablagt (ltcolumnasgt)
- ON DELETE ltaccióngt
- ON UPDATE ltaccióngt
- acciones referenciales implementan las Reglas
de Integridad del modelo - CASCADE SET NULL SET DEFAULT RESTRICT
- NOTA para utilizar SET NULL, la clave ajena
ha de permitir valor nulo - para SET DEFAULT, la clave ajena ha de tener
un valor por defecto
19Práctica 2.2 Lenguaje Definición
Interrelaciones
- Para el caso de implementaciones en Oracle, las
reglas de integridad quedan reducidas a las
siguientes - Para ON DELETE CASCADE, SET NULL y RESTRICT.
Cuando se quiera indicar un borrado de tipo
RESTRICT, no se deberá poner nada en la sentencia
de creación de tabla, ya que el es borrado por
defecto de Oracle. - Para ON CASCADE Solo permite el tipo RESTRICT,
y puesto que es el por defecto, no habrá que
indicar nada en la sentencia de creación de
tabla. - NOTA si en la práctica se necesitara un tipo de
borrado o actualización no contemplado por
Oracle, se indicaría en la memoria tal necesidad
y se pondría uno de los si contemplados.
20Práctica 2.2 Lenguaje Definición
Ejemplo de creación de tabla
CREATE TABLE Clientes (DNI CHAR(8) PRIMARY KEY,
Nombre VARCHAR(20) UNIQUE NOT NULL, Apellidos
VARCHAR (20) UNIQUE NOT NULL) CREATE TABLE
Coches ( Matricula CHAR(8) PRIMARY KEY, Precio
NUMERIC(20,2), Color CHAR(12), DNI_cliente
CHAR(8), FOREIGN KEY (DNI_cliente)
REFERENCES Clientes (DNI) ON DELETE CASCADE)
- Consulta de la descripción de una tabla
creada - DESC lttablagt
21Práctica 2.2 Lenguaje Definición
Suprimir y Modificar
- DROP instrucción para el borrado de un elemento
- DROP ltelementogt ltnombregt
- Atención es peligrosa, ya que no tiene marcha
atrás.
- ALTER instrucción para la modificación de un
elemento - ALTER ltelementogt ltnombregt
- ADDALTERDROP ltelementogt ltdefinicióngt
Ejemplos en ORACLE
DROP TABLE Gente ALTER TABLE Gente ADD (Edad
NUMBER(2)) ALTER TABLE Gente ADD (Capital
NUMERIC(30,2)) ALTER TABLE Gente ADD CONSTRAINT
Matusalen CHECK (Edadlt100) ALTER TABLE Gente
DROP CONSTRAINT Matusalen
22Práctica 2.2 Lenguaje Manipulación
- Sus instrucciones constan de LOCALIZACIÓN
ACCIÓN - Dos tipos de instrucciones recuperación y
actualización - Acciones de actualización inserción, borrado,
modificación - Tres instrucciones INSERT, DELETE, UPDATE
- Acción de recuperación selección
- Instrucciones SELECT
23Práctica 2.2 Lenguaje Manipulación
Inserción de tuplas
- INSERT INTO lttablagt
- (ltcolumnagt ,ltcolumnagt)
- VALUES(ltexpresióngt ,ltexpresióngt)
- ltsubquerygt
- Ejemplos
- INSERT INTO stock VALUES(turrón,299,AG-23)
- INSERT INTO stock (nombre,cod_barras)
- VALUES(turrón,AG-23)
- INSERT INTO stock (nombre,precio,cod_barras)
- SELECT (name, pricechange, barcode)
- FROM products, euro_cot
- WHERE euro_cot.namepeseta
24Práctica 2.2 Lenguaje Manipulación
Borrado y Modificación
- DELETE FROM lttablagt ltaliasgt
- WHERE ltcondicióngt
- Ejemplos
- DELETE stocks
- DELETE FROM stocks WHERE f_caducidadltSYSDATE
- UPDATE lttablagt SET
- ltcolumnagt ltexpresióngtltsubquerygt
- (ltcolumnagt ,ltcolumnagt)ltsubquerygt
- WHERE ltcondicióngt
- Ejemplos
- UPDATE gente SET edad25 WHERE nombreJavi
- UPDATE stock a SET precio
- SELECT a.preciob.change FROM euro_cot b
- WHERE b.namepeseta
25Práctica 2.2 Lenguaje de Control Control
Transaccional
- En Oracle, los cambios que se operan sobre el
contenido de la Base se realizan sobre
transacciones - Una transacción es un conjunto de operaciones que
se ejecutan conjuntamente sobre la Base - Al actualizar la Base, los cambios sólo tendrán
lugar si se perpetra la transacción (en otro
caso, se pierden) - Para que una transacción se perpetre COMMIT
- Para que una transacción se elimine ROLLBACK
- (este comando puede asemejarse a una operación
deshacer)
26Práctica 2.2 Lenguaje Manipulación
Consulta la sentencia SELECT
- SELECT ALLDISTINCT ltlista de seleccióngt
- FROM ltcláusula de origengt
- WHERE ltcondicióngt
- GROUP BY ltexpresióngt HAVING ltcondcngt
- UNIONUNION ALLMINUSINTERSECT ltquerygt
- ORDER BY ltexpresióngt ASCDESC
-
- La cláusula FROM crea una tabla resultado
(denominada área de trabajo) - La cláusula WHERE filtra las tuplas de esa
tabla (según una condición) - La lista de selección describe qué información
se desea obtener (proyección) - La cláusula ORDER BY ordena los resultados (según
una clave de ordenación) - Los operadores de consulta (UNION,...) combinan
consultas (compatibles) - y la cláusula GROUP BY...
27Práctica 2.2 Sentencia SELECT Cláusula FROM
- La cláusula from contiene una tabla (con o
sin alias), o varias - tablas combinadas. Las combinaciones se
revisan a continuación - Producto Cartesiano
- ... FROM Gente CROSS JOIN Clientes ? FROM
Gente, Clientes - Combinación natural
- ... FROM Gente NATURAL JOIN Clientes
- USING ltcolumnasgt ON ltcol_agtltcol_bgt AND...
- ... FROM X NATURAL JOIN Y...
- Combinación Natural por todos los campos que se
llamen igual en ambos esquemas - ... FROM X NATURAL JOIN Y USING (ltcolumnasgt)...
- Combinación Natural por los campos especificados,
que han de llamarse igual en ambas tablas - ... FROM X JOIN Clientes ON ltcondicióngt...
- Combinación por la condición especificada (puede
ser natural, si es de igualdad)
28Práctica 2.2 Lenguaje Manipulación
Consulta la sentencia SELECT
- ltlista de seleccióngt Proyección de la Consulta
- Se trata de una lista con las informaciones que
se desea obtener - Los elementos de la lista vendrán separados por
comas. - Ha de ser posible obtenerlas del área de trabajo
(from). - Puede incluir
- atributos del esquema de relación del área de
trabajo, o el comodín () - variables del sistema, como por ejemplo SYSDATE
- pseudo-columnas, tal como por ejemplo ROWNUM,
table.ROWID,... - funciones de agregación, si se ha establecido
criterio de agrupación - expresiones construidas a partir de lo anterior
29Práctica 2.2 Sentencia SELECT Cláusula WHERE
- Selecciona tuplas siguiendo una condición, que
puede ser - una comparación (, !, lt, gt, lt, gt) de
expresiones - pueden ser listas de expresiones o una subquery
- la segunda puede ir cuantificada (SOME, ANY,
ALL) - test de inclusión (en conjunto o subquery)
- ltexprgt NOT IN ltexpr_listgtsubquery
- test de inclusión (en rango)
- ltexprgt NOT BETWEEN ltexprgt AND ltexprgt
- test de valor nulo
- ltexprgt IS NOT NULL
- test de semejanza
- ltexpr_caracteresgt NOT LIKE ltpatróngt
- test de existencia
- EXISTS subquery
- operación lógica (NOT, AND, OR) sobre otras
condiciones
30Práctica 2.2 Sentencia SELECT Ejemplos
- SELECT FROM EMPLEADOS
- SELECT SYSDATE FROM DUAL
- SELECT COUNT(X) FROM FACTURAS
- SELECT rownum, nombre FROM ALUMNOS
- SELECT FROM LIBROS
- MINUS
- SELECT FROM NOVELAS
- SELECT FROM PERSONAS JOIN COCHES
- SELECT
- FROM PERSONAS p, COCHES c
- WHERE p.DNIc.DNI
- SELECT marca, modelo
- FROM COCHES
- WHERE precio lt 10000000
31Práctica 2.2 Sentencia SELECT ÁREA de TRABAJO
- El área de trabajo es una tabla que el gestor
crea para operar. - Es una tabla temporal, y después de la consulta
será destruida. - Introducirá en ella las tuplas de las tablas en
la cláusula FROM - y excluyendo aquellas que no verifican la
cláusula WHERE - y de la que se podrán proyectar cualesquiera
atributos que contenga - Dado que es una tabla, se podrá utilizar a su
vez en una cláusula - FROM de una consulta superior (anidando
consultas en el - origen, como se hace en Álgebra Relacional)
SELECT A.Nombre, A.Apellidos, B.edad FROM
PERSONAS A NATURAL JOIN (SELECT MAX(edad)
edad FROM PERSONAS) B WHERE equipoATLETI
32Práctica 2.2 Sentencia SELECT Cláusula GROUP
BY
- La operación de agrupamiento
- - comienza como una consulta normal, creando
un área de trabajo - sobre unas tablas (FROM), excluyendo según un
criterio (WHERE) - se creará una primera área de trabajo con un
conjunto de tuplas - - agrupa las tuplas originales en
subconjuntos (según un criterio) - - crea una nueva área de trabajo, con una
tupla por cada subconjunto - - puede excluir tuplas de esta segunda área
de trabajo siguiendo un - criterio para el área agrupada (HAVING)
- De esta área sólo se podrán proyectar
- atributos pertenecientes al criterio (expresión)
de agrupamiento - funciones de agregación sobre cualquier otro
atributo - pseudocolumnas, variables, constantes, etc.
33Práctica 2.2 Sentencia SELECT Cláusula GROUP
BY
GROUP BY ltexpresióngt HAVING ltcondicióngt
- La expresión de agrupamiento es ese criterio
para hacer subconjuntos - La cláusula HAVING excluye subconjuntos que no
cumplan la condición
SELECT color,COUNT(X),MAX(talla),MIN(talla),AVG(
precio) FROM CAMISAS WHERE tejidoALGODON GRO
UP BY color HAVING COUNT(X)gt5 AND rownumlt10