Presentacio Sql 1

52
05 – SQL 1

description

Primera parte de una mini guia sobre consultas sql para PRINCIPIANTES

Transcript of Presentacio Sql 1

Page 1: Presentacio Sql 1

05 – SQL 1

Page 2: Presentacio 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.

Page 3: Presentacio Sql 1

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 1

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 1

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

Page 6: Presentacio Sql 1

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

Page 7: Presentacio Sql 1

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 1

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

Page 9: Presentacio Sql 1

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

Page 10: Presentacio Sql 1

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

Page 11: Presentacio Sql 1

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 1

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

Page 13: Presentacio Sql 1

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 1

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

Page 15: Presentacio Sql 1

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

Page 16: Presentacio Sql 1

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

Page 17: Presentacio Sql 1

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

Page 18: Presentacio Sql 1

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

Page 19: Presentacio Sql 1

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.

Page 20: Presentacio Sql 1

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”

Page 21: Presentacio Sql 1

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

Page 22: Presentacio Sql 1

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

Page 23: Presentacio Sql 1

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)

Page 24: Presentacio Sql 1

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

Page 25: Presentacio Sql 1

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

Page 26: Presentacio Sql 1

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 1

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 1

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

Page 29: Presentacio Sql 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

Page 30: Presentacio Sql 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 ...

Page 31: Presentacio Sql 1

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

Page 32: Presentacio Sql 1

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 1

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.

Page 34: Presentacio Sql 1

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

Page 35: Presentacio Sql 1

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

Page 36: Presentacio Sql 1

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

Page 37: Presentacio Sql 1

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 1

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

Page 39: Presentacio Sql 1

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

Page 40: Presentacio Sql 1

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.

Page 41: Presentacio Sql 1

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 1

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 1

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

Page 44: Presentacio Sql 1

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

Page 45: Presentacio Sql 1

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

Page 46: Presentacio Sql 1

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 1

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 1

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

Page 49: Presentacio Sql 1

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

Page 50: Presentacio Sql 1

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.

Page 51: Presentacio Sql 1

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

Page 52: Presentacio Sql 1

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