Escuela de Ingeniería Industrial Ingeniería Civil Industrial SQL • El lenguaje SQL, es el más universal en los sistemas de base de datos. Este lenguaje nos permite gestionar la base de dato para mostrar, insertar, actualizar y borrar datos. • Se trata de un lenguaje definido por el estándar ISO/ANSI SQL que utilizan los principales fabricantes de Sistemas de Gestión de Bases de Datos Relacionales. • En los lenguajes de alto nivel, existen los lenguajes procedimentales de tercera generación en donde se deben especificar todos los pasos que hay que dar para conseguir el resultado (programación). Sin embargo en SQL tan solo debemos indicar al SGDB qué es lo que queremos obtener, y el sistema decidirá cómo obtenerlo. Estructura para Modelamiento de BD SGBD • Un Sistema de Gestión de Bases de Datos (SGBD) es una aplicación comercial que permite construir gestionar bases de datos, proporcionando al usuario de la Base de Datos las herramientas necesarias para realizar, al menos, las siguientes tareas: • Definir las estructuras de los datos. • Manipular los datos. Es decir, insertar nuevos datos, así como modificar, borrar y consultar los datos existentes. • Mantener la integridad de la información. • Proporcionar control de la privacidad y seguridad de los datos en la Base de Datos, permitiendo sólo el acceso a los mismos a los usuarios autorizados. • La herramienta más difundida para realizar todas estas tareas es el lenguaje SQL.
• Algunos de los productos comerciales más difundidos son:
– ORACLE de Oracle Corporation. – DB2 de I.B.M. Corporation – SYBASE de Sybase Inc. – Informix de Informix Software Inc. – SQL Server de Microsoft Corporation. Consultas en SQL • Todos los principales SGBDR (Relacional) incorporan un motor SQL en el Servidor de Base Datos, así como herramientas de cliente que permiten enviar comandos SQL para que sean procesadas por el motor del servidor. De esta forma, todas las tareas de gestión de la Base de Datos (BD) pueden realizarse utilizando sentencias SQL. – ‚Consultar datos de la Base de Datos. – ‚Insertar, modificar y borrar datos. – ‚Crear, modificar y borrar objetos de la Base de Datos. – ‚Controlar el acceso a la información. – ‚Garantizar la consistencia de los datos. Tipos de Sentencias • Entre los trabajos que se pueden realizar en una base de datos podemos distinguir dos tipos: definición y manipulación de datos. Por ello se distinguen dos tipos de sentencias SQL: • Sentencias de manipulación de datos. (Lenguaje de Manipulación de Datos • DML). Se utilizan para: – Recuperar información. (SELECT) – Actualizar la información: – Añadir filas (INSERT) – Eliminar filas (DELETE) – Modificar filas (UPDATE) • Sentencias de definición de datos. (Lenguaje de Definición de Datos DDL). Se utilizan para: – Crear objetos de base de datos (CREATE) – Eliminar objetos de base de datos (DROP) – Modificar objetos de base de datos (ALTER) Claúsulas • Cláusula • FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros • WHERE Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar • GROUP BY Utilizada para separar los registros seleccionados en grupos específicos • ORDER BY Utilizada para separar organizar los registros seleccionados en orden de acuerdo a un criterio. • HAVING Utilizada para expresar la condición que debe satisfacer cada grupo Operadores lógicos y de comparación • AND Es el "y" lógico. Evalua dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas. • OR Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta. • NOT Negación lógica. Devuelve el valor contrario de la expresión.
• < Menor que
• > Mayor que • <> Distinto de • <= Menor ó Igual que • >= Mayor ó Igual que • = Igual que • BETWEEN Utilizado para especificar un intervalo de valores. • LIKE Utilizado en la comparación de un modelo • In Utilizado para especificar registros de una base de datos Estrucutra de una consulta general • <DML o DDL> datos<claúsula> datos <operadores> • Ej: • SELECT Nombre, Telefono FROM Clientes; • SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY Nombre; Consultas de Predicado • ALL Devuelve todos los campos de la tabla • TOP Devuelve un determinado número de registros de la tabla • DISTINCT Omite los registros cuyos campos seleccionados coincidan totalmente • DISTINCTROW Omite los registros duplicados basándose en la totalidad del registro y no sólo en los campos seleccionados. Ejemplos • SELECT ALL FROM Empleados; • SELECT * FROM Empleados; • SELECT TOP 25 Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC; • SELECT * FROM Empleados WHERE Edad > 25 AND Edad < 50; • SELECT * FROM Empleados WHERE NOT Estado = 'Soltero'; • SELECT * FROM Empleados WHERE (Sueldo > 100 AND Sueldo < 500) OR (Provincia = 'Madrid' AND Estado = 'Casado'); Consultas Join (Unión) • Existe la forma de consultar sobre un conjunto de registros de una tabla cuyo filtro de selección se encuentra en otra relacionada. • SELECT campos FROM tb1 INNER JOIN tb2 ON tb1.campo1 comp tb2.campo2 • Ejemplo:
SELECT Nombre_Categoría, NombreProducto
FROM Categorias INNER JOIN Productos ON Categorias.IDCategoria = Productos.IDCategoria; Operadores de comparación • < Menor que • > Mayor que • <> Distinto de • <= Menor ó Igual que • >= Mayor ó Igual que • = Igual que • BETWEEN Utilizado para especificar un intervalo de valores. • LIKE Utilizado en la comparación de un modelo • In Utilizado para especificar registros de una base de datos Funciones de Agregado • AVG Utilizada para calcular el promedio de los valores de un campo determinado • COUNT Utilizada para devolver el número de registros de la selección • SUM Utilizada para devolver la suma de todos los valores de un campo determinado • MAX Utilizada para devolver el valor más alto de un campo especificado • MIN Utilizada para devolver el valor más bajo de un campo especificado Consultas Join • También en el filtro de los campos entre varias tablas pueden incluirse varios criterios:
• SELECT campos FROM tabla1 INNER JOIN
tabla2 [(ON tb1.campo1 comp tb2.campo1 AND ON tb1.campo2 comp tb2.campo2) OR ON tb1.campo3 comp tb2.campo3)]; Ejemplos consultas Join y funciones • SELECT cliente.nombre, direccion FROM (cliente INNER JOIN visita ON cliente.rut=visita.r) INNER JOIN propiedad ON visita.cod_p=propiedad.numero; • SELECT cliente.nombre, direccion FROM (cliente INNER JOIN visita ON cliente.rut=visita.r) INNER JOIN propiedad ON visita.cod_p=propiedad.numero WHERE (propiedad.tipo='casa'); • SELECT Count(cliente.nombre) FROM propiedad INNER JOIN (cliente INNER JOIN visita ON cliente.rut = visita.r) ON propiedad.numero = visita.cod_p WHERE (((propiedad.tipo)='casa'));