- 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.
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:
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.
- 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:
Subconsultas:- 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.
- 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