miércoles, 23 de noviembre de 2016

Bases de datos SQL

Orígenes y Evolución: 

  • Entre 1974 y 1975 se implementó en un prototipo llamado SEQUEL-XRM.
  • Entre 1976 y 1977, condujeron a una revisión del lenguaje (SEQUEL/2)
  • Cambió de nombre por motivos legales. convirtiéndose en SQL.
  • A partir de 1981, IBM comenzó a entregar sus productos relacionales
  • En 1983 empezó a vender DB2
  • En 1986, el ANSI adoptó SQL como estándar para los lenguajes relacionales.
  • En 1987 se transformó en estándar ISO, con el nombre de SQL/86.
  • Luego se presento la versión SQL/89.
  • En 1992 se lanza un nuevo estándar ampliado y revisado del SQL llamado "SQL-92"
  • SQL3 nuevo estándar de SQL en 1999, después de más de 7 años de debate.

Resultado de imagen para sql linea de tiempo origenes y evolucion

Funciones de SQL:

DDL: Data Definition Language
  • Creación de estructuras de la base de datos.
  • Integridad de los datos. 
  • Se tienen tres comandos:
    • Create: Crear un objeto. Ej. CREATE DATABASE nombreDB
    • Alter: Modificar un objeto. 
    • Drop: Eliminar un objeto. (Eliminar Tablas)
DML: Data Manipulation Language
  • Recuperación de datos.
  • Manipulación de datos.
  • Se tienen cuatro comandos:
    • Insert: Insertar datos dentro de una tabla. Ej. CREATE DATABASE nombreDB
    • Update: Actualizar datos dentro de una tabla. 
    • Delete: Borrar datos dentro de una tabla. (No se borra la tabla).
    • Select: Comando de consulta de datos
DCL: Data Control Language
  • Control de acceso.
  • Compartición de datos.
  • Se tienen dos comandos:
    • Grant: Otorga permisos sobre lo que queramos.
    • Revoke: Eliminar o quitar permisos.
Roles SQL:



Invocación de SQL 

Invocación Directa o Interactiva:
  • La sentencia es invocada desde el terminal.
  • Los datos devueltos se presentan en pantalla.
  • El resultado puede ser:
    • Un valor
    • Una lista de valores
    • Una tabla
    • Vacío
Invocación desde programa: „ 

  • La sentencia se invoca como parte de la ejecución del programa.
  • Los datos devueltos se recogen en una área de entrada del rea de entrada del programa.
Ventajas de SQL 
  • Independencia de los fabricantes 
  • Portabilidad a cualquier tipo de plataforma
  • SQL está estandarizado
  • Basado en el modelo relacional 
  • Lenguaje de alto nivel
  • Consultas interactivas ad-hoc 
  • Utilización en Lenguaje de programación 
  • Múltiples vistas de los datos 
  • Lenguaje de base de datos 
  • Definición dinámica de datos 
  • Arquitectura cliente/servidor
Tipos de Datos:


Creación de Dominios:
  • Los dominios se pueden utilizar como tipos de datos.
  • Permite Cambiar el tipo simultáneamente a varios atributos.
CREATE DOMAIN dominio [AS] tipodatos 
[DEFAULT valor_defecto] 
[CHECK condicion]

Operadores:
  • Comparación: =, <>, <, >, <=, >=, IS NULL
  • Lógicos: AND, OR, NOT
  • Intervalos: BETWEEN … AND...Ej.( BETWEEN 90 AND 95)
  • Cadenas de texto: LIKE Ej. (apellido LIKE ‘%nandez%’)
  • Conjuntos: IN Ej. color IN (‘Red’, ‘Blue’)
Creación de Tablas:
  • Se utiliza el comando CREATE TABLE
    • Al crear la tabla se puede indicar el esquema en el que se crea: nombre_esquema.nombre_tabla
  • Se especifican los atributos de la relación y sus tipos.
  • Se especifica la clave primaria.
  • Se especifica las restricciones de integridad.
  • Se especifica la integridad referencial.

Restricciones de columna:
  • UNIQUE „ 
  • NOT NULL 
  • DEFAULT < valor_por_defecto>
  • CHECK (condicion) „ 
  • PRIMARY KEY 
  • REFERENCES nombre_tabla(nombre_atributo) accion_referencial 

Restricciones de tabla:
  • UNIQUE „ 
  • PRIMARY KEY 
  • FOREIG KEY
  • CHECK 
Acciones Referenciales
  • ON UPDATE 
  • ON DELETE
  • RESTRICT
    • Si no se especifica nada, se considera RESTRICT
Borrado de tablas:

Se utiliza el comando:


  • Si se utiliza CASCADE CONSTRAINT, se elimina la tabla y sus restricciones.
  • Si no se utiliza CASCADE CONSTRAINT y si la tabla tiene restricciones, no se elimina, por lo que hay que eliminar primero las restricciones.
  • Al eliminar una tabla, se eliminan los datos almacenados.
Modificar una Tabla:


  • Acciones de modificación
    • Añadir atributos
      • ADD nuevo_atributo tipo restricciones 
        • „Las restricciones sólo pueden ser NOT NULL, CHECK y DEFAULT
        • „Un atributo NOT NULL sólo se puede añadir a una tabla si esta vacía
    • „Borrar atributos
      • DROP (nombre_atributo, …)
      • DROP COLUMN nombre atributo [CASCADE CONSTRAINT] [CASCADE CONSTRAINT]
    • „Modificar atributos
      • MODIFY nombre_atributo nuevo_tipo restricciones
        • „Se puede cambiar el tipo o disminuir el tamaño de un atributo si todas las tuplas tienen ese campo vacío
        • „Un atributo existente se puede hacer NOT NULL si todas las tuplas tienen valor en ese atributo
        • „ Si no se especifica algo en la modificación, permanece como estaba
Inserción de Datos:
  • Introduce información en la tabla y atributos indicados.
  • El orden y el tipo de los atributos debe coincidir con el orden y tipo de los valores.
  • Los valores se pueden obtener mediante una consulta.
  • Si un atributo no se indica, toma valor null.

  • Si se omite la lista de atributos, los valores se almacenan de acuerdo al orden de definición de los mismos en el CREATE TABLE.
  • Los tipos de la lista de valores deben coincidir con los tipos de definición en el CREATE TABLE

Modificación de datos:



  • Actualiza en la tabla indicada los valores del atributo siempre y cuando se cumpla la condición especificada.
  • Los valores se pueden obtener mediante una subconsulta o mediante fórmulas matemáticas.
  • Si no hay condición, se actualizan todas las filas de la tabla (PELIGRO).
Borrado de datos:


  • Borra de la tabla las tuplas que cumplen cierta condición.
  • Si no hay condición se borran todas las filas de la tabla (PELIGRO).
  • A diferencia de DROP TABLE no borra la estructura de la tabla.

Consulta de Datos:


  • Consulta valores de una o varias tablas de acuerdo a las condiciones impuestas en la sentencia.
  • Las únicas partes obligatorias son SELECT Y FROM, el resto son opcionales.
    • Si aparecen deben ir en el orden que aparecen en la sentencia.
    • HAVING solo puede aparecer si hay GROUP BY.
  • SELECT: se indican los atributos que se quieren obtener como erspuesta a la consulta.
  • FROM: indica la tabla o tablas que son necesarias para obtener la información.
  • WHERE: se indican las condiciones que deben cumplir las tuplas obtenidas como resultado de la consulta.
  • GROUP BY: se utiliza para formar grupos de datos en función de algún atributo.
  • HAVING: establece condiciones sobre los grupos que se formen.
  • ORDER BY: indica si muestra el resultado ordenado en función de algún atributo.
SELECT:
  • Lista de atributos separados por comas. 
    • SELECT at1 , at2 , …, atn … 
  • Se indican solamente aquellos atributos que queremos que aparezcan en el resultado. 
  • Se utiliza * si queremos todos los atributos de las tablas involucradas. 
    • SELECT * … 
  • Pueden aparecen filas duplicas. 
    • Para evitarlos se puede utilizar DISTINCT. 
    • SELECT DISTINCT lista_atributos … 
      • Sólo se obtienen como resultado filas no duplicadas para la combinación de los atributos que aparecen en el SELECT.
  • Los nombres de los atributos se pueden cambiar en el resultado de la consulta (alias de atributo) 
    • SELECT nombre_atributo [AS] nuevo_nombre …
FROM:
  • Lista de tablas que se utilizan en la consulta separadas por comas. 
    • …FROM tab1 , tab2 , …, tabn … 
  • Realiza el producto cartesiano (X) de las mismas 
  • Las condiciones (WHERE, GROUP BY) se imponen sobre el producto cartesiano 
  • Los atributos que aparecen en el SELECT se toman del producto cartesiano 
  • Dentro de la consulta una tabla se puede renombrar (alias de tabla) 
    • … FROM nombre_tabla nuevo_nombre_tabla … 
WHERE:
  • Indica las condiciones que deben cumplir las filas obtenidas como resultado. 
    • Si no aparece se recuperan todas las filas del producto cartesiano de las tablas que hay en el FROM. 
  • La condición es una expresión n booleana. 
    • Sólo se obtienen aquellas filas que cumplen la condición. 
  • Operadores para construir condiciones. 
    • Comparación: =, <>, >, <, >=, <= 
    • Lógicos: AND, OR, NOT.  
    • Matemáticos: +, -, *, / 
    • Otros: BETWEEN … AND, IN, LIKE  
JOIN:
  • No se realiza automaticamente. 
  • Hay que escribir la condición en la consulta. 
  • Si no se pone la condición de join, se obtiene el producto cartesiano (X). 
  • Escritura de join: 
    • Las tablas tienen que estar relacionadas mediante claves foráneas (atributos comunes). 
    • Igualar los atributos comunes de las tablas participantes en la consulta. 

Ambigüedades:
  • Cuando el mismo nombre de atributo aparece en más de una tabla: 
    • Hay que distinguir a que atributo se refiere. 
    • Se cualifica el atributo con el nombre de la tabla: nombre_tabla.nombre_atributo 

Alias en Tablas:
  • Cuando la misma relación se la usa más de una vez en la consulta. 
  • En ese caso se utilizan alias para las tablas. 


Funciones de Agregación:

  • Son funciones que toman una colección de valores como entrada y producen un único valor de salida.
  • COUNT (atributo)
    • Devuelve el número de tuplas o valores especificados en una consulta para el atributo indicado. 
    • Se puede utilizar como atributo *.
  • SUM (atributo), MAX (atributo), MIN (atributo) AVG (atributo)
    • Se aplican a valores numéricos y devuelven la suma, el máximo, mínimo y media de los atributos indicados. 
  • Se pueden utilizar en la cláusula SELECT o en el HAVING. 
  • En el SELECT no pueden aparecer otros atributos a menos que se incluyan en el GROUP BY.
Subconsultas:

  • En general se admiten varios niveles de anidación. 
  • Para evitar la ambigüedad los atributos sin cualificar siempre se referirán a las relaciones declaradas en la consulta más interna. 
  • Para evitar problemas es aconsejable cualificar los atributos y utilizar alias para las relaciones. 



Operadores de Subconsultas:

  • EXISTS (subconsulta)
    • Se utiliza para comprobar si el resultado de una consulta anidada es vacio.
    • Devuelve true si la tabla no es vacía, en otro caso devuelve falso.
  • NOT EXISTS (subconsulta)
    • Se utiliza para comprobar si el resultado de una consulta anidada no es vacio.
    • Devuelve true si la tabla es vacía, en otro caso devuelve falso.
  • atributo operador_comparación ALL (subconsulta)
    • Se utiliza para comparar, mediante alguno de los operadores de comparación, si el valor de un atributo es mayor, menor, igual, … que todos los valores de un determinado conjunto de valores.
    • La subconsulta debe devolver una lista de valores.
  • Atributo operador_comparación ANY (subconsulta)
    • Es similar al operador ALL, lo único que lo diferencia es que el valor del atributo únicamente tiene que ser igual, menor, mayor, … que al menos uno de los valores del conjunto.
    • La subconsulta debe devolver una lista de valores.
GROUP BY 
  • Se utiliza para formar agrupaciones de tuplas en función de los valores de uno o varios atributos. 
  • Se utiliza con funciones de agregación. 
  • No es necesario utilizar WHERE. 
  • Como resultado en el SELECT, sólo pueden aparecer funciones de agregación o los atributos que aparecen en GROUP BY. 



Referencias:
  • Orígenes y Evolución de SQL. (Sin fecha). Recuperado el 23 de noviembre de 2016 de http://sql3.wikispaces.com/4.-+Or%C3%ADgenes+y+Evoluci%C3%B3n+de+SQL.
  • Características de SQL. (Sin fecha). Recuperado el 23 de noviembre de 2016 de http://aprende-web.net/progra/sql/sql_2.php
  • Óscar Marbán Gallego. (2012). SQL. Diciembre 5, 2016, de Facultad de Informática - UPM. Sitio web: http://pegaso.ls.fi.upm.es/BD/Documentacion/06-SQL.pdf

No hay comentarios:

Publicar un comentario