Docente: Albert A. Osiris Sofía Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 1 Lenguaje de Consultas SQL Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 2 SQL • • • • • • • • • • • Estructura Básica Conjunto de Operaciones Funciones Agregadas Valores Nulos Consultas Anidadas Relaciones Derivadas Vistas Modificaciones de la Base de Datos Unión de Relaciones Lenguaje de Definición de Datos SQL Embebido Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 3 SQL Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 4 SQL • Lenguaje de Consultas Estruturado (SQL) – Lenguajes de trabajo estándar para modelo relacional – Componentes • DDL (define esquemas, relaciones, índices) • DML (Algebra Relaciona y Cálculo Relacional de Tuplas) • Manipulación de datos inmerso (permite ser usado desde otro lenguaje). Conocido como “embebido”. Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 5 SQL • • • • Definición de vistas Autorizaciones al acceso a datos Integridad (restricciones complejas) Control de Concurrencia – Estructura básica: 3 cláusulas • Select (equivale a π) • From (equivale a x) • Where (equivale a σ) Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 6 Clausula Select • La cláusula select puede contener expresiones aritméticas con las operaciones +, –, ∗, y /, y operar sobre constantes y atributos de tuplas. • La consulta: select nsucursal, npréstamo, monto ∗ 100 from prestamo Retornará una relación igual a la relación prestamo, salvo que el atributo monto se encontrará multiplicado por 100. Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 7 Clausula Where • La clausula where corresponde al predicado de selección del álgebra relacional. Consiste en un predicado que involucra atributos referidos en la clausula from. • select nprestamo from prestamo where nsucursal = “Cabildo” and monto > 1200 • SQL utiliza los conectores lógicos and, or, y not. Estos permiten la utilización de expresiones aritméticas como operandos en las operaciones de comparación. Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 8 Clausula Where (II) • SQL incluye un operador de comparasión between para simplificar la clausula where cuando se especifica un rango. • select nprestamo from prestamo where monto between 90000 and 100000 Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 9 Clausula From – La clausula from corresponde al producto cartesiano en el álgebra relacional, listando las relaciones utilizadas en la evaluación de la expresión. – Encontrar el producto cartesiano borrower x loan select ∗ from prestatario, prestamo – Encontrar nombre y préstamo de los clientes que tienen un préstamo en la sucursal Cabildo. select distinct ncliente, prestatario.nprestamo from prestatario, prestamo where prestatario.nprestamo = prestamo.nprestamo and nsucursal = “Cabildo” Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 10 Operación Rename • El mecanismo de SQL para renombrar relaciones y atributos se implementa mediante la cláusula as: nombreAnterior as nombreNuevo • Encontrar el nombre y préstamo de los clientes que tienen un préstamo en la sucursal Cabildo; reemplazar la columna nprestamo con idprestamo. – select distinct ncliente, prestatario.nprestamo as idprestamo from prestatario, prestamo where prestatario.nprestamo = prestamo.nprestamo and nsucursal = “Cabildo” Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 11 Variables Tuplas – Las Variables Tuplas se definen en la clausula from a través del uso de la clausula as. – Encontrar el nombre y prestamo de los clientes que tienen un prestamo en cualquier sucursal. select distinct ncliente, T.nprestamo from prestatario as T, prestamo as S where T.nprestamo = S.nprestamo – Encontrar el nombre de las sucursales que tienen saldos mayores que alguna sucursal de Rosario. Select distinct T.nsucursal from sucursal as T, sucursal as S Where T.saldo > S.saldo and S.ciudad = “Rosario” Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 12 Operaciones String • SQL incluye un operador de búsqueda de strings. Los patrones se describen con la utilización de dos caracteres especiales: – (%). Encuentra un substring. – (_). Encuentra cualquier caracter. • Encontrar los nombres de todos los clientes cuyo domicilio incluya “Av.”. select ncliente from clientes where calle like “%Av.%” Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 13 Strings (II) – Operaciones sobre strings • Like, %, _ – – – – “Alfa%”: cualquier cadena que empiece con Alfa “%casa%”: cualquier cadena que tenga casa en su interior “_ _ _”: cualquier cadena con tres caracteres “_ _ _%”: cualquier cadena con al menos tres caracteres. Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 14 Ordenando los resultados • Listar en orden alfabético los nombres de todos los clientes que tienen un préstamo en la sucursal Cabildo select distinct ncliente from prestatario, prestamo where prestatario.nprestamo = prestamo.nprestamo and nsucursal = “Cabildo” order by ncliente • Puede especificarse desc para ordenación descendente o asc para descendente, que es el default. • Este ordenamiento es costoso. Debe ordenarse sólo si es necesario. Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 15 Operaciones • El conjunto de operaciones union, intersect, y except operan sobre relaciones y corresponden a las operaciones de álgebra relacional ∪, ∩, −. • Cada una de las operaciones precedentes elimina automáticamente los duplicados. Para conservarlos debe utilizarse union all, intersect all y except all. Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 16 Operaciones • Encontrar los clientes que tengan un préstamo, una cuenta o ambos. (select ncliente from depositante) union (select ncliente from prestatario) • Encontrar los clientes que tengan un prestamo y una cuenta (select ncliente from depositante) intersect (select ncliente from prestatario) • Encontrar los clientes que tengan una cuenta pero no un préstamo (select ncliente from depositante) except (select ncliente from prestatario) Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 17 Funciones Agregadas • Estas funciones operan sobre una columna de una relación y devuelven un valor: avg: valor promedio min: valor mínimo max: valor máximo sum: suma count: cantidad de valores Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 18 Funciones Agregadas (II) • Encontrar el promedio de los saldos de las cuentas de la sucursal Cabildo. select avg (saldo) from cientas where nsucursal = “Cabildo” • Encontrar el número de tuplas de la relación clientes: select count (*) from clientes • Encontrar la cantidad de depositantes. select count (distinct ncliente) from depositante Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 19 Funciones Agregadas – Group By • Encontrar la cantidad de depositantes por cada sucursal. select nsucursal, count (distinct ncliente) from depositante,cuentas where depositante.ncuenta = cuentas.ncuenta group by nsucursal Nota: los atributos en la cláusula select deben ser los que aparezcan en la clausula group by. Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 20 Funciones Agregadas– Having • Encontrar los nombres de las sucursales donde el saldo promedio es mayor a $1,200. select nsucursal, avg (saldo) from cuentas group by nsucursal having avg (saldo) > 1200 Nota: los predicados de la clausula having se aplican luego de la formación de grupos Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 21 Valores Nulos • Una tupla puede tener valores nulos, indicados por null, para algunos de sus atributos, null significa que ese valor no existe o es desconocido. • El resultado de una operación aritmética que involucre el valor null es null. • Toda comparación que involucre null retorna false. – Comparación con null retorna unknown – (unknown or unknown) = unknown, (true and unknown) = unknown, – (false and unknown) = false, – (unknown and unknown) = unknown – where = false si se evalúa como unknown Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 22 Valores Nulos (II) • Encontrar los préstamos que aparecen con valor nulo en el atributo monto. select nprestamo from prestamo where monto is null • Total de montos de préstamos select sum (monto) from loan Los valores nulos se ignoran. El resultado será nulo sólo si todos los montos lo son. • Todas las funciones agregadas ignoran las tuplas con valores nulos excepto count(*). Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 23 Consultas Anidadas • SQL provee un mecanismo para el anidamiento de consultas. • Una subconsulta es una expresión selectfrom-where que se anida dentro de otra consulta. • Usualmente se utiliza para desarrollar consultas de miembros, comparaciones y cardinalidad. Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 24 Set Membership • F in r ⇔ ∃ t ∈ r (t = F) (5 in 0 4 5 ) = true (5 in 0 4 6 ) = false (5 not in 0 4 6 ) = true Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 25 Ejemplo • Encontrar los clientes que tengan una cuenta y un préstamo en el banco. select distinct ncliente from prestatario where ncliente in (select ncliente from depositante) • Encontrar clientes que tienen un préstamo en el banco pero no una cuenta. select distinct ncliente from prestatario where ncliente not in (select ncliente from depositante) Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 26 Ejemplo • Encontrar los clientes que tengan una cuenta y un préstamo en la sucursal Cabildo. select distinct ncliente from prestatario, prestamo where prestatario.nprestamo = prestamo.nprestamo and nsucursal = “Cabildo” and (nsucursal, ncliente) in (select nsucursal,ncliente from depositante, cuentas where depositante.ncuenta = cuentas.ncuentas) Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 27 Set Comparison • Encontrar las sucursales que tengan activos mayores que las de Rosario select distinct T.nsucursal from sucursal as T, sucursal as S where T.saldo > S.saldo and S.ciudad like “Rosario” Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 28 Clausula Some • F <comp> some r ⇔ ∃ t(t ∈ r ∧ [F <comp> t]) Donde <comp> puede ser: <, ≤, >, =, ≠ (5< some 0 5 6 ) = true (lectura: 5 < alguna tupla en la relación) (5< some 0 5 ) = false (5 = some 0 5 ) = true (5 ≠ some 0 5 ) = true (since 0 ≠ 5) (= some) ≡ in Sin embargo, (≠ some) ≡ not in Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 29 Ejemplo Some • Encontar las sucursales que tienen activos mayores que alguna de Rosario. select nsucursal from sucursal where saldo > some (select saldo from sucursal where ciudad = “Rosario”) Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 30 Clausula All • F <comp> all r ⇔ ∀ t(t ∈ r ∧ [F <comp> t]) (5< all 0 5 6 ) = false (5< all 6 10 ) = true (5 = all 4 5 ) = false (5 ≠ all 4 6 ) = true (ya que 5 ≠ 4 and 5 ≠ 6) (≠ all) ≡ not in Sin embargo, (= all) ≡ in Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 31 Ejemplo All • Encontrar los nombres de las sucursales que tienen activos mayores que todas las sucursales de Rosario. select nsucursal from sucursal where saldo > all (select saldo from sucursal where ciudad = “Rosario”) Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 32 Relaciones Vacias • La construcción exists devuelve true si el argumento subconsulta no es vacío. • exists r ⇔ r ≠ Ø • not exists r ⇔ r = Ø Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 33 Ejemplo • Encontrar todos los clientes que tengan una cuenta en todas las sucursales de Rosario. select distinct S.ncliente from depositante as S where not exists ( (select nsucursal from sucursal where ciudad= “Rosario”) except (select R.nsucursal from depositante as T, cuenta as R where T.ncuenta = R.ncuenta and S.ncliente = T.ncliente)) Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 34 Ausencia de Tuplas Duplicadas • Comprueba si el resultado tiene tuplas dupliacadas • Encontrar los clientes que tienen sólo una cuenta en la sucursal Cabildo. select T.ncliente from depositante as T where unique ( select R.ncliente from cuenta, depositante as R where T.ncliente = R.ncliente and R.ncuenta = cuenta.ncuenta and cuenta.nsucursal = “Cabildo”) Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 35 Ejemplo • Encontrar los clientes que tienen al menos dos cuentas en la sucursal Cabildo. select distinct T.ncliente from depositante as T where not unique ( select R.ncliente from cuenta, depositante as R where T.ncliente = R.ncliente and R.ncuenta = cuenta.ncuenta and cuenta.nsucursal = “Cabildo”) Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 36 Relaciones Derivadas • Encontrar el promedio de cuentas de aquellas sucursales que poseen uno mayor a $1200. select nsucursal, prom_saldo from (select nsucursal, avg(saldo) from cuenta group by nsucursal) as result (nsucursal, prom_saldo)) where prom_saldo > 1200 Notese que no fue necesario utilizar la clausula having, ya que la relación temporaria resultante del from puede usarse en la cláusula where. Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 37 Vistas • Proveen un mecanismo para ocultar datos a ciertos usuarios. Para crear una vista se usa el comando: create view v as <expresión de consulta> donde: – <expresión de consulta> es cualquier expresión legal – El nombre de la vista está representado por v Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 38 Ejemplos de Vistas • Una vista que contenga las sucursales y sus clientes create view clientesT as (select nsucursal,ncliente from depositante,cuenta where depositante.ncuenta = cuenta.ncuenta) union (select nsucursal,ncliente from prestatario,prestamo where prestatario.npresta = prestamo.nprestamo) • Encontrar todos los clientes de la sucursal Cabildo select ncliente from clientesT where nsucursal = “Cabildo” Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 39 Modificaciones: borrado • Eliminar todos los registros de cuentas de la sucursal Cabildo delete from cuenta where nsucursal = “Cabildo” • Eliminar todas las cuentas de todas las sucursales de la ciudad de Rosario. delete from cuenta where nsucursal in (select nsucursal from sucursal where ciudad = “Rosario”) delete from depostante where ncuenta in (select ncuenta from sucursal,cuenta where ciudad = “Rosario” and sucursal.nsucursal = cuenta.nsucursal) Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 40 Ejemplo • Eliminar los registros de todas las cuentas con saldos menores al promedio del banco. delete from cuenta where saldo < (select avg(saldo) from cuenta) Problema: al eliminar tuplas de cuenta, el promedio cambia – Solución utilizada en SQL: 1. Primero calcular el promedio y encontrar todas las tuplas a eliminar 2. Luego borrar todas las tuplas seleccionadas anteriormente, sin volver a calcular el promedio – Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 41 Modificaciones: inserción • Agregar una nueva tupla a cuentas insert into cuenta values (“cabildo”, A-9732, 1200) ó insert into cuenta (nsucursal, saldo, ncuenta) values (“Cabildo”, 1200, A-9732) • Agregar una tupla a cuentas con el saldo nulo insert into cuenta values (“Cabildo”, A-777, null) Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 42 Modificaciones: inserción (II) • Entregar una bonificación de $200 a los clientes de prestamos de la sucursal Cabildo (que no tienen cuentas). insert into cuenta select nsucursal, ncuenta, 200 from prestamo where nsucursal = “Cabildo” insert into depositante select ncliente,nprestamo from prestamo,prestatario where nsucursal = “Cabildo” and prestamo.ncuenta = prestatario.ncuenta Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 43 Modificaciones: actualización • Incrementar las cuentas con saldos mayores a $10.000 en un 6%, el resto en 5%. – Dos etapas: update cuenta set saldo = saldo ∗ 1.06 where saldo > 10000 update cuenta set saldo = saldo ∗ 1.05 where saldo ≤ 10000 – El orden es importante Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 44 Actualización de una Vista • Crear una vista de todos los préstamos en la relación prestamo, ocultando el atributo monto. create view prestamoS as select nsucursal, nprestamo from lprestamo • Agregar una tupla a prestamoS insert into prestamoS values (“Cabildo”,” L-307”) Esta insersión debe ser representada como la insersión de la tupla (“Cabildo”, “L-307, null) en la relación prestamo • Actualizaciones en vistas mas complejas son desaconsejables. Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 45 Relaciones de Union • Las operaciones de Join toman dos relaciones y devuelven como resultado una tercera relación • Estas operaciones se utilizan usualmente en subconsultas en la cláusula from. • Condicion Join: define que tuplas en las dos relaciones coinciden, y que atributos estarám presentes en el resultado. • Tipo Join: define como se trata a las tuplas de cada relación que no coinciden Tipos Condiciones inner join left outer join right outer join full outer join natural on <predicate> using (A1, A2, ..., An) Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 46 Tablas para Ejemplos • Relación prestamo nsucursal nprestamo monto Centro L-170 3000 Once L-230 4000 Cabildo L-260 1700 • Relación prestatario ncliente nprestamo Perez L-170 Lopez L-230 Soto L-155 Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 47 Join: Ejemplos • prestamo inner join prestatario on prestamo.nprestamo = prestatario.nprestamo nsucursal nprestamo monto ncliente nprestamo Centro L-170 3000 Perez L-170 Once L-230 4000 Lopez L-230 prestamo left outer join prestatario on prestamo.nprestamo = prestatario.nprestamo nsucursal nprestamo monto ncliente nprestamo Centro L-170 3000 Perez L-170 Once L-230 4000 Lopez L-230 Cabildo L-260 1700 null null Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 48 Join: Ejemplos (II) • prestamo natural inner join prestatario nsucursal nprestamo monto ncliente Centro L-170 3000 Perez Once L-230 4000 Lopez prestamo natural right outer join prestatario nsucursal nprestamo monto ncliente Centro L-170 3000 Perez Once L-230 4000 Lopez null L-155 null Soto Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 49 Join: Ejemplos (III) • prestamo full outer join prestatario using (nprestamo) nsucursal nprestamo monto ncliente Downtown L-170 3000 Jones Redwood L-230 4000 Smith Perryridge L-260 1700 null null L-155 null Hayes • Encontrar los clientes que tengan una cuenta ó un préstamo pero no los dos. select ncliente from (depositante natural full outer join prestatario) where ncuenta is null or ncuenta is null Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 50 Data Definition Language (DDL) Permite la especificación de información referida a cada relación, incluyendo: • • • • • • El esquema de cada relación El dominio de valores asociado Restricciones de integridad Conjunto de índices de cada relación Información de seguridad y autorizaciones La estructura física de almacenamiento en disco Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 51 Tipos de Dominio en SQL • char(n). String de caracteres de longitud fija • varchar(n). String de caracteres de longitud variable, máximo n. • int. enteros • smallint. Small integer • numeric(p,d). Número decimal fijo de p posiciones con n digitos decimales. Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 52 Tipos de Dominio en SQL (II) • real, double precision. Números de punto flotante y doble precisión. • float(n). Punto flotante con precisión de al menos n dígitos. • date. aaaammdd • time. hhmmss • Se permiten valores nulos en todos los atributos. La declaración de un atributo como not null prohíbe valores nulos para ese atributo. Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 53 Construción: Create Table • En SQL se define una relación con el comando create table: create table r (A1 D1, A2 D2, ..., An Dn, (integrity-constraint1), ..., (integrity-constraintk)) – r es el nombre de la relación – cada Ai en un nombre de atributo en el esquema de la relación r – Di es el tipo de dato para el atributo Ai • Ejemplo: create table sucursal (nsucursal char(15) not null, ciudad char(30), saldo integer) Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 54 Restricciones de Integridad • not null • primary key (A1, ..., An) • check (P,) donde P es un predicado Ejemplo: declarar nsucursal como la clave primaria para sucursal y asegurar que los saldos sean no negativos: create table sucursal (nsucursal char(15) not null, ciudad char(30) saldo integer, primary key (nsucursal), check (saldo > = 0)) La declaración de un atributo como clave primaria le impone la restricción no nula Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 55 Constructores Drop y Alter Table • El comando drop table elimina toda la información referida a la relación de la base de datos. • El comando alter table se usa para agregar atributos a relaciones existentes. Todas las tuplas contendrán el valor null para ese atributo. alter table r add A,D • El comando alter table también puede ser usado para eliminar atributos de una relación alter table r drop A Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 56 SQL Embebido • El estándar SQL define comandos embebidos en lenguajes de programación como Pascal, PL/I, Fortran, C, and Cobol. • Un lenguaje en el que SQL está embebido se llama lenguaje host, y los comandos de SQL son embebidos. Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 57 Ejemplo Desde un lenguaje host, encontrar los nombres y cuentas de los clientes con saldos mayores al valor almacenado en la variable monto. • Especifica la consulta en SQL y se declara una cursor para ella: • EXEC SQL declare c cursor for select ncliente,ncuenta from depositante,cuenta where depositante.ncuenta = cuenta.ncuenta and cuenta.saldo > monto END-EXEC Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 58 SQL embebido (II) • El comando open causa la evaluación de la consulta EXEC SQL open c END-EXEC • El comando fetch asigna el valor de una tupla a variables del lenguaje host. EXEC SQL fetch c into :cn: an END-EXEC • El comando close elimina la relación temporal que almacenaba la consulta EXEC SQL close c END-EXEC Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 59 Query By Example Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 60 QBE • Query By Example: – Sintaxis bidimensional: una consulta se expresa como una tabla – Se expresa la consulta con un “ejemplo” – Se basa en el cálculo relacional de dominios – Ejemplos en Access Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 61 Tareas Pendientes • Aplicación específica MySQL Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 62 Conclusiones • SQL es un lenguaje de consultas flexible. • Se ha impuesto como paradigma de los lenguajes de consulta. Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 63 Fundamentos de Bases de Datos Clase Nº 6 Fundamentos de Bases de Datos - Licenciatura en Sistemas – U. Académica Río Gallegos 64