Documentos de Académico
Documentos de Profesional
Documentos de Cultura
',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 lnea
accesibles a partir de la pgina de la asignatura (en http://kybele.escet.urjc.es/).
Para las prcticas 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 ms otras propias para el formateo de la salida,
etc. Fundamentalmente se utilizarn los siguientes comandos de SQL*PLUS:
3$66:25': Para cambiar el password del usuario (tambin 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 opcin 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 sinnimo.
Existen otras instrucciones tiles de edicin 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(creacin de las tablas, insercin de datos, consultas, etc.).
Es conveniente incluir en el VFULSW antes de cada creacin de tabla un borrado de la
misma mediante la instruccin DROP TABLE tabla [CASCADE CONSTRAINTS]. De
esta forma nos aseguramos que la tabla no existe, evitando errores. Mediante la opcin
CASCADE CONSTRAINTS nos aseguramos que la tabla se borra aunque existan
dependencias entre tablas que impediran su borrado.
Aunque el lenguaje SQL admitido por ORACLE es muy similar al estndar visto en
clase (SQL:1999), existen algunas diferencias que se irn descubriendo en el desarrollo
de las prcticas. Las ms importantes son los tipos de datos, las opciones de borrado y
modificacin de claves ajenas, y la creacin de dominios (ORACLE no admite
dominios, los cuales debern simularse mediante CHECKs o tablas auxiliares).
ORACLE admite una gran variedad de tipos de datos. Los ms importantes, que sern
los que fundamentalmente se utilicen en las prcticas son:
CHAR (tamao): cadenas de caracteres de longitud fija.
VARCHAR2 (tamao): cadenas de caracteres de longitud variable, hasta un
mximo tamao.
NUMBER (l,d): nmero de un mximo de l dgitos, d de los cuales son
decimales.
Pg. 1
DATE: fecha.
Probablemente sea necesario utilizar funciones de formateo de tipos, tales como to_date
o to_char (vase ms adelante en este mismo documento).
Aunque en los manuales podr consultarse la sintaxis completa del SQL, la sintaxis
bsica de la instruccin de creacin de tablas es la siguiente:
CREATE TABLE nombre (
columna1 tipodatos [DEFAULT valorpordefecto] [restricciones de columna1],
...
columnaN tipodatos [DEFAULT valorpordefecto] [restricciones de columnaN],
[restriccin de tabla],
...
[restriccin de tabla]);
Las restricciones de columna son:
[CONSTRAINT nombrerestriccin] ->
[NOT] NULL
UNIQUE/PRIMARY KEY
REFERENCES tabla [(columna)] [ON DELETE CASCADE/SET NULL]
CHECK (condicin)
[CONSTRAINT nombrerestriccin] ->
UNIQUE/PRIMARY KEY (columnas)
FOREIGN KEY (columnas) REFERENCES tabla [(columnas)] [ON DELETE
CASCADE/SET NULL]
CHECK (condicin)
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 slo admite opciones en el caso de borrado de claves ajenas (a diferencia del
estndar). Las nicas opciones admitidas son borrado en cascada, con puesta a nulos y
restringido (que es la opcin por defecto en el caso de no poner nada). Evidentemente,
cuando una clave ajena tiene como opcin de borrado la puesta a nulos, las columnas
asociadas debern admitir este valor.
ORACLE, como todo SGBD, mantiene un catlogo que almacena datos acerca de los
usuarios, tablas, privilegios, etc. Podemos acceder al catlogo por medio de vistas que
pueden consultarse. Realizando una consulta a la vista ALL_CATALOG vemos todos
los objetos (tablas, vistas, sinnimos) visibles por el usuario. Algunas vistas tiles son
USER_TABLES, USER_VIEWS, etc.
Instrucciones ALTER TABLE, INSERT, DELETE y UPDATE.
La sintaxis bsica es la siguiente:
ALTER TABLE tabla ->
ADD (columnas, restricciones de columnas y/o restricciones de tabla)
MODIFY (columnas y restricciones de columnas)
Pg. 2
KEY/CONSTRAINT
KEY/CONSTRAINT
Pg. 3
Expresiones con subconsulta, que permiten comparar el valor de una expresin con los
resultados de una sentencia SELECT (subconsulta). De esta forma se pueden producir
encadenamientos de sentencias SELECT.
Pg. 4
4 trimestre del ao
00 mes
50 mes en nmeros romanos
0RQWK Nombre del mes (9 caracteres)
:: semana del ao
: semana del mes
''' da del ao
'' da del mes
' da de la semana
'< Abreviatura del nombre del da
++R++ Hora del da
++ hora del da utilizando las 24
0, minutos
66 segundos
Para una consulta ms detallada tanto de las funciones anteriores como de otras muchas,
pueden consultarse los manuales de ORACLE accesibles desde la pgina 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 das a la fecha, teniendo en cuenta posibles
desbordamientos de meses o aos.
La clusula GROUP BY se utiliza cuando se quieren realizar consultas agrupadas. As, se
puede pensar en estos conjuntos de filas como grupos, utilizndose las siguientes funciones
(que tambin pueden ser utilizadas sin GROUP BY):
Pg. 5
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...);
WHERE
VISTAS
Una vista es una representacin lgica de subconjuntos de datos de una o ms tablas.
Pueden presentarse conjuntos lgicos de combinaciones de datos creando vistas de tablas.
Pg. 6
Las vistas es una tabla lgica (no fsica) que se basa en una tabla o en otra vista. Una vista
no contiene datos en si misma, es como una ventana a travs 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:
Pg. 7