Presentacio Sql 1

Post on 31-May-2015

3.501 views 2 download

description

Primera parte de una mini guia sobre consultas sql para PRINCIPIANTES

Transcript of Presentacio Sql 1

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 precio

11 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 precio

11 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 cant

71 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

factura fecha

71 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 codCiudad

30.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 precio

11 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 cant

71 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'

Legajo 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'

Legajo 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 precio

11 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 precio

11 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 precio

11 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 precio

11 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

Legajo nombre esJefe

11 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

Legajo nombre esJefe

11 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'

factura fecha

71 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'

factura fecha

71 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 nombre

71.45 Matemática I71.46 Matemática II78.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

Legajo 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

Legajo 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 venta$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

Legajo 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)

Legajo nombre fec_nac

11 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.

Legajo nombre fec_nac

11 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.

Legajo nombre fec_nac

11 Germán 19/02/198512 Fernando 23/07/198613 Alvaro 29/02/1984

Empleado

Legajo nombre fec_nac

11 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.

Legajo nombre fec_nac

11 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')

Legajo nombre fec_nac

11 Germán 19/02/198512 Fernando null13 Alvaro 29/02/1984

Empleado

Legajo nombre fec_nac

11 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.

Legajo nombre fec_nac

11 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.

Legajo nombre fec_nac

11 Germán 19/02/198513 Alvaro 29/02/1984

Empleado

Legajo nombre fec_nac

11 Germán 19/02/1985null 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)

Legajo nombre fec_nac

11 Germán 19/02/198513 Alvaro 29/02/1984

Empleado

Legajo nombre fec_nacEmpleado

05 – SQL 44

Delete: sintaxis

Delete From Empleado

Legajo nombre fec_nac

11 Germán 19/02/198513 Alvaro 29/02/1984

Empleado

Legajo 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

Legajo nombre fec_nac

11 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

Legajo nombre fec_nac

13 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 cant

1 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 cant

1 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 cant

1 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 cant

1 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