Ch3  español
Upcoming SlideShare
Loading in...5
×
 

Ch3 español

on

  • 377 views

Fundamentos de Bases de Datos

Fundamentos de Bases de Datos

Statistics

Views

Total Views
377
Views on SlideShare
359
Embed Views
18

Actions

Likes
0
Downloads
4
Comments
0

1 Embed 18

http://faccilearn.uleam.edu.ec 18

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Ch3  español Ch3 español Presentation Transcript

  • Capítulo 3: SQL  Structura básica  Operaciones con Conjuntos  Funciones de Agregado  Valores Null  Subconsultas Anidadas  Relaciones Derivadas  Vistas  Modificación de la Base de Datos  Union de Relaciones  DDL, Data Definition LanguageU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.1 Ver el esquema
  • Esquema usado en los Ejemplos Agencia (AgenciaNombre, AgenciaCiudad) Cuenta (Cuenta-numero, AgenciaNombre, CuentaMonto) Depositor (ClienteNombre, CuentaNumero) Cliente (ClienteNombre, ClienteCalle, ClienteCiudad) Prestatario (ClienteNombre, PrestamoNumero) Prestamo (PrestamoNumero, AgenciaNombre, Monto)U.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.2 Ver el esquema
  • Estructura Básica  SQL esta basado en un conjunto de operaciones relacionales.  Una tipica consulta en SQL ha de tener la siguiente forma: select A1, A2, ..., An from r1, r2, ..., rm where P  A representa attributos  r representa relaciones  P es un condicionante  El resultado de una consulta SQL es una relaciónU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.3 Ver el esquema View slide
  • La clausula Select  Select lista los atributos deseados en una consulta  Ejemplo: Encuentra los nombres de los clientes select nombre from cliente  NOTE: SQL no permite „-‟ en los nombres, en ves de ese caracter puede usar “_”  NOTE: SQL no es sensible a las mayúsculas y minúsculas, por lo que puede indistamente escribir en cualquiera de ellas.  SQL permite registros duplicados en él resultado de una consulta.  Para forzar la eliminación de registros o filas duplicadas teclee distinct despues de la palabra select.  Encuentre todos los precios de videos de videos disponibles en el videocentro, pero sin que estos precios se vean repetidos select distinct video_precio from videoU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.4 Ver el esquema View slide
  • La clausula Select (Cont.)  Un asterisco en la clausula Select es un comodin que significa “todos los atributos” select * from alquiler  Select puede incluir expresiones aritméticas (+, –, , /). Ejemplo select prestamo_numero, prestamo_ciudad, monto*1000 from prestamo Note como en el ejemplo anterior el valor monto es multiplicado por 100.U.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.5 Ver el esquema
  • Clausula Where  Where especifica condiciones que deben cumplir los registros o filas a mostrar en los resultados.  Ejemplo: Encontrar todos los numeros de prestamos realizados en la Agencia de la ciudad de Manta cuyos montos sean mayor a $1200 select prestamo_numero from prestamo where agencia_nombre = „Manta‟ and monto >1200  Note como es posible utilizar los operadores lógicos AND, OR, NOT.  Como detalle considere tambien la posibilidad de incluir expresiones aritméticas en las condiciones del where.  SQL incluye el operador de comparación between (tiene significado “entre” en español)  Ejemplo: encuentra el numero de prestamos cuyos montos esten entre $90,000 y $100,000 select prestamo_numero from prestamo where monto between 90000 and 100000U.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.6 Ver el esquema
  • La clausula from Lista las entidades que participan en la consulta; pero un uso más avanzado es lo que se conoce como producto cartesiano…. Encuentre el producto cartesiano de Prestatario por Prestamo select from prestatario, prestamo Encuentra el nombre , numero de prestamos y monto del prestamo de todos los clientes que tienen un prestamo en la agencia Manta. select cliente-nombre, prestatario.prestamo-numero, monto from prestatario, prestamo where prestatario.prestamo-numero= prestamo.prestamo- numero and agencia-nombre = „Manta‟ U.L.E.A.M. – Chone Administración de Bases de Datos Atras Ing. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.7 Ver el esquema
  • La operación de renombres (atributos derivados)  SQL permite renombrar relaciones y atributos usando la sentencia AS: viejonombre as nuevonombre  Encuentra el nombre, numero de prestamos, monto de prestamos de todos los clientes. Renombra la columna numero-prestamo como prestamo.id select cliente-nombre, prestatario.numero-prestamo as prestamo-id, monto from prestatario, prestamo where prestatario.numero-prestamo = prestamo.numero-prestamoU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.8 Ver el esquema
  • Operaciones con cadenas  SQL incluye varios operadores para manejar cadenas como los siguientes (realmente son muchos pero se iran aprendiendo de a poco):  porcentaje (%). el % permite hacer referencia a cualquier subcadena.  subrayado (_). _ para hacer referencia a cualquier caracter.  Encuentra el nombre de los clientes cuyo nombre de calle incluya la palabra “Main”. select cliente-nombre from cliente where cliente-calle like ‘%Main%’  SQL soporta una variedad de operaciones de cadena como:  concatenación (using “||”)  convertir de minusculas a mayusculas y viceversa  encontrar tamaños de cadenas, extraer subcadenas, etc.U.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.9 Ver el esquema
  • Ordenando registros  Liste ordenadamente los nombres de los clientes que tienen un prestamo en la Agencia Manta. Dichos datos no han de estar repetidos (por ejemplo cuando un cliente tuviese dos creditos y no antepongo distinct sin duda que el aparecería dos veces en el resultado y eso en este ejemplo no es deseable ) select distinct cliente-nombre from prestatario, prestamo where prestatrio.prestamo-numero = prestamo.prestamo-numero and agencia-nombre = ‘Manta’ order by cliente-nombre  La clausula desc es una variante para ordenar los datos de forma descendente. Si ella no se especifica se asume que usted uso asc que sirve para ordenar de forma ascendente.  Ejemplo: order by cliente-nombre descU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.10 Ver el esquema
  • Operaciones con conjuntos, Ejemplos  Las operaciones de conjuntos tales como union, intersect, and except operan de la misma forma en que les estudió en Teoría de conjuntos  Cada una de las operaciones anteriores de forma automática eliminan duplicados; Si se quisiesen los datos duplicados bastaría escribir union all, intersect all y except all.  Encuentre todos los clientes que tienen un préstamo, una cuenta, o ambos : (select cliente-nombre from depositor) union (select cliente-nombre from prestatario)  Encuentre todos los clientes que tienen préstamo y cuenta. (select cliente-nombre from depositor) intersect (select cliente-nombre from prestatario)  Encuentre todos los clientes que tienen una cuenta pero ningún préstamo (select cliente-nombre from depositor) except (select cliente-nombre from prestatario)U.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.11 Ver el esquema
  • Funciones de Agregado, Ejemplos  Estas funciones retornan un valor y operan sobre un conjuntos de valores de un campo. avg: valor medio min: valor minimo max: valor maximo sum: suma de valores count: numero de valores  Encuentre el valor medio del saldo de cuentas en la agencia „Manta‟ select avg (cuenta-monto) from cuenta where Agencia-Nombre = „Manta‟  Encuentre el numero de clientes registrados select count (*) from clienteU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.12 Ver el esquema
  • Funciones de Agregado, Ejemplos– Group By  Encuentra el número de depositores de cada agencia. Select agencia-nombre, count (cliente-nombre) from depositor, cuenta where depositor.cuenta-numero = cuenta.cuenta-numero group by agencia-nombre  Nota: Los atributos en la cláusula Select que esten fuera de las funciones de agregado deben aparecer en la sentencia group byU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.13 Ver el esquema
  • Funciones de Agregado, Ejemplos– HAVING  Encuentra el nombre de las agencia donde la media de saldos de cuentas es mayor a $1200. select Agencia-nombre, avg (cuenta-nomto) from cuenta group by agencia-nombre having avg (cuenta-monto) > 1200  Note: Las condiciones de having se aplican después de la formación de grupos, en tanto que las condiciones del where son aplicadas antes de la formación de los gruposU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.14 Ver el esquema
  • Valores Null  Es posible que para algunos registros se tenga valores null en algunos de sus atributos  null significa un valor desconocido o que es un valor que no existe.  El predicado is null puede ser usado para checar valores nulos.  Ejemplo: Encuentra todos los numeros de prestamos que aparecen en la tabla prestamos con valores nulos en los montos. select prestamo-numero from prestamo where monto is null  El resultado de cualquier expresión aritmética que involucre null es tambien null  Ejemplo: 5 + null retorna null  Nota: algunas funciones de agregado simplemente ignoran los valores nulosU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.15 Ver el esquema
  • Valores Null y operaciones lógicas  Cualquier comparación con null retorna unknown (que tiene significado desconocido)  Ejemplo 5 < null or null <> null or null = null  Three-valued logic using the truth value unknown:  OR: (unknown or true) = true, (unknown or false) = unknown (unknown or unknown) = unknown  AND: (true and unknown) = unknown, (false and unknown) = false, (unknown and unknown) = unknown  NOT: (not unknown) = unknownU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.16 Ver el esquema
  • Subconsultas anidadas (Sentencia IN)  SQL provee mecanismos para realizar subconsultas  Una subconsulta es un select-from-where que es especificado dentro de una subconsulta.  Un uso común de las subconsultas es ejecutar consultas sobre subgrupos lógicos de datos  Ejemplo: Encuentre todos los clientes que tienen cuenta y préstamo en el banco select distinct cliente-nombre from prestatario where cliente-nombre in (select cliente-nombre from depositor)  Ejemplo de un caso supuesto: Encuentre todos los clientes que tienen un préstamo en el banco pero no tenga una cuenta en el banco select distinct cliente-nombre from prestatario where cliente-nombre NOT in (select cliente-nombre from depositor)U.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.17 Ver el esquema
  • Subconsultas anidadas (Sentencia IN)  Encuentre todos los clientes que tienen una cuenta y un prestamo en la agencia Chone select distinct cliente-nombre from prestatario, prestamo where prestatario.prestamo-numero = prestamo.prestamo-numero and Agencia- nombre = ‘Chone‟ and (agencia-nombre, cliente-nombre) in (select agencia-nombre, cliente-nombre from depositor, cuenta where depositor.cuenta-numero = cuenta.cuenta-numero)  Note: Esta consulta puede ser escrita de una manera muy simple, por tanto el ejemplo es realmente ilustrativoU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.18 Ver el esquema
  • Relaciones Derivadas  Encuentre la media del saldo de cuentas de esas agencias donde la media del saldo de cuentas es mayor a $1200 select agencia-nombre, media-saldo from (select agencia-nombre, avg (saldo) from cuenta group by Agencia-nombre) as rel-derivada (Agencia-nombre, media-saldo) where media-saldo > 1200 Note que no se necesita usar having, después de calcular temporalmente la vista rel-derivada en la clausula from, pues los atributos de la relación derivada pueden ser usados directamente en la claúsula where.U.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.19 Ver el esquema
  • Modificando BD – Delete-sql  Borra todas las cuentas registradas en la agencia „FLAVIO ALFARO‟ delete from cuenta where agencia-nombre = ‘FLAVIO ALFARO’  Borra todas las cuentas de todas las agencias localizadas en la ciudad de QUITO. delete from CUENTA where agencia-nombre in (select agencia-nombre from agencia where agencia-ciudad = ‘QUITO’) delete from depositor where cuenta-numero in (select cuenta-numero from agencia, cuenta where agencia-ciudad = ‘QUITO’ and agencia-nombre = cuenta.agencia-nombre)U.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.22 Ver el esquema
  • Modificando BD – Delete-sql  Borra todos los registros que esten por debajo de la media del saldo de cuentas del banco. delete from cuenta where cuenta-monto< (select avg (cuenta-monto) from cuenta)  Problem: as we delete tuples from deposit, the average balance changes  Solution used in SQL: 1. First, compute avg balance and find all tuples to delete 2. Next, delete all tuples found above (without recomputing avg or retesting the tuples)U.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.23 Ver el esquema
  • Modificando BD – Insert-sql  Agrega una nueva cuenta insert into cuenta values („C001‟, „CHONE‟,1200) O LO QUE ES LO MISMO insert into cuenta (agencia-nombre, cuenta-monto, cuenta- numero) values („CHONE‟, 1200, „C001‟)  Agrega un nuevo registro a una cuenta pero con un saldo null insert into cuenta values („C002‟,„MANTA‟, null)U.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.24 Ver el esquema
  • Modificando BD – Insert-sql  Incrementa en un 6% todas las cuentas con montos sobre los $10000, todas las otras se deben icrementar en un 5%.  Se necesita escribir dos sentencias updtes: update cuenta set cuenta-monto = cuenta-monto 1.06 where cuenta-monto > 10000 update cuenta set cuenta-monto = cuenta-monto 1.05 where balance 10000  El orden es importante, en la siguiente lámina vamos a usar la sentencia caseU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.26 Ver el esquema
  • Uso de Case-End para hacer Updates condicionales  Consultas como las anteriores donde se nos presenten casos del clasico if-else se pueden escribir así: update cuenta set cuenta-monto = case when cuenta-monto <= 10000 then cuenta-monto*1.05 else cuenta-monto * 1.06 endU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.27 Ver el esquema
  • Joined Relations  La operación JOIN toma dos relaciones y devuelve otra relaciín.  En suma esta operación es utilizada como las tipicas subconsultas (consultas en FROM)  La condicion del JOIN define que tuplas (esto es filas o registros) y por ende que atributos se presentaran en la relación resultantes  Join type – Esxsiten cuatro tipos de JOIN a saber: Nota: Aunque existen cuatro tipos de JOIN en la práctica se suele usar INNER JOIN y pocas veces los otros… Ejemplo; Join Types Join Conditions inner join natural left outer join on <predicate> right outer join using (A1, A2, ..., An) full outer joinU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.30 Ver el esquema
  • Joined Relations – Datasets for Examples  Relation loan loan-number branch-name amount L-170 Downtown 3000 L-230 Redwood 4000 L-260 Perryridge 1700  Relation borrower customer-name loan-number Jones L-170 Smith L-230 Hayes L-155  Note: borrower information missing for L-260 and loan information missing for L-155U.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.31 Ver el esquema
  • Joined Relations – Examples  loan inner join borrower on loan.loan-number = borrower.loan-numberloan-number branch-name amount customer-name loan-number L-170 Downtown 3000 Jones L-170 L-230 Redwood 4000 Smith L-230  loan left outer join borrower on loan.loan-number = borrower.loan-numberloan-number branch-name amount customer-name loan-number L-170 Downtown 3000 Jones L-170 L-230 Redwood 4000 Smith L-230 L-260 Perryridge 1700 null nullU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.32 Ver el esquema
  • Joined Relations – Examples  loan natural inner join borrower loan-number branch-name amount customer-name L-170 Downtown 3000 Jones L-230 Redwood 4000 Smith  loan natural right outer join borrower loan-number branch-name amount customer-name L-170 Downtown 3000 Jones L-230 Redwood 4000 Smith L-155 null null HayesU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.33 Ver el esquema
  • Joined Relations – Examples  loan full outer join borrower using (loan-number) loan-number branch-name amount customer-name L-170 Downtown 3000 Jones L-230 Redwood 4000 Smith L-260 Perryridge 1700 null L-155 null null Hayes  Find all customers who have either an account or a loan (but not both) at the bank. select customer-name from (depositor natural full outer join borrower) where account-number is null or loan-number is nullU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.34 Ver el esquema
  • Data Definition Language (DDL) Allows the specification of not only a set of relations but also information about each relation, including:  The schema for each relation.  The domain of values associated with each attribute.  Integrity constraints  The set of indices to be maintained for each relations.  Security and authorization information for each relation.  The physical storage structure of each relation on disk.U.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.35 Ver el esquema
  • Domain Types in SQL  char(n). Fixed length character string, with user-specified length n.  varchar(n). Variable length character strings, with user-specified maximum length n.  int. Integer (a finite subset of the integers that is machine-dependent).  smallint. Small integer (a machine-dependent subset of the integer domain type).  numeric(p,d). Fixed point number, with user-specified precision of p digits, with n digits to the right of decimal point.  real, double precision. Floating point and double-precision floating point numbers, with machine-dependent precision.  float(n). Floating point number, with user-specified precision of at least n digits.  Null values are allowed in all the domain types. Declaring an attribute to be not null prohibits null values for that attribute.  create domain construct in SQL-92 creates user-defined domain types create domain person-name char(20) not nullU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.36 Ver el esquema
  • Date/Time Types in SQL (Cont.)  date. Dates, containing a (4 digit) year, month and date  E.g. date „2001-7-27‟  time. Time of day, in hours, minutes and seconds.  E.g. time ‟09:00:30‟ time ‟09:00:30.75‟  timestamp: date plus time of day  E.g. timestamp „2001-7-27 09:00:30.75‟  Interval: period of time  E.g. Interval „1‟ day  Subtracting a date/time/timestamp value from another gives an interval value  Interval values can be added to date/time/timestamp values  Can extract values of individual fields from date/time/timestamp  E.g. extract (year from r.starttime)  Can cast string types to date/time/timestamp  E.g. cast <string-valued-expression> as dateU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.37 Ver el esquema
  • Example Query From within a host language, find the names and cities of customers with more than the variable amount dollars in some account.  Specify the query in SQL and declare a cursor for it EXEC SQL declare c cursor for select customer-name, customer-city from depositor, customer, account where depositor.customer-name = customer.customer-name and depositor account-number = account.account-number and account.balance > :amount END-EXECU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.38 Ver el esquema
  • Updates Through Cursors  Can update tuples fetched by cursor by declaring that the cursor is for update declare c cursor for select * from account where branch-name = „Perryridge‟ for update  To update tuple at the current location of cursor update account set balance = balance + 100 where current of cU.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.39 Ver el esquema
  • Other SQL Features  SQL sessions  client connects to an SQL server, establishing a session  executes a series of statements  disconnects the session  can commit or rollback the work carried out in the session  An SQL environment contains several components, including a user identifier, and a schema, which identifies which of several schemas a session is using.U.L.E.A.M. – ChoneAdministración de Bases de Datos AtrasIng. Jorge Iván Pincay Ponce, pj-83@hotmail.com 3.40 Ver el esquema