SQL

 SQL usa una combinación de algebra relacional y construcciones del calcula racional, este se considera como un lenguaje de consultas, contiene muchas otras capacidades además de la consulta en bases de datos.

Según la historia IBM desarrollo la versión original e implemento el lenguaje originalmente Sequel, originalmente denominado Sequel, como parte del proyecto System R, a principios de 1970. En 1986 ANSI (American National Stardards Institute) e ISO publicaron la norma SQL-86. En 1987, IBM creo su propia norma SQL corporativa, interfaz de bases de datos para arquitecturas de aplicación a sistemas. En 1989 se publico una norma extendida llamada SQL-89 y actualmente los sistemas de bases de datos son normalmente compatibles y siguió con la siguiente versión SQL-92. En 1999 las publicaciones muestran referencia sobre esas normas. La norma SQL-1999 es un superconjunto  de la norma SQL-92.

El lenguaje de SQL tiene varios componentes los cuales son:

  • Lenguaje de definición de datos (LDD): Este proporciona órdenes para la definición de esquemas de relación, borrad, creación de índice y modificaciones de esquemas de relación.
  • Lenguaje interactivo de manipulación de datos (LMD): Incluye un lenguaje de consultas, basado tanto en el algebra relacional como en el calculo relacional de tuplas, también ordenes para insertar, borrar y modificar.
  • Definición de vistas: El LDD de SQL incluyen órdenes para la definición de vistas.
  • Control de transacciones: Incluyen órdenes para la especificación del comienzo y final de las transacciones.
  • SQL incorporado y SQL dinámico: Dinámico e incorporado define como se pueden incorporar las instrucciones SQL en lenguaje de programación.
  • Integridad: El LDD incluyen órdenes para especificaciones de las restricciones de integridad.
  • Autorización: El LDD incluyen ordenes para especificar derechos de acceso para las relaciones y vistas

Además de esto incluyen las normas de OSBC y JDBC para la integración con base de datos. Como por ejemplo:

Esquema-Sucursal = (nombre-sucursal, ciudad-sucursal, activo)

Una forma simple de traducir los nombres que se usan aquí a nombres SQL validos se reemplazar el guion por el (_).

Estructura básica

 Una base de datos relacional consiste en un conjunto de relaciones, a cada una de las cuales se le asigna un nombre único. La estructura básica de una expresión SQL consiste en tres clausulas; select, from y where.

La clausula select  Se usa para listar los atributos deseados del resultado de una consulta.

Aunque según el algebra relacional sea diferente al significado que le damos es, por supuesto una relación, considerada como una consulta simple, en aquellos casos donde se pretende eliminar duplicado se insertara distinct después de select y all cuando no se quiere eliminar. El símbolo * se puede usar para denotar todos los atributos o seleccionas, la clausula select puede contener expresiones aritméticas como +,- y /.

SQL también proporciona tipos de datos especiales, tales como varias formas del tipo fecha y permite varas funciones aritméticas para operar sobre esos tipos.

La clausula where Es un predicado que engloban  a los atributos de las relaciones que aparecen en la clausula from. SQL usa las conectivas lógicas and, or y not (en lugar de símbolos matemáticos) en la clausula where. Los operadores de las conectivas lógicas pueden expresiones que contenga los operadores de comparación, SQL permiten usar los operadores de comparación para comparar cadenas y expresiones aritméticas, así tipos especiales como la fecha, también incluye el operador de comparación between para simplificar las clausulas where que especifica un valor sea menor o igual a un valor mayor o igual.

La clausula from Lista las relaciones que deben ser analizadas en la evaluación de la expresión.

Se define por si mismo un producto cartesiano de las relaciones que aparecen en la clausula, esto evita la ambigüedad en los casos en que el atributo aparece en el esquema de mas de una relación. SQL-92 incluyen extensiones para llevar a cabo reuniones naturales y reuniones externas en la clausula

La operación renombramiento

SQL proporciona un mecanismo para renombrar tanto relaciones como atributos. Para ello utiliza clausulas as, esta puede aparecer tanto en select como en form. Los atributos en el resultado se derivan de los nombres de los atributos de la relación que aparecen en la cláusula from sin embargo, no se puede derivar siempre los nombres de esta forma. Damos como primer lugar, dos relaciones que aparecen en la cláusula y este puede tener atributos con el mismo nombre por lo tanto se duplica el resultado. En segundo lugar se incluyen una expresión aritmética en la cláusula select y en este caso no tiene el mismo nombre los atributos se duplica en el resultado.

Variable tupla

Las variables tupla se definen en la cláusula from mediante el uso de la  cláusula as. Como ejemplo, a continuación se reescribe la consulta (obtener los nombre y números de préstamos de todos los clientes que tienen un préstamo en el banco).

Operaciones sobre cadenas

SQL especifica las cadenas encerrándolas entre comillas simple, como ‘Navacerrada´, como se vio anteriormente. Un carácter comilla que sea parte de una cadena se puede especificar usando dos caracteres comilla.

La operación más usada sobre cadenas es el encaje de patrones, para el que se usa el operador LIKE. Para la descripción de patrones se utilizan los dos caracteres especiales siguientes:

  • Tanto por ciento (%): el carácter % encaja con cualquier subcadena.
  • Subrayado (_): el carácter _ encaja con cualquier carácter.

Orden de la presentación de las tuplas

SQL ofrece al usuario cierto control sobre el orden en el cual se presentan las tuplas de una relación, la cláusula order by hace que las tuplas resultantes de una  consulta se presenta en un cierto orden. Para listar en orden alfabético todos los clientes que tienen un préstamo en la sucursal Navacerrada.

Duplicados

La utilización de relaciones con duplicados se ha mostrado útil en diversas situaciones. SQL no solo se define formalmente las tuplas que están en el resultado de una consulta, sino también el número de copias de cada una de las tuplas que aparece en el resultado. La semántica de duplicados de una consulta de SQL se puede definir utilizando versiones de los operadores relaciones para multiconjuntos.

Operaciones sobre conjuntos

Las operaciones de SQL-92 union, intersect y except operan sobre relaciones y corresponden a las operaciones del álgebra relacional. Al igual que la unión, intersección y diferencia de conjuntos en el álgebra relacional, las relaciones que participan en las operaciones han de ser compatibles; es de es deben  tener el mismo conjunto de atributos.

union, intersect y except  de dos conjuntos. Los dos conjuntos utilizados serán: los conjuntos de todos los clientes que tienen una cuenta en el banco.

La operación unión

Para encontrar todos los clientes que poseen un préstamo, una cuenta o las dos cosas en el banco.

Unión (unión) elimina duplicados automáticamente

Préstamos (o ambas cosas) en el banco, entonces aparecerá solo una vez en el resultado.

Para conservar los duplicados, se utilizara unión all en lugar de unión.

La operación intersección

(Intersección) elimina duplicados automáticamente, al dado caso se quiera conservar los duplicados se utilizara intersecta ll en lugar de intersect

La operación excepto

Esta operación (excepto) elimina duplicados automáticamente haciendo la excepción de la consulta que se realice al menos que queramos mantener los duplicados se utilizara except all.

Funciones de agregación

Son funciones que toman un conjunto o subconjunto de valores como entrada u produce un valor único, entre las funciones tenemos:

Media: avg

Mínimo: min

Máximo: max

Total: sum

Cuenta: count

Entre la función sum y avg debe ser una colección de números, y los demás operadores pueden operar a tipos de datos que no sean números.Los predicados de la clausula having se aplica después de la formación de grupos, de modo que se pueden usar las funciones de agregación, cuando se trata de una relación entera no se usara la clausula grupo by, mientras para contar el numero de tuplas de una relación usaremos count, así también para encontrar un numero de tuplas de la relación cualquiera.

SQL no permite el uso de distinct con count, si permite sin embargo, el uso de distinct con max y min y cunado el resultado cambia y podemos usar la palabra all para especificar la retención de duplicados. Si tenemos una consulta que aparece una clausula where y una having, se aplicara primero el predicado de la clausula where y agregando en los grupos según la clausula group by.

Valores nulos

SQL permite el uso de valores nulos para indicar la ausencia de información sobre el valor nulo para indicar ausencia de información sobre el valor de un atributo. En un predicado se puede usar la palabra clave especial null para comprobar esta acción. En el caso de is not null pregunta por la ausencia  del valor nulo. En las operaciones aritméticas y de comparación causa varias complicaciones. SQL trata como desconocido el resultado de cualquier comparación que implique un valor nulo (aparte is null e is not null)

Dado el predicado en una clausula where puede incluir operaciones booleanas tales como and, or y not sobre los resultados de las comparaciones:

And: resultados de ciertos and desconocidos es desconocidos, falso and desconocido es falso

Or: el resultado de cierto or desconocido es cierto, falso or desconocido es desconocido, mientras que desconocido or desconocido es desconocido

En 1999 se introdujo un tipo de datos boolean que puede tomar los valores cierto, falso y desconocido. Las funciones de agregación some (algún) y every (cada) significan exactamente lo que se espera de ellas, se pueden aplicar a una colección de valores boo-leanos

Subconsultas animadas

SQL proporciona un mecanismo para las subconsultas animadas. Una subconsulta es una expresión select-from-where que se anida dentro de otra consulta. Un uso común de subconsultas es llevar a cabo comprobaciones sobre pertenencias a conjuntos.

Pertenencia a conjuntos

SQL utiliza el calculo relacional para las operaciones que permiten comprobar la pertenecía de una tupla a una relación. La conectiva in comprueba la pertenencia a un conjunto, donde el conjunto es la colección de valores resultado de una clausula select.

Deja un comentario o(‧'.'‧)o

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s