RSS

CLASE 7

13 Mar

Absence of duplicate tuples

The unique construct tests whether a subquery has any duplicate tuples in its result
Find all duplicate who have at most one account at the perryridge branch

Select T. customer_name
From depositor as T
Where unique (select R.customer_name
From account, depositor as R
Where T. customer_name=
R.customer_name and R account_number=
Account.account_number and account.branch_name=’Perryridge’)

Example query
Find all customers who have at least two accounts at the Perryridge branch
Select distinct T.customer_name
From depositor as T
Where not unique (
Select R.customer_name
From account, depositor as R
Where T.customer name = R.customer_name and
R.account_number=account.account_number and
Account.branch_name=’Perryridge’)

Variable from outer level is known as a correlation variable

Modification of the database-deletion
Delete all account tuples at the Perryridge branch
Delete from account
Where branch_name=’Perryridge’

Delete all accounts at every branch located in the city ‘Needham’
Delete from account
Where branch_name in ( select branch_name
From branch
Where branch_city=’Needham’)

Example Query
Delete the record of all accounts with balances below the average at the bank
Delete from account
Where balance< (selet avg (balance) from account)

Problem: as we delete tules from deposit, the average balance changes
Solution used in SQL:
1. First, compute avg balance and find all tuples to delete
2. Next, delete al tuples found above(whitout recomputing avg or retesting the tuples)

Modification of the database-insertion
Add a new tuple to account
Insert into account
Values (‘A-9732’, ‘Perryridge’, 1200)
Or equivalently
Insert into account (branch_name, balance, account_number)
Values (‘Perryridge’, 1200, ‘A-9732’)

Add a new tuple to account with balance set to null insert into account
Values (‘A-777’, ‘Perryridge’, null)

Modification of the database-insertion

Provide as a gift for all loan customer of the Perryridge branch, a $200 saving account. Let the loan number serve as the account number for the new savings account
Insert into account
Select loan_number, branh-name, 200
From loan
Where branch_name=’Perryridge’
Insert into depositor
Select customer_name, loan_number
From loan, borrower
Where branch_name=’Perryridge’
And loan.account_number=
Borrower.account_number

The select from where statement is evaluated fully before any of its results are inserted into the relation
Moltivation: insert into table1 select*from table1

TRADUCCION

La ausencia de filas duplicadas

La única construcción comprueba si una subconsulta tiene filas duplicadas en su resultado

Buscar todos los duplicados que tienen como máximo una cuenta en la sucursal

Seleccione T. nombre del cliente
Desde el depositante como T
Cuando es único (seleccione R. nombre del cliente
De la tabla cuenta, depositantes como R
Donde es el nombre del cliente =
R. nombre del cliente y R numero de cuenta =
numero de cuenta y la cuenta con nombre =’Perrryridge’)

Ejemplo de consulta
Encontrar todos los clientes que tienen al menos dos cuentas en la sucursal de Perryridge
Seleccione distintos T. nombre del cliente
Desde el depositante como T
Cuando no es el único (
Seleccione R. nombre de la cuenta
De la tabla cuenta, los depositantes como R
Cuando T. nombre cliente = R. nombre cliente y
R. nombre de la cuenta = numero de la cuenta y
la cuenta es e la sucursal de nombre = ‘Perryridge’)
Variable de nivel externo se conoce como una variable de correlación

Modificación de la base de datos-borrado

Eliminar todas las filas de cuenta en la sucursal de Perryridge
Eliminar de la cuenta
Cuando nombre de la marca = ‘Perryridge’

Eliminar todas las cuentas en cada sucursal ubicada en la ciudad ‘Needham”
Eliminar desde la cuenta
Cuando en nombre de la marca en(seleccione nombre de la marca
Desde la marca
Cuando la marcad e la ciudad = ‘Needham)

Ejemplo de consulta
Eliminar el registro de todas las cuentas con saldos inferiores al promedio en el banco
Eliminar desde la cuenta
Cuando balance < (seleccionar promedio (equilibrio) de la cuenta)

Problema: como eliminar tules de depósito, los cambios saldo promedio
Solución utilizada en SQL:
1. En primer lugar, calcular el saldo promedio y encontrar todas las filas a borrar
2. A continuación, eliminar filas al que se encuentran por encima (debe de existir recalcular promedio o volver a probar las filas)

Modificación de la base de datos de inserción
Añadir una nueva fila cuenta
Insertar en cuenta
Los valores (‘A-9732’, ‘Perryridge’, 1200)
O equivalente
Insertar en cuenta (nombre de la marca, el balance,numero de cuenta)
Los valores (‘Perryridge’, 1200, ‘A-9732)

Añadir una nueva fila a cuenta con el equilibrio establecido en null insertar en cuenta
Los valores (‘A-777’, ‘Perryridge’, null)

Modificación de la base de datos de inserción

Proveer como un regalo para todos los clientes de préstamos de la sucursal de Perryridge, una cuenta de ahorro de $ 200. Deje el número de préstamo servir como el número de cuenta para la nueva cuenta de ahorros
Insertar en cuenta
Seleccione numero de prestamista, nombre de la marca, 200
Desde préstamo
Cuando el nombre de la marca = ‘Perryridge’
Insertar en el depositante
Seleccione nombre del cliente, numero del préstamo
Del préstamo, el prestamista
Cuando nombre de la marca = ‘Perryridge’
Y número de cuenta de prestamista = numero del cuenta de prestamista

La selección de declaración donde se evalúa por completo antes de cualquiera de sus resultados se introducen en la relación
Motivacion: insert into tabla1 select * from tabla1

 
Deja un comentario

Publicado por en marzo 13, 2011 en TALLER DE BASE DE DATOS

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: