Sei sulla pagina 1di 27

SQL

Standard Query Language

Semanas 8 y 9

1 Base de Datos 22.10.12


ORACLE 11g
Entorno multiusuario (Cliente/Servidor).
Entorno www
ficheros
DB

servidor
ORACLE
DB
manager

Client1 Client2 Client3

Arquitectura Lgica cliente Arquitectura Comunicaciones


ORACLE

2 Base de Datos 22.10.12


ORACLE y SQL
ORACLE: Sistema Gestor de Base de Datos Relacional
Verstil
Probada eficiencia y escalabilidad
Amplia difusin
Basado en el lenguaje de datos PL/SQL (extensin
de SQL)
SQL-PLUS: herramienta interfaz de Oracle
Permite conectarse al Servidor Oracle
Enva sentencias SQL para su ejecucin y muestra los
resultados
Contiene su propio lenguaje de comandos (locales)
Permite la ejecucin de scripts
SQL Developer: herramienta interfaz de Oracle

3 Base de Datos 22.10.12


Descripcin Relacional
Tres Pasos:
Diseo: mediante una herramienta case se realizar el diseo de un
esquema relacional que atienda a las necesidades descritas en el
enunciado. Se representar mediante un modelo Fsico.

Conexin: se realizar mediante la opcin Database Connection.


Migracin: mediante el Erwin se crear un fichero con una secuencia
de comandos (script) destinada a crear todas las tablas necesarias
(Segn el DBMS seleccionado). Este script de creacin se ejecutar
desde la opcin Forward Engineer.
No es posible crear una tabla dos veces, y por ello es
conveniente encabezar el script con la destruccin (drop) de
cada tabla cuando se realiza por 2da vez. De este modo, se
podr ejecutar el script varias veces (para hacer pruebas).

4 Base de Datos 22.10.12


Lenguaje SQL
Instrucciones del Lenguaje SQL: divididas en dos tipos
para la definicin de los objetos: Lenguaje de Definicin de Datos
para el manejo de la informacin: Lenguaje de Manipulacin de
Datos
Ambos conjuntos son completamente distintos: propsito,
acciones, ...
DDL DML

insercin
objetos

creacin
datos

sesin, ...
usuarios,
actualizacin borrado
supresin modificacin
alteracin
recuperacin
definicin manejo control

5 Base de Datos 22.10.12


Control Transaccional
En Oracle, los cambios que se operan sobre el contenido de la Base
se realizan sobre transacciones
Una transaccin es un conjunto de operaciones que se ejecutan
conjuntamente sobre la Base
Al actualizar la Base, los cambios slo tendrn lugar si se perpetra la
transaccin (en otro caso, se pierden)

Para que una transaccin se perpetre: COMMIT;

Para que una transaccin se elimine: ROLLBACK;


(este comando se asemeja a una operacin deshacer)

6 Base de Datos 22.10.12


Consulta: la sentencia SELECT
SELECT [ALL|DISTINCT] <lista de seleccin>
FROM <clusula de origen>
[WHERE <condicin> ]
[GROUP BY <expresin> [HAVING <condcn>]]
[{UNION|UNION ALL|MINUS|INTERSECT} <query>]
[ORDER BY <expresin> [ASC|DESC]] ;

La clusula FROM crea una tabla resultado (denominada rea de trabajo)


La clusula WHERE filtra las tuplas de esa tabla (segn una condicin)
La lista de seleccin describe qu informacin se desea obtener
(proyeccin)
La clusula ORDER BY ordena los resultados (segn una clave de
ordenacin)
Los operadores de consulta (UNION,...) combinan consultas (compatibles)
y la clusula GROUP BY...

7 Base de Datos 22.10.12


Sentencia SELECT
Clusula FROM
La clusula from contiene una tabla (con o sin alias), o varias
tablas combinadas. Las combinaciones se revisan a continuacin:
Producto Cartesiano:
... FROM Gente CROSS JOIN Clientes FROM Gente, Clientes
Combinacin natural:
... FROM Gente [NATURAL] JOIN Clientes
[USING <columnas> | ON <col_a>=<col_b> [AND...]]

... FROM X NATURAL JOIN Y...


Combinacin Natural por todos los campos que se llamen igual en ambos esquemas
... FROM X NATURAL JOIN Y USING (<columnas>)...
Combinacin Natural por los campos especificados, que han de llamarse igual en ambas tablas
... FROM X JOIN Clientes ON <condicin>...
Combinacin por la condicin especificada (puede ser natural, si es de igualdad)

8 Base de Datos 22.10.12


Consulta: la sentencia SELECT

<lista de seleccin>: Proyeccin de la Consulta


Se trata de una lista con los datos que se desea obtener

Los elementos de la lista separados por comas.

Ha de ser posible obtenerlas del rea de trabajo (from).

Puede incluir:
atributos del esquema de relacin del rea de trabajo, o el comodn (*)
variables del sistema, como por ejemplo SYSDATE
pseudo-columnas, tal como por ejemplo ROWNUM, table.ROWID,...
funciones de agregacin, si se ha establecido criterio de agrupacin
expresiones construidas a partir de lo anterior

9 Base de Datos 22.10.12


Sentencia SELECT
Clusula WHERE
Selecciona tuplas siguiendo una condicin, que puede ser:
una comparacin (=, !=, <, >, <=, >=) de expresiones
- pueden ser listas de expresiones o una subquery
- la segunda puede ir cuantificada (SOME, ANY, ALL)
test de inclusin (en conjunto o subquery):
<expr> [NOT] IN {<expr_list>|subquery}
test de inclusin (en rango):
<expr> [NOT] BETWEEN <expr> AND <expr>
test de valor nulo:
<expr> IS [NOT] NULL
test de semejanza:
<expr_caracteres> [NOT] LIKE <patrn>
test de existencia:
EXISTS subquery
operacin lgica (NOT, AND, OR) sobre otras condiciones
10 Base de Datos 22.10.12
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.DNI=c.DNI;

SELECT marca, modelo


FROM COCHES
WHERE precio < 10000000;

SELECT ttulo FROM LIBROS WHERE rownum<=5;

11 Base de Datos 22.10.12


Sentencia SELECT
REA de TRABAJO
El rea de trabajo es una tabla que el gestor crea para operar.
Es una tabla temporal, y despus de la consulta ser destruida.
Introducir en ella las tuplas de las tablas en la clusula FROM
y excluyendo aquellas que no verifican la clusula WHERE
y de la que se podrn proyectar cualesquiera atributos que contenga
Dado que es una tabla, se podr utilizar a su vez en una clusula
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 equipo=ATLETI;

12 Base de Datos 22.10.12


Sentencia SELECT
Clusula GROUP BY
La operacin de agrupamiento
- comienza como una consulta normal, creando un rea de trabajo
(WHERE)* sobre unas tablas (FROM), excluyendo segn un criterio
* se crear una primera rea de trabajo con un conjunto de
tuplas
- agrupa las tuplas originales en subconjuntos (segn 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 slo se podrn proyectar


atributos pertenecientes al criterio (expresin) de agrupamiento
funciones de agregacin sobre cualquier otro atributo
pseudocolumnas, variables, constantes, etc.

13 Base de Datos 22.10.12


Sentencia SELECT
Clusula GROUP BY

[GROUP BY <expresin> [HAVING <condicin>]]

La expresin de agrupamiento es ese criterio para hacer subconjuntos


La clusula HAVING excluye subconjuntos que no cumplan la condicin

Ejemplo:
SELECT color,COUNT(X),MAX(talla),MIN(talla),AVG(precio)
FROM CAMISAS
WHERE tejido=ALGODON
GROUP BY color HAVING COUNT(X)>5 AND rownum<10;

14 Base de Datos 22.10.12


La sentencia select

Forma Bsica

select <attribute list>


from < table list>
where <condition>

15 Base de Datos 22.10.12


Consultas SQL

Query 1: Display de la Tabla Course completa.

Select *
from Course;

16 Base de Datos 22.10.12


Notas:

Los cambios realizados en la base de datos usando el


Insert, Delete y Update, se pueden invertir en caso de
necesidad. El SQL Oracle proporciona dos comandos:

Commit y Rollback.

Los cambios realizados a la base de datos se pueden


realizar de manera permanente usando Commit. Los
cambios realizados en la base de datos antes de haber
pasado Commit pueden ser invertidos hacia atrs mediante
Rollback.

Hay algunas acciones que fuerzan Commit. Uno es la salida


con xito. Otros son la creacin de la tabla, cancelacin de
la tabla, y alteracin de la tabla.

17 Base de Datos 22.10.12


Operadores de Comparacin

= igual a
< menor que
> mayor que
<= menor o igual que
>= mayor o igual que
!=, ^=,<> diferente o no igual

18 Base de Datos 22.10.12


Consultas

Muestra toda la informacin sobre cualquier curso con un


Clabfee cero.

Select *
from Course
where Clabfee=0.00

19 Base de Datos 22.10.12


Consulta

Muestra toda la informacin sobre los cursos que tienen como


nombre valores conocidos como "Base de Datos" en secuencia
alfabtica.

select *
from course
where Cname = Base de Datos
Order by Cname;

20 Base de Datos 22.10.12


Sorteando el resultado de la Tabla

Muestra la tabla entera curso. Clasificando la informacin de


salida por los valores del Clabfee.

select *
from Course
order by Clabfee;

El ordenamiento por defecto es Ascendente, si se desea


descendente usar Desc despues del nombre de campo.

21 Base de Datos 22.10.12


Sorteando el resultado de la Tabla

Muestra la identificacin del departamento y el nombre de cada


curso. Clasificando el resultado por la identificacin del
departamento. Dentro de cada departamento, clasificando por
nombre del curso, en forma ascendente en ambos casos.

Select Cdept, Cname


from Course
order by Cdept, Cname;

22 Base de Datos 22.10.12


Conectores Boolean: AND - OR - NOT

Muestra toda la informacin sobre cualquier curso del departamento de


filosofa que sea de tres crditos y que tenga un honorario del laboratorio
que est terminantemente entre cero y cien dlares.

Select *
from Course
where Clabfee > 0 and Clabfee < 100 and Cdept = phil and Cred = 3;

23 Base de Datos 22.10.12


Consulta dentro de un conjunto de valores

Muestra el nmero, la descripcin y el crdito del curso para


cualquier curso que valga 2, 6, o 9 crditos.

Select Cno, Cdescp, Cred


from Course
where Cred in (2,6,9);

24 Base de Datos 22.10.12


Prueba lgica contra una lista de valores

Muestra el nombre del curso y el honorario del laboratorio


de cualquier curso con un honorario que no est entre $100
y $200.

Select Cname, Clabfee


from Course
where Clabfee not between 100 and 200;

25 Base de Datos 22.10.12


Pattern Matching (Correspondencia de Modelo)

Cuando usted desea recuperar la informacin de


filas que tienen similitud, pero no necesariamente
valores iguales, en una columna dada .
El formato a usar es el de dos comodines:

%: Representa la cadena de caracteres de cualquier


longitud (incluyendo el zero)
- : Representa exactamente un character

26 Base de Datos 22.10.12


Query (Consulta)

Muestra el nmero y el nombre de todos los cursos que


comiencen con el nombre intro seguido de cualquier
carcter.

Select Cno, Cname


from Course
where Cname like intro%;

27 Base de Datos 22.10.12

Potrebbero piacerti anche