jueves, 19 de agosto de 2010

1Z0-051 - Oracle Database 11g: SQL Fundamentals I (I)

No tengo muy claro que esto pueda servir de ayuda a alguien, es información muy básica, pero ahí va:

Los dos primeros objetivos del examen 1Z0-051 son sencillos:
  • Describir las capacidades de una sentencia SELECT
  • Ejecutar sentencias SELECT básicas
Las sentencias SELECT sirven para recuperar la información almacenada en una base de datos relacional, concretamente en unos objetos llamados tablas. La estructura de estos objectos se basa en el Modelo Relacional, por lo que para consultarlos será necesario que tengamos conceptos del Álgebra Relacional. Ésta la parte más teórica, y aunque voy a intentar centrarme en la práctica (recordemos que el objetivo es el examen), hay tres capacidades de las sentencias SELECT que necesitamos tener claras:
  • Proyección (Projection), restricción por atributos (columnas).
  • Selección (Selection), restricción por tuplas o registros.
  • Unión (Joining), interacción de una tabla con el resto.
Fácil ¿no?

Lo primero será conocer que tablas hay y cual es su estructura. La lista de tablas de las que es propietario el usuario con el que nos hemos conectado podemos obtenerla así:

SQL> select table_name from USER_TABLES;

Para consultar su estructura utilizaremos la sentencia "DESCRIBE":

SQL> describe ;

Esta información sobre las tablas y su estructura son los "Metadatos" y Oracle los almacena en el Diccionario de Datos. Aunque Oracle no distingue entre mayúsculas y minúsculas (excepto en literales) los metadatos suelen estar en mayúsculas.

Por último, hay cuatro puntos básicos sobre las sentencias SELECT a tratar:

Sintaxis
  • Hay que intentar no utilizar palabras reservadas para los objectos (lo típico).
  • Un alias es una alternativa para referencias columnas o expresiones (sobretodo expresiones).
  • Podemos utilizar la clausula DISTINCT para eliminar los duplicados del resultado de una sentencia SELECT (útil sobretodo cuando combinamos columnas).
  • Especial atención a las consultas ciegas (blind queries), tienen la forma "SELECT * FROM " y en función del tamaño de la tabla, podemos provocar un grave problema de rendimiento.
Reglas Básicas
  • Oracle no distingue entre mayúsculas y minúsculas, a menos que utilicemos comillas dobles para los alias o nombre de columnas.
  • Para terminar las sentencias se debe utilizar un terminador, suele ser un punto y coma. Aunque en scripts se suele utilizar el intro y la barra (forward slash '/').
  • Se recomienda escribir las sentencias en varias lineas, mas que nada por "higiene"...
Expresiones y Operadores
  • Sobre aritmética, que voy a contar...
  • Es útil utilizar alias para expresiones, si queremos utilizar varias palabras o conservar las mayúsculas, será necesario utilizar comillas dobles. Por legibilidad podemos utilizar la clausula AS para separar la expresión del alias, pero es opcional.
  • Para trabajar con expresiones literales (no basados en tablas), utilizaremos la pseudo-tabla DUAL.
  • Los literales suele ir entre comillas simples, si queremos utilizar las comillas simples dentro del literal tenemos dos opciones: a) utilizar dos comillas simples para "escapar" el símbolo, b) o utilizar un operador alternativo de la forma: SELECT q'X'mi 'ejemplo' de comillasX'.
Nulos
  • Cuando hablamos de nulos nos referimos a la ausencia de datos.
  • Se pueden marcar ciertas columnas como NOT NULL, para que Oracle no permita que contengan nulos.
  • Cualquier cálculo aritmético con un nulo, da como resultado otro nulo.
  • Oracle permite nulos en campos con claves foráneas, pero no permite nulos en campos con claves primarias.
Seguro que ha sido aburrido, de ahí la imagen... =)

Imagen: SQL Humor

miércoles, 18 de agosto de 2010

Confianza

Esta semana es muy curiosa, depende el artículo que leas Google puede estar en el cielo o en los infiernos de la libertad digital.


Resulta que en pocos días Google se ha visto inmersa en dos noticias de portada:
El monopolio de las búsquedas y la publicidad en Internet desata pasiones, pero parece imposible que exista una disparidad semejante de opiniones:

Ser el diablo de la libertad en la red y a la vez un gran defensor del software libre.

La Neutralidad en la Red es un tema al rojo vivo desde principios de año, debido a la presión de los proveedores de servicio como Telefónica, y algún debate en Europa. Por lo que no era de extrañar que el manifiesto junto al proveedor Verizon hiciera ponerse nervioso a más de uno.

En este caso el resultado ha sido una manifestación en Google, de la que os he dejado una foto. Y donde Google es el diablo de las libertades. Pero ya aquí nos encontramos los primeros problemas con los titulares, y pongo a dos medios 'tradicionales':
Parece que la libertad es 'matizada' o no, en función de quien lea el manifiesto. No creo que lo importante sea si uno u otro medio tienen intereses o si después se respondieron a las críticas. Queda confirmado, otra vez, que no puedes leer un solo medio si realmente quieres formarte una opinión.

Para compensar resulta que Oracle ha demandado a Google por no respetar las condiciones de Java en dispositivos móviles. Parece que Java tiene licencia GPL solo 'en parte', los dispositivos móviles quedaban excluidos.

En este caso el éxito de Android (plataforma afectada) ha hecho que mucha gente (seguramente, los mismos que arriba llamaban diablo a Google) surja como defensora de Google y sus aportaciones al software libre (dejar de lado OpenSolaris y la campaña en defensa de MySQL de su ex-propietario tampoco ha ayudado).

Podríamos discutir sobre Solaris Express, sobre como los creadores de dispositivos móviles con Android te dejan sin garantía al modificar el S.O. o  como Google demandó a Cyanogen por modificar el S.O. pero utilizar los programas (Mail, Calendar, Contacts y Youtube ¿tiene sentido Android sin ellos?).

Pero no lo voy a hacer ;) , por que esta noticia llegó a mi pantalla:


Ahora lo entiendo, resulta que es un problema de Confianza.

No se vosotros pero cuando tengo que elegir un servicio me baso en su "confiabilidad", y no en la "confianza" que tenga en la empresa.

Las patentes/derechos de autor parecen necesarias para muchos ámbitos, pero en el mundo digital se han de replantear unas cuantas cosas y el software libre necesita tiempo.

Ahora mismo multitud de empresas invierten su dinero en software libre para obtener beneficios, o buscar visibilidad para salvarse (como Sun con Solaris y Java). En mi caso ,si utilizo software libre es por que es más sencillo, más accesible, rápido o evitarme una demanda; en mi beneficio.

Si le planteo a mi empresa un producto de Oracle es por que creo que me dará el mejor servicio, no por que "confíe" en ellos, del mismo modo que cuando Oracle compró Sun seguro que fue para obtener beneficios...

Realmente hace falta interiorizar tanto a las grandes multinacionales como para que "confiemos" en ellas...

Internet esta llegando a todas las casas, y eso también supone batallas feroces y mucha más gente en el blanco y en el negro. Por suerte, es muy sencillo aportar tu granito de arena para aportar un poco de gris.

Imagenes:

lunes, 9 de agosto de 2010

¿Qué es el SQL?

En mi particular vuelta al cole, me he dado cuenta que el primer capítulo del libro para el examen 1Z0-051 contempla 5 objetivos que no entran en el examen...

Si, la intención de los autores era recalcar temas "vitales para entender el propósito del SQL y lo que intenta conseguir" y aunque el primer paso sea describir varios productos de Oracle (¿?) me ha hecho pensar...

Recuerdo perfectamente la primera vez que escuche SQL (`sequel`), fue para ofrecerme trabajo y yo no tenía ni la más remota idea del tema. Dejando de lado lo que pudo llegarme a marcar aquello, también recuerdo lo que me costó hacerme una idea sobre de que trataba eso del `esecuele`.

Por eso me he decidido a aportar mi granito de arena:

"La mayoría de sistemas donde se almacenan grandes cantidades de información lo hacen del mismo modo, para luego poder utilizar un mismo lenguaje para recuperar la información. SQL es el lenguaje que utilizamos para indicar a las bases de datos la información que nos interesa en aquel preciso instante.

Lo lanzamos contra la Base de Datos y nos devuelve lo que le hemos pedido.
"

¿Demasiado simple? quizás, pero cuando uno esta a cero, se agradece un explicación realmente básica.

¿Alguna otra idea?

"Do not just take the steps will take you one day to your objective... every step you do must to be itself a goal in itself, while it takes you forward."
Johann Goethe


Imagen: Objective


miércoles, 4 de agosto de 2010

Edition Based Redefinition (para ir abriendo boca) [MICRO]

EBR es un tema que se me resiste... si...

Por eso no me he podido resistir a publicar este curioso vídeo introductorio en forma de entrevista a uno de los ponentes de la feria ODTUG Kaleidoscope 2010.


No comentaré nada sobre el atuendo, pero si sobre EBR, una tecnología que promete migrar una aplicación de versión (modificación del esquema incluida) mientras los usuarios trabajan.

Quizás las escasas posibilidades de verlo en funcionamiento o que hace más bien poco que tengo un 11gR2 en producción (versión mínima para EBR) sean las causas de relegar el artículo a mi lista de "Someday".

martes, 3 de agosto de 2010

La Vuelta al Cole

No, no me he equivocado, primeros de agosto y hablando de vuelta al cole.


La educación esta cambiando, hay un pequeño debate social sobre si se esta haciendo demasiado rápido o en realidad el cambio es demasiado lento, pero todo estamos de acuerdo: la educación tiene que cambiar.

No pretendo inmiscuirme en el dialogo social, pero si comentar varios conceptos que, a priori, me parecen interesantes:
  • La "Edad Escolar" es algo que ya no tiene sentido, en la antigüedad solo la nobleza podía permitirse el lujo de estudiar durante toda la vida; durante una época hemos intentando dividir las nuestras en tiempo para el estudio y otro para el trabajo. Ahora nos vemos obligados a estudiar durante toda nuestra vida productiva.
  • Comunicación Unidireccional fracasa, desconozco si algún día sirvió para algo ya que nunca me ha convencido, pero creo que ahora ya son más de uno los expertos de acuerdo con la idea de potenciar la participación en las aulas.
  • Material Didáctico se diversifica, la wikipedia, los libros electrónicos, una pagina de facebook o una etiqueta en twitter pueden llevar una clase a otros límites.
Pero aunque haya puesto la imagen de un pequeño alumno, al que seguramente solo le interese jugar, voy a intentar predicar con un ejemplo para mayores:

Me propongo pasar el examen 1Z0-051 de Oracle sobre "Fundamentos del SQL I", tal y como se puede ver en el enlace, el examen puede realizarse "online" (quizás lo comente en otro post). Mi material didáctico esta vez se basa en un libro "SQL Fundamentals I Exam Guide (Exam 1Z0-051)" con el que viene un CD con los capítulos en PDF. Ha sido muy sencillo, gracias a Calibre, convertir los PDF a ePub y disponer del libro en mi lector de eBooks.

Comentar que Oracle Certification dispone de blog, página de facebook, una cuenta de twitter y un foro, donde podemos dirigir nuestras consultas sobre la certificación, o un foro específico sobre temas de SQL y PL/SQL para nuestras dudas.

Es un examen sencillo, pero si no estáis contentos con todo ésto, aquí tenéis un pequeño mapa mental sobre lo que se pide para el examen, y este blog donde intentaré poner la mayor información posible:



Apenas se nada sobre educación pero... feliz aprendizaje!!

Imagen: vuelta al cole