Ventajas de SQL
- Independencia de los proveedores: SQL se ofrece en todos los principales proveedores de DBMS.
- Portabilidad entre sistemas informáticos.
- Estándares SQL: el ANSI y el ISO, publicaron el estándar en 1986. El ANSI y el ISO publicaron un estándar oficial de SQL en 1986 que se extendió rápidamente en 1992.
- Aprobación de IBM: fue originado por investigadores de IBM, y desde entonces se ha convertido en un producto estratégico de IBM basado en su DB2.
- ODBC y Microsoft: el estándar patrocinado por Microsoft es el acceso a las base de datos abiertas, una facilidad basada en SQL.
- Fundamento relacional: es un lenguaje de bases de datos relacionales.
- Estructura de alto nivel parecida al inglés.
- Consultas interactivas ad hoc: proporciona a los usuarios acceso ad hoc a los datos almacenados.
El mito de la portabilidad
- Códigos de error: el estándar SQL-89 (o SQL1) no especifica los códigos de error a devolver cuando SQL detecta un error, y todas las implementaciones comerciales utilizan su propio conjunto de códigos de error. SQL2 especifica códigos de error estándar.
- Tipos de datos: el estándar SQL1 define un conjunto mínimo de tipos de datos, pero omite alguno de los tipos más populares y útiles, tales como las cadenas de caracteres de longitud variable, las fechas y horas y los datos monetarios. SQL2 afronta esto.
- Tablas del sistema: el estándar SQL1 no dice nada acerca de las tablas del sistema que proporcionan información referente de la estructura de la propia base de datos. Cada vendedor tiene su propia estructura para estas tablas. Las tablas se estandarizaron en SQL2.
- SQL interactivo: el estándar especifica el SQL de programa utilizado por un programa de aplicación, y no el SQL interactivo.
- Interfaz de programa: el estándar SQL1 especifica una técnica abstracta para utilizar SQL desde dentro de un programa de aplicaciones. Ningún producto SQL comercial utiliza esta técnica. SQL2 especifica una interfaz SQL embebida para leguajes de programación populares, pero no interfaces a nivel de llamada.
- SQL dinámico: el estándar SQL1 no incluye las características requeridas para desarrollar frontales de bases de datos de propósito general, tales como herramientas de consulta y generadores de informes. SQL2 lo incluye.
- Diferencias semánticas: es posible ejecutar la misma consulta con dos implementaciones SQL diferentes, y producir resultados diferentes.
- Secuencias de cotejo: el estándar SQL1 no define la secuencia de cotejo (ordenación) de los caracteres almacenados en la base de datos. SQL2 incluye una especificación detallada.
- Estructura de bases de datos: los detalles del nombrado de la base de datos y de cómo se establece la conexión inicial varían enormemente y no son portables. SQL2 crea más uniformidad, pero no puede enmascarar completamente estos detalles.
Arquitecturas
- Arquitectura centralizada: se basa en un computador central, en el cual está alojado la base de datos y el programa de aplicación. Tanto el DBMS como los datos físicos residen un mismo lugar, junto con el programa de aplicaciones que acepta entradas desde el terminal de usuario. El DBMS accede a la base de datos para extraer los registros almacenados recuperando los datos necesarios, y el programa de aplicación muestra el resultado en pantalla. El sistema es multiusuario por lo que cuando acceden varios usuarios, se degrada el rendimiento.
- Arquitectura servidora de archivos: una aplicación que se ejecuta en una computadora personal puede acceder de forma transparente a los datos localizados en un servidor de archivos, que almacena los archivos compartidos. Esta arquitectura proporciona un rendimiento excelente para consultas típicas, ya que cada usuario dispone de la potencia completa de una computadora personal ejecutando su propia copia del DBMS. Produce un intenso tráfico de red y un bajo rendimiento para consultas de este tipo.
- Arquitectura cliente/servidor: las computadoras personales están conectadas en una red junto a un servidor de bases de datos que almacena las bases de datos compartidas. Las funciones del DBMS están divididas en dos partes. El front-end de bases de datos, tales como herramientas de consulta interactiva, generadores de informe y programas de aplicación, se ejecutan en la computadora personal.
DDL
Conjunto de sentencias SQL que permiten modificar la estructura de la base de datos. Sentencias:
- CREATE: permite crear y definir un objeto de la bd.
- DROP: permite eliminar un objeto.
- ALTER: permite modificar la definición de un objeto.
DML
- INSERT
- UPDATE
- DELETE
Condiciones de búsqueda
- Test de comparación: compara el valor de una expresión con el valor de otra.
- Test de rango: examina si el valor de una expresión cae dentro de un rango especificado de valores.
- Test de pertenencia a conjunto: comprueba si el valor de una expresión se corresponde con uno de un conjunto de valores.
- Test de correspondencia con patrón: comprueba si el valor de una columna que contiene datos de cadena de caracteres se corresponde a un patrón especificado.
- Test de valor nulo: comprueba si una columna tiene un valor NULL.
Reglas para procesamiento de consultas de tabla única
Los resultados producidos por una sentencia SELECT, se especifica aplicando cada una de sus cláusulas, una por una. La cláusula FROM se aplica en primer lugar, luego se aplica la cláusula WHERE, posteriormente se aplica la cláusula SELECT, finalmente se aplica la cláusula ORDER BY para ordenar los resultados.
- Comenzar con la tabla designada en FROM.
- Si hay cláusula WHERE, aplicar condición de búsqueda a cada fila de la tabla, reteniendo aquellas filas para las cuales la condición de búsqueda es TRUE.
- Se arma la lista de selección.
- Si se especifica SELECT DISTINTC, se eliminan las filas duplicadas.
- Si hay una cláusula ORDER BY, se ordenan los resultados de la consulta según la especificación.
Actualización de la BDA implica que
Modifica el contenido de la BD, El DBMS debe controlar la integridad de la bd y el acceso concurrente.
Reglas de procesamiento de consultas multitabla
- Formar el producto de las tablas indicadas en la cláusula FROM.
- Si hay una consulta WHERE, aplicar su condición de búsqueda a cada fila de la tabla producto, reteniendo aquellas filas para las cuales la condición de búsqueda es verdadera.
- Extraer las columnas seleccionadas en la cláusula SELECT.
- Si se especifica SELECT DISTINCT, eliminar las filas duplicadas de los resultados que se hubieran producido.
- Si hay una cláusula ORDER BY, ordenar los resultados de las consultas.
Reglas de procesamiento de consultas resumen
- Se forma el producto de las tablas indicadas en la cláusula FROM (si hay una sola tabla, se designa esa tabla).
- Si hay una cláusula WHERE, se aplica la condición de búsqueda a cada fila de la tabla producto, reteniendo las que cumplen con la condición de búsqueda.
- Se extraen las columnas de la lista de selección. Para una columna simple, se utiliza el valor de la columna. Si es una función de columna, se utiliza como argumento el conjunto entero de filas.
- Si se especifica SELECT DISTINCT, se eliminar las filas duplicadas.
- Si hay ORDER BY, se ordenan los resultados.
Qué es la integridad de datos
Para preservar la consistencia y
la corrección de los datos almacenados, un DBMS relacional impone típicamente una o más restricciones de integridad de datos. Estas restricciones restringen los valores que pueden ser insertados en la base de datos o creados mediante una actualización de la base de datos. Varios tipos diferentes de restricciones de integridad:
PROPIEDADES DE LAS TRANSACCIONES
PROBLEMAS SI NO HUBIERA UN MANEJO ADECUADO DE LA BDA
NIVELES DE CERRAMIENTO
TIPOS DE CERRAMIENTO
VISTAS: Una vista es una tabla virtual en la base de datos cuyos contenidos están definidos por una consulta.
VENTAJAS:
1. Seguridad: cada usuario puede obtener permisos para acceder a la base de datos únicamente a través de un pequeño conjunto de vistas que contienen los datos específicos que el usuario está autorizado a ver, restringiendo así el acceso del usuario a los datos almacenados. 2. Simplicidad de consulta: una vista puede extraer datos de varias tablas diferentes y presentarlos como una única tabla, haciendo que consultas multitabla se formulen como consultas de una sola tabla con respecto a la vista. 3. Simplicidad estructurada: las vistas pueden dar a un usuario una visión de la estructura dela base de datos presentando esta como un conjunto de tablas virtuales que tienen sentido para ese usuario. 4. Aislamiento frente al cambio. Una vista puede presentar una imagen consistente inalterada de la estructura de la base de datos, incluso si las tablas fuente subyacentes se dividen, reestructuran o cambien de nombre. 5. Integridad de datos. Si se accede a los datos y se introducen a través de una vista, el DBMS puede comprobar automáticamente los datos para asegurarse que satisfacen restricciones de integridad especificadas.
VISTAS:
DESVENTAJAS
1. Rendimiento: las vistas crean la apariencia de una tabla, pero el DBMS debe traducir las consultas con respecto a la vista en consultas con respecto a las tablas fuentes subyacentes.
2. Restricciones de actualización: cuando un usuario trata de actualizar filas de una vista, el DBMS debe traducir la petición a una actualización sobre las filas de las tablas fuentes subyacentes.
Amenazas a las BD: se produce pérdida o degradación de … •Integridad: proteger ante modificaciones inadecuadas •Disponibilidad •Confidencialidad: acceso no autorizado,violar leyes de privacidad hasta seguridad nacional
Medidas de Control: Control de acceso: restringir con creación de cuentas y contraseñas •Control de inferencias: evitar acceso a información estadística de BD, por grupos de edad, de ingresos, educación, etc. •Control de flujo: evitar que información llegue a usuarios no autorizados •Cifrado de datos: algoritmos de cifrado, con clave, para disfrazar mensaje
Seguridad en las BD Seguridad y DBA
•Creación de cuentas para usuarios o grupo de acceso a DBMS •Concesión de derechos/privilegios y Grant Option •Retiro de privilegios •Asignación nivel de seguridad: Asignar las cuentas de usuario al nivel de seguridad adecuado. Auditoría de BD: registrar acciones desde usuario/terminal.
Control de acceso discrecional: Flexibles-Vulnerables-Común en DBMS •Niveles de asignación de privilegios de uso del sistema de BD: •Cuenta: para permitir crear tablas o vistas •Tabla/vistas: crea matriz de acceso con usuarios/privilegios/objeto del privilegio Control de acceso obligatorio: Rígidas-Mayor protección •Clasificar los datos y los usuarios (servicios de inteligencia, militares, gobierno) •Clases de seguridad: AltoSecreto(TS), Secreto(S), Confidencial(C),NoClasificado (U) •Sujeto: usuario, cuenta, programa •Objeto: tabla, fila, columna, vista, operación
CREACIÓN DE TABLA:
CREATE TABLE Item
(ord_id INT,
item_id INT,
Id_producto INT,
precio DECIMAL(11,2),
cantidad INT,
cantidad_enviada INT,
CONSTRAINT item_ordid_itemid_pk PRIMARY KEY (ord_id, item_id),
CONSTRAINT item_ordid_prodid_uk UNIQUE (ord_id, Id_producto),
CONSTRAINT item_cantidad CHECK (cantidad>0),
CONSTRAINT item_fk_producto
FOREIGN KEY (id_producto) REFERENCES PRODUCTO (id)
ON UPDATE CASCADE
ON DELETE NO ACTION
Eliminación de una tabla: DROP TABLE articulos
INSERT:
INSERT INTO EMPLEADOS (Legajo, Apellido, Nombre, Fec_nac) VALUES (202, ‘ÁLVAREZ’, ,‘LILIANA‘, Convert(date,‘17/12/99′, 3))
ACTUALIZACION:
Sintaxis: UPDATE tabla SET atrib1=valor, atrib2=valor, … [WHERE condición]
1- Actualización de una tupla
UPDATE empleados SET catego = ‘B’ WHERE nroemp = 674
2- Actualización de todas las tuplas UPDATE
empleados SET catego = ‘B’
3- Actualización según condición
UPDATE empleados SET catego = ‘A‘, fecha_baja=GetDate() WHERE year(fecha_ing)
4- Actualización con subconsulta
UPDATE Cuentas_Cli SET credito=credito*1.15, fecha_act=GetDate() WHERE nrocli IN (SELECT DISTINCT nrocliente FROM facturas WHERE nrofac>932)
ELIMINACION:
Sintaxis: DELETE FROM tabla [WHERE condición]
1- Eliminación de una tupla
DELETE FROM empleados WHERE nroemp = 12058
2- Eliminación de múltiples tuplas
DELETE FROM empleados WHERE nroemp IN (12058,10235,13099,11091)
3- Eliminación de todas las tuplas
DELETE FROM empleados
4- Eliminación con subconsulta
DELETE FROM empleados WHERE nroemp IN (SELECT nroemp FROM historico)
Eliminación de una tabla
DROP TABLE articulos
Cambiar dimensión de columna
ALTER TABLE Articulos ALTER COLUMN descripcion CHAR(20)
Agregar columna
ALTER TABLE Alumnos ADD observacion VARCHAR(20) NULL
Eliminar columna
ALTER TABLE Alumnos DROP COLUMN observacion
SELECT FROM
WHERE IN-NOT IN – GROUP BY
HAVING – ORDER BY
EXISTS – NOT EXISTS
ANY – ALL
COUNT¨() cuenta el nro de valores de una columna
COUNT(*) cuenta el nro de filas de una consulta