Presentacio sql ok

52
05 – SQL 1

Transcript of Presentacio sql ok

Page 1: Presentacio sql ok

05 – SQL 1

Page 2: Presentacio sql ok

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.

Page 3: Presentacio sql ok

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

Page 4: Presentacio sql ok

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

Page 5: Presentacio sql ok

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

Page 6: Presentacio sql ok

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

Page 7: Presentacio sql ok

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

Page 8: Presentacio sql ok

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

Page 9: Presentacio sql ok

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

Page 10: Presentacio sql ok

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

Page 11: Presentacio sql ok

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

Page 12: Presentacio sql ok

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

Page 13: Presentacio sql ok

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.

Page 14: Presentacio sql ok

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

Page 15: Presentacio sql ok

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

Page 16: Presentacio sql ok

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

Page 17: Presentacio sql ok

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

Page 18: Presentacio sql ok

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

Page 19: Presentacio sql ok

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.

Page 20: Presentacio sql ok

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”

Page 21: Presentacio sql ok

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

Page 22: Presentacio sql ok

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

Page 23: Presentacio sql ok

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)

Page 24: Presentacio sql ok

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

Page 25: Presentacio sql ok

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

Page 26: Presentacio sql ok

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

Page 27: Presentacio sql ok

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.

Page 28: Presentacio sql ok

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

Page 29: Presentacio sql ok

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

Page 30: Presentacio sql ok

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

Page 31: Presentacio sql ok

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

Page 32: Presentacio sql ok

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

Page 33: Presentacio sql ok

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.

Page 34: Presentacio sql ok

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

Page 35: Presentacio sql ok

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

Page 36: Presentacio sql ok

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

Page 37: Presentacio sql ok

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)

Page 38: Presentacio sql ok

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

Page 39: Presentacio sql ok

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

Page 40: Presentacio sql ok

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.

Page 41: Presentacio sql ok

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

Page 42: Presentacio sql ok

05 – SQL 42

Delete: sintaxis

Delete From <tabla> [ Where <condición> ]

Es la sentencia utilizada para eliminar filas de una tabla.

Page 43: Presentacio sql ok

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

Page 44: Presentacio sql ok

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

Page 45: Presentacio sql ok

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

Page 46: Presentacio sql ok

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.

Page 47: Presentacio sql ok

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.

Page 48: Presentacio sql ok

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

Page 49: Presentacio sql ok

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

Page 50: Presentacio sql ok

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.

Page 51: Presentacio sql ok

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

Page 52: Presentacio sql ok

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