Saltar la navegación

5.3.- Ejecución de Sentencias OQL.

La sintaxis básica del OQL de Matisse es una sentencia SELECT de la forma: SELECT... FROM... WHERE...;

Mano de una persona con un bolígrafo frente a la pantalla de un ordenador.

Por ejemplo, para recuperar el valor de todos los atributos de los objetos tipo Profesor, escribiríamos la siguiente sentencia OQL:

SELECT * FROM Profesor;

Y para recuperar del atributo nombre de los objetos tipo Profesor cuyo año de ingreso es anterior al 1990, escribiríamos la siguiente sentencia :

SELECT nombre FROM Profesor WHERE ingreso <= 1990;

Las siguientes son algunas consideraciones y ejemplos sobre las consultas con SELECT:

  • Toda sentencia SELECT finaliza en punto y coma.

Además de la cláusula WHERE, que permite establecer un criterio de selección se pueden utilizar las cláusulas de agrupamiento GROUP BY, y de ordenación ORDER BY, entre otras. También se pueden asignar alias mediante AS, realizar búsquedas por patrones de caracteres con LIKE.

Ejemplo: título y tema de las tesis cuyo tema contien la palabra Objeto, ordenadas por tema.

SELECT titulo AS "Tesis", tema FROM Tesis 
WHERE tema LIKE '%Objeto%' ORDER BY tema;
  • Al recuperar todos los atributos de una clase mediante SELECT *, la consulta retornará el OID de cada objeto recuperado, así como las interrelaciones o relaciones definidas para esa clase. El OID y la interrelación son del tipo string y se representan mediante un número hexadecimal. Realmente el identificador recuperado para la interrelación, hace referencia al primer objeto relacionado, incluso aunque la interrelación incluya a más de un objeto.

Se pueden hacer JOIN de clases, y por ejemplo esto puede permitir obtener todos los objetos relacionados con otro objeto en una consulta asociativa.

Ejemplo: nombre de cada profesor y título y tema de las tesis que dirige con JOIN

SELECT p.nombre, t.titulo, t.tema 
FROM Profesor p JOIN Tesis t ON t.es_dirigida = p.OID;

Mediante SELECT se pueden realizar consultas navegacionales haciendo referencia a las interrelaciones entre objetos.

Ejemplo: nombre de cada profesor y título y tema de las tesis que dirige, navegacional

SELECT t.titulo AS "Tesis", tema, t.es_dirigida.nombre 
AS "Profesor " FROM Tesis t;
  • También se pueden realizar consultas navegacionales a través de la referencia de los objetos (REF()).

Ejemplo: tesis que dirigen los profesores con ingreso el 1990 o posterior

SELECT REF(p.dirige) FROM Profesor p 
WHERE p.ingreo >= 1990;

Autoevaluación

Pregunta

Señala las opciones correctas. Las consultas OQL con SELECT:

Respuestas

No permiten recuperar objetos relacionados.

No permiten realizar consultas navegacionales.

Permiten realizar JOINs.

Permiten recuperar el OID de un objeto almacenado.

Retroalimentación