presentacio sql ok
TRANSCRIPT
05 – SQL 1
05 – SQL 2
Introducción a SQL (Structured Query Language)
Estándares definidos por ANSI
(American National Standard Institute): • SQL-86• SQL-89• SQL-92• SQL-99
Prácticamente todos los motores de bases de datos cumplen con
el estándar ANSI SQL-92. Vamos a utilizar ese.
05 – SQL 3
Componentes del lenguaje SQL-92
• Sentencias DDL (Data Definition Language)• creación/eliminación de tablas, claves primarias, claves externas, vistas, índices• otorgar / denegar permisos (Grant/Revoke)
• Sentencias DML (Data Manipulation Language)• Select• Insert• Update• Delete
• Control de transacciones• Begin Transaction, Commit, Rollback
• SQL almacenado• Procedures, Functions, Triggers
05 – SQL 4
Select: sintaxis
Select <columna(s)>From <tabla(s)>
Es la sentencia utilizada para consultar el contenido de una o más tablas.
El resultado del Select es SIEMPRE una tabla
Su forma más simple es
05 – SQL 5
Select: <columnas>
Select cod, nombre, precioFrom Articulo
cod nombre precio11 Mesa jardin $ 6012 Silla jardin $ 2013 Silla playa $ 25
Articulo
cod nombre precio11 Mesa jardin 6012 Silla jardin 2013 Silla playa 25
Select *From Articulo
cod nombre precio11 Mesa jardin 6012 Silla jardin 2013 Silla playa 25
Select precio, cod, nombreFrom Articulo
Select precio, codFrom Articulo
precio cod60 1120 1225 13
precio cod nombre60 11 Mesa jardin20 12 Silla jardin25 13 Silla playa
05 – SQL 6
Select: <columnas>: alias de columnas
Select cod, cod as codigoFrom Articulo
cod nombre precio11 Mesa jardin $ 6012 Silla jardin $ 2013 Silla playa $ 25
Articulo
cod codigo11 1112 1213 13
Select cod as codigo de articuloFrom Articulo
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'de'.
Select cod as [codigo de articulo]From Articulo
codigo de articulo111213
05 – SQL 7
Select
Select <columna1> [AS <alias1>],<columna2> [AS <alias2>],
…<columnaN> [AS <alias3>]
From <tabla>
Donde columnaN puede ser el nombre de una columna
o * para mostrar todas las columnas.
Por ahora ...
05 – SQL 8
Select: <columnas> : operaciones entre columnas
Select cod, total, cantFrom Compra
Select cod, total, cant, total/cant as [precio unit]
From Compra
cod factura total cant71 23 $ 30 377 23 $ 20 281 24 $ 20 40
Compra
cod total cant71 30 377 20 281 20 40
cod total cant precio unit71 30 3 1077 20 2 1081 20 40 0
Select cod, total, cant, (total/cant) * (1.0) as [precio unit]
From Compra
cod total cant precio unit71 30 3 10.077 20 2 10.081 20 40 0.0
Select cod, total, cant, (total *1.0) / cant as [precio unit]
From Compra
cod total cant precio unit71 30 3 10.077 20 2 10.081 20 40 0.5
05 – SQL 9
Select: <columnas> : fechas
Select factura, fechaFrom Factura
Select factura, DATEPART(day, fecha) as dia,
DATEPART (month, fecha) as mes,DATEPART (year, fecha) as año
From Factura
Select factura, Convert(Char(10),fecha,105) as fecha
From Factura
fact ura fecha71 01-01-0572 02-01-0573 03-01-05
Factura
factura fecha71 2005-01-01 00:00:00.00072 2005-01-02 00:00:00.00073 2005-01-03 00:00:00.000
factura dia mes año71 1 1 200572 2 1 200573 3 1 2005
factura fecha71 01-01-200572 02-01-200573 03-01-2005
05 – SQL 10
Palabra clave distinct
Select codCiudadFrom Cliente
Select distinct codCiudad From Cliente
Select nombre, codCiudadFrom Cliente
Select distinct nombre, codCiudadFrom Articulo
DNI Nombre codCiudad30.112.152 Germán Fazzio 130.228.212 Fernando Alesso 230.245.123 Alvaro Hulgich 2
Cliente
nombre codCiudadGermán Fazzio 1Fernando Alesso 2Alvaro Hulgich 2
nombre codCiudadGermán Fazzio 1Fernando Alesso 2Alvaro Hulgich 2
codCiudad122
codCiudad12
05 – SQL 11
Select
Select [distinct]<columna1> [AS <alias1>],<columna2> [AS <alias2>],
…<columnaN> [AS <alias3>]
From <tabla>
Donde columnaN puede ser:
•Una columna que exista en la tabla indicada en el From•Una operación sobre las columnas de la tabla del From•* (todas las columnas de la tabla del from)
La palabra clave distinct elimina duplicados en el resultado
Por ahora ...
05 – SQL 12
Select: Ejercicio
Select cod, nombre, precio, precio * 1.21 As [precio lista]
From Articulo
precio: valor sin IVA
Mostrar, de cada artículo, el codigo, nombre, precio sin iva y precio con IVA.
Llamar al precio con IVA “precio lista”.
cod nombre precio11 Mesa jardin $ 6012 Silla jardin $ 2013 Silla playa $ 25
Articulo
cod nombre precio precio lista11 Mesa jardin 60 72.6012 Silla jardin 20 24.2013 Silla playa 25 30.25
05 – SQL 13
Select: cláusula Where
Select <columna(s)>From <tabla(s)>
[ Where <condicion(es)> ]
La sentencia Select puede tener una cláusula Where
Where se utiliza para poner una o más condiciones.
Los corchetes se incluyen aquí para indicar que la claúsula Where
es opcional. No deben colocarse en el código SQL.
05 – SQL 14
Select: cláusula Where
Select *From Compra
Select * From Compra
Where factura = 23
cod factura total cant71 23 $ 30 377 23 $ 20 281 24 $ 20 40
Compra
cod factura total cant71 23 30 377 23 20 281 24 20 40
Select factura, total, cantFrom Compra
Select factura, total, cantFrom Compra
Where factura = 23
cod factura total cant71 23 30 377 23 20 281 24 20 40
cod factura total cant71 23 30 377 23 20 281 24 20 40
cod factura total cant71 23 30 377 23 20 281 24 20 40
05 – SQL 15
Operadores Lógicos: And, Or, Not
Select * From EmpleadoWhere sexo = 'M'
Legaj o Nombre sexo codciudad1001 Germán M 11002 Fernando M 21003 Claudia F 21004 Patricia F 3
Empleado
Legajo Nombre Sexo Ciudad1001 Germán M 11002 Fernando M 2
Select * From EmpleadoWhere codciudad = 2
Legajo Nombre Sexo Ciudad1002 Fernando M 21003 Claudia F 2
Select * From EmpleadoWhere sexo = 'M'
And codciudad = 2
Legajo Nombre Sexo Ciudad1002 Fernando M 2
Select * From EmpleadoWhere sexo = 'M'Or codciudad = 2
Legajo Nombre Sexo Ciudad1001 Germán M 11002 Fernando M 21003 Claudia F 2
05 – SQL 16
Operadores Lógicos: And, Or, Not
Select * From EmpleadoWhere sexo = 'M'
Legaj o Nombre sexo codciudad1001 Germán M 11002 Fernando M 21003 Claudia F 21004 Patricia F 3
Empleado
Legajo Nombre Sexo Ciudad1001 Germán M 11002 Fernando M 2
Select * From EmpleadoWhere sexo = 'M'
And Not codciudad = 2
Select * From EmpleadoWhere sexo = 'M'
Or Not codciudad = 2
Select * From EmpleadoWhere Not sexo = 'M'
Legajo Nombre Sexo Ciudad1003 Claudia F 21004 Patricia F 3
Legajo Nombre Sexo Ciudad1001 Germán M 1
Legajo Nombre Sexo Ciudad1001 Germán M 11002 Fernando M 21004 Patricia F 3
05 – SQL 17
Operadores aritméticos
Select * From ArticuloWhere cod = 11
cod nombre precio11 Mesa jardin $ 6012 Silla jardin $ 2013 Silla playa $ 25
Articulo
cod nombre precio11 Mesa jardin 50
Select * From ArticuloWhere cod <> 11
cod nombre precio12 Silla jardin 2013 Silla playa 25
Select * From ArticuloWhere cod > 12
cod nombre precio13 Silla playa 25
Select * From ArticuloWhere cod >= 12
cod nombre precio12 Silla jardin 2013 Silla playa 25
05 – SQL 18
Operadores LIKE y NOT LIKE
Select * From ArticuloWhere nombre= 'Silla'
cod nombre precio11 Mesa jardin $ 6012 Silla jardin $ 2013 Silla playa $ 25
Articulo
Select * From ArticuloWhere nombre LIKE 'Silla%'
cod nombre precio12 Silla jardin 2013 Silla playa 25
cod nombre precio
Select * From ArticuloWhere nombre NOT LIKE 'Silla%'
cod nombre precio11 Mesa jardin 50
05 – SQL 19
Operadores LIKE y NOT LIKE
cod nombre precio11 Mesa jardin $ 6012 Silla jardin $ 2013 Silla playa $ 25
Articulo
Select * From ArticuloWhere nombre = '%jardin'
Select * From ArticuloWhere nombre LIKE '%jardin'
cod nombre precio11 Mesa jardin 5012 Silla jardin 20
cod nombre precio
El símbolo de porcentaje (%) equivale a cualquier cadena de
0 ó más caracteres, pero sólo cuando
se utilizan los operadores LIKE o NOT LIKE.
05 – SQL 20
Operadores LIKE y NOT LIKE
cod nombre precio11 Mesa jardin $ 6012 Silla jardin $ 2013 Silla playa $ 25
Articulo
Select * From ArticuloWhere nombre NOT LIKE '%jardin'
cod nombre precio13 Silla playa 25
Select * From ArticuloWhere Not nombre NOT LIKE '%jardin'
cod nombre precio11 Mesa jardin 5012 Silla jardin 20
Select * From ArticuloWhere nombre LIKE '%jardin'
cod nombre precio11 Mesa jardin 5012 Silla jardin 20
“todos los artículos de jardin”
“excluir los artículos que no sean de jardín”
“los artículos que no sean de jardín”
05 – SQL 21
Tratamiento de valores nulos
Select * From EmpleadoWhere esJefe > 10
Legaj o nombre esJefe11 Germán 1212 Fernando 1313 Alvaro null
Empleado
cod nombre precio11 Germán 1212 Fernando 13
Select * From EmpleadoWhere esJefe < 10
cod nombre precio
Select * From EmpleadoWhere esJefe = NULL
cod nombre precio
Cualquier comparación (=, >, <, >=, <=) que incluya un valor NULL
NUNCA será evaluada como verdadera
05 – SQL 22
Tratamiento de valores nulos
Select * From EmpleadoWhere esJefe <> NULL
Legaj o nombre esJefe11 Germán 1212 Fernando 1313 Alvaro null
Empleado
Select * From EmpleadoWhere esJefe IS NULL
Para manejar los valores nulos utilizar SIEMPRE
IS NULL ó IS NOT NULL
cod nombre precio
cod nombre precio13 Alvaro NULL
Select * From EmpleadoWhere esJefe IS NOT NULL
cod nombre precio11 Germán 1212 Fernando 13
05 – SQL 23
Claúsula where: manejo de fechas
Select factura, fechaFrom Factura
Select factura, fechaFrom Factura
Where fecha > '1/1/2005' And fecha < '1/3/2005'
fact ura fecha71 01-01-0572 02-01-0573 03-01-05
Factura
factura fecha71 2005-01-01 00:00:00.00072 2005-01-02 00:00:00.00073 2005-01-03 00:00:00.000
factura fecha72 2005-01-02 00:00:00.000
Cuando en la base de datos se guarda un valor de tipo TIMESTAMP,
es preciso manejarlo como tal (considerar horas, minutos y segundo)
05 – SQL 24
Claúsula where: manejo de fechas
Select factura, fechaFrom Factura
Where fecha >= '1/1/2005' And fecha < '1/2/2005'
fact ura fecha71 01-01-0572 02-01-0573 03-01-05
Factura
“mostrar las ventas ocurridas el 1 de enero de 2005”
Select factura, fechaFrom Compra
WhereDATEPART(day, fecha) = 1
And DATEPART (month, fecha) = 1And DATEPART (year, fecha) = 2005
factura fecha71 2005-01-01 00:00:00.000
factura fecha71 2005-01-01 00:00:00.000
05 – SQL 25
Select: Ejercicio
Select * From Materia
Where codigo LIKE '71.%‘Or nombre IS NULL
Mostrar toda la información posible de las materias cuyo código comience con
71. o cuya descripción no se conozca
codigo nombre71.45 Matemática I71.46 Matemática I I78.33 NULL75.21 Prob y Est
Materia
codigo nombre71.45 Matemática I71.46 Matemática II78 NULL
05 – SQL 26
Select: cláusula Where
Select <columnas>From <tabla>
[ Where <condicion> ]
Donde <condicion> puede ser (por ejemplo):
•columna1 = valor
•columna1 >= valor
•columna1 <> valor
•column LIKE ' valor%‘
•<condicion1> AND <condicion2>
•<condicion1> OR <condicion2>
•<condicion1> AND NOT <condicion2>
•DATEPART(year,columna1) = valor
Por ahora ...
05 – SQL 27
Select: cláusula Order by
Select <columna(s)>From <tabla(s)>
[ Where <condicion(es)> ][ Order by <criterio(s)> ]
La sentencia Select puede tener una cláusula Order by
Order by se utiliza para poner una o más criterios de ordenación de las filas de la tabla resultado.
05 – SQL 28
Select: cláusula Order by
Select * From EmpleadoOrder by legajo ASC
Legaj o Nombre sexo codciudad1001 Germán M 11002 Fernando M 21003 Claudia F 21004 Patricia F 3
Empleado
Select * From EmpleadoOrder by legajo DESC
Select * From EmpleadoOrder by legajo
Legajo Nombre Sexo codCiudad1001 Germán M 11002 Fernando M 21003 Claudia F 21004 Patricia F 3
Legajo Nombre Sexo codCiudad1001 Germán M 11002 Fernando M 21003 Claudia F 21004 Patricia F 3
Legajo Nombre Sexo codCiudad1004 Patricia F 31003 Claudia F 21002 Fernando M 21001 Germán M 1
05 – SQL 29
Select: cláusula Order by
Select * From EmpleadoOrder by sexo
Legaj o Nombre sexo codciudad1001 Germán M 11002 Fernando M 21003 Claudia F 21004 Patricia F 3
Empleado
Select * From EmpleadoOrder by
Sexo ASC, codCiudad DESC
Legajo Nombre Sexo codCiudad1003 Claudia F 21004 Patricia F 31001 Germán M 11002 Fernando M 2
Legajo Nombre Sexo codCiudad1004 Patricia F 31003 Claudia F 21002 Fernando M 21001 Germán M 1
05 – SQL 30
Select: cláusula Order by
Select <columna(s)>From <tabla(s)>
[ Where <condicion(es)> ][ Order by
<columna1> [ ASC | DESC ],<columna2> [ ASC | DESC ], ...<columnaN> [ ASC | DESC ]
]
Por ahora ...
05 – SQL 31
Select: Ejercicio
Select * From Ventas
Order by Año,
ventas$ Desc
Mostrar las ventas por provincia y por año, ordenando en primera medida por
el año en forma ascendente, y luego ordenar las provincias en forma descendente
por el valor de las ventas.
Año Provincia vent a$2003 Buenos Aires 15002004 Buenos Aires 20002003 Cordoba 18002004 Cordoba 4000
Ventas
Año Provincia venta$2003 Cordoba 18002003 Buenos Aires 15002004 Cordoba 40002004 Buenos Aires 2000
05 – SQL 32
Insert: sintaxis
Insert Into <tabla> Values (valor1, valor2, valor3, ..., valorN)
Es la sentencia utilizada para agregar filas a una tabla.
Con esta sintaxis, una sentencia Insert coloca una sola fila en una tabla.
Para colocar varias filas, será necesario hacer un Insert para cada una.
Su forma más simple es
05 – SQL 33
Insert: sintaxis
Legaj o nombre fec_nac11 Germán 19/02/198513 Alvaro 29/02/1984
Empleado
Insert Into Empleado Values (12, Fernando, 23/07/1986)
Server: Msg 128, Level 15, State 1, Line 1
The name 'Fernando' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted.
05 – SQL 34
Insert: sintaxis
Insert Into Empleado Values (12, 'Fernando', 23/07/1986)
Legaj o nombre fec_nac11 Germán 19/02/198512 Fernando 01/01/190013 Alvaro 29/02/1984
Empleado
Encerrar entre comillas simples los
valores constantes de tipo texto ó fecha.
Legaj o nombre fec_nac11 Germán 19/02/198513 Alvaro 29/02/1984
Empleado
05 – SQL 35
Insert: sintaxis
Insert Into Empleado Values (12, 'Fernando', '23/07/1986')
Encerrar entre comillas simples los
valores constantes de tipo texto ó fecha.
Legaj o nombre fec_nac11 Germán 19/02/198512 Fernando 23/07/198613 Alvaro 29/02/1984
Empleado
Legaj o nombre fec_nac11 Germán 19/02/198513 Alvaro 29/02/1984
Empleado
05 – SQL 36
Insert: sintaxis
Insert Into Empleado Values (12, 'Fernando')
Server: Msg 213, Level 16, State 4, Line 1
Insert Error: Column name or number of supplied values does not match table definition.
Legaj o nombre fec_nac11 Germán 19/02/198513 Alvaro 29/02/1984
Empleado
05 – SQL 37
Insert: sintaxis
Insert Into <tabla> Values (valor1, valor2, valor3, ..., valorN)
La sintaxis
Sólo puede utilizarse cuando se van a dar valores para todas las columnas de la tabla. Cuando se desean proveer menos valores, es preciso utilizar la sintaxis:
Insert Into <tabla> (col1, col2, …, colN)Values (valor1, valor2, ..., valorN)
05 – SQL 38
Insert: sintaxis
Insert Into Empleado (legajo,nombre) Values (12, 'Fernando')
Legaj o nombre fec_nac11 Germán 19/02/198512 Fernando null13 Alvaro 29/02/1984
Empleado
Legaj o nombre fec_nac11 Germán 19/02/198513 Alvaro 29/02/1984
Empleado
05 – SQL 39
Insert: sintaxis
Insert Into Empleado (nombre, legajo) Values (12, 'Fernando')
Server: Msg 245, Level 16, State 1, Line 1
Syntax error converting the varchar value 'Fernando' to a column of data type int.
El orden de las columnas indicadas a continuación de la tabla
debe corresponderse con los valores.
Legaj o nombre fec_nac11 Germán 19/02/198513 Alvaro 29/02/1984
Empleado
05 – SQL 40
Insert: sintaxis
Insert Into Empleado (nombre, fec_nac) Values ('Fernando', '23/07/1986')
Es preciso dar valores para todas las columnas que no acepten nulos.
Legaj o nombre fec_nac11 Germán 19/02/198513 Alvaro 29/02/1984
Empleado
Legaj o nombre fec_nac11 Germán 19/02/1985
null Fernando 23/07/198613 Alvaro 29/02/1984
Empleado
Server: Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column 'Legajo', table 'GDatos.dbo.Empleado'; column does not allow nulls. INSERT fails.
The statement has been terminated.
05 – SQL 41
Insert: Ejercicio
Insert Into ClienteValues (14, 'Patricia',0, NULL)
q_compras: cantidad de compras que
hizo un cliente.
fec_uc: fecha de última compra
Dar de alta a un nuevo cliente, Patricia, con ID 14 (todavía no realizó ninguna
compra)
cod nombre q_compras fec_uc11 Fernando 12 12/4/0512 Germán 3 21/07/0413 Claudia 2 23/08/06
Cliente
cod nombre q_compras fec_uc11 Fernando 12 12/4/0512 Germán 3 21/07/0413 Claudia 2 23/08/0614 Patricia 0 null
Cliente
Insert Into Cliente(cod,nombre,q_compras
)Values (14, 'Patricia',0)
o
05 – SQL 42
Delete: sintaxis
Delete From <tabla> [ Where <condición> ]
Es la sentencia utilizada para eliminar filas de una tabla.
05 – SQL 43
Delete: sintaxis
Delete From Empleado
Si no se especifica una condición Where, se eliminarán todas las
filas de la tabla (usar con cuidado)
Legaj o nombre fec_nac11 Germán 19/02/198513 Alvaro 29/02/1984
Empleado
Legaj o nombre fec_nacEmpleado
05 – SQL 44
Delete: sintaxis
Delete From Empleado
Legaj o nombre fec_nac11 Germán 19/02/198513 Alvaro 29/02/1984
Empleado
Legaj o nombre fec_nacEmpleado
Una buena práctica es, antes de ejecutar una sentencia Delete,
cambiar la palabar Delete por Select *. De esta forma, podemos
preveer qué filas se van a eliminar.
Select * From Empleado Legajo nombre fec_nac11 Germán 19/02/198513 Alvaro 29/02/1984
05 – SQL 45
Delete: sintaxis
Delete From EmpleadoWhere Empleado = 11
Legaj o nombre fec_nac11 Germán 19/02/198513 Alvaro 29/02/1984
Empleado
La cláusula Where de la sentencia Delete tiene la misma sintaxis
que en la sentencia Select.
Select * From EmpleadoWhere Empleado = 11
Legajo nombre fec_nac11 Germán 19/02/1985
Legaj o nombre fec_nac13 Alvaro 29/02/1984
Empleado
05 – SQL 46
cod nombre q_compras fec_uc11 Fernando 12 12/4/0512 Germán 3 21/07/0413 Claudia 2 23/08/0614 Patricia 18 14/7/04
Cliente
cod nombre q_compras fec_uc11 Fernando 12 12/4/0512 Germán 3 21/07/0413 Claudia 2 23/08/0614 Patricia 18 14/7/04
Cliente
Delete: Ejercicio
Delete From CompraWhere fec_uc <
'01/01/2005'And q_compras <= 5
q_compras: cantidad de compras que
hizo un cliente.
fec_uc: fecha de última compra
Eliminar de la tabla todos los clientes que no hayan realizado ninguna compra
entre el 1 de enero de 2005 y hoy, salvo aquellos que hayan realizado más de 5
compras.
05 – SQL 47
Update: sintaxis
Update <tabla> Set
col1 = valor1,col2 = valor2,...colN = valorN
[ Where <condición> ]
Es la sentencia utilizada para actualizar filas de una tabla.
No es necesario indicar valores para todas las columnas de la tabla;
basta con aquellas que se quieren actualizar.
05 – SQL 48
Update
Update CompraSet cant = NULL
cod factura total cant1 23 $ 30 32 23 $ 20 23 24 $ 20 404 24 $ 20 40
Compra
cod factura total cant1 23 $ 60 null2 23 $ 40 null3 24 $ 40 null4 24 $ 20 null
Compra
Si no se incluye una cláusula Where, se actualizan todas las filas
de la tabla
05 – SQL 49
Update
Update CompraSet cant = NULL
Where cod = 4
cod factura total cant1 23 $ 30 32 23 $ 20 23 24 $ 20 404 24 $ 20 40
Compra
cod factura total cant1 23 $ 60 32 23 $ 40 23 24 $ 40 404 24 $ 20 null
Compra
Con una cláusula Where, es posible
modificar solamente algunas filas
05 – SQL 50
Update
Update CompraSet total = total * 2
cod factura total cant1 23 $ 30 32 23 $ 20 23 24 $ 20 404 24 $ 20 40
Compra
cod factura total cant1 23 $ 60 32 23 $ 40 23 24 $ 40 404 24 $ 40 40
Compra
El valor a colocar puede depender del valor anterior.
05 – SQL 51
Update
Update CompraSet cant = NULL,
total = total * 2 Where cod = 4
cod factura total cant1 23 $ 30 32 23 $ 20 23 24 $ 20 404 24 $ 20 40
Compra
Puede actualizarse el valor de más de una columna simultáneamente.
cod factura total cant1 23 $ 30 32 23 $ 20 23 24 $ 20 404 24 $ 40 null
Compra
05 – SQL 52
cod nombre q_compras fec_uc11 Fernando 12 12/4/0512 Germán 3 21/07/0513 Claudia 7 1/09/0514 Patricia 18 14/7/04
Cliente
Update: Ejercicio
Update CompraSet fec_uc = ‘03/08/07',
q_compras = q_compras + 1 Where cod = 13
q_compras: cantidad de compras que
hizo un cliente.
fec_uc: fecha de última compra
Supongamos que el cliente 13 (Claudia) realiza hoy, 3 de agosto de 2007,
una compra. Actualizar la tabla Cliente.
cod nombre q_compras fec_uc11 Fernando 12 12/4/0512 Germán 3 21/07/0513 Claudia 8 03/08/0714 Patricia 18 14/7/04
Cliente