SQL
Introducción (I)
© 2001 Borja Sotomayor
SQL: Structured Query Language Lenguaje estándar para realizar ...
44 downloads
1413 Views
683KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
SQL
Introducción (I)
© 2001 Borja Sotomayor
SQL: Structured Query Language Lenguaje estándar para realizar consultas (query) a una base de datos. También permite realizar inserciones, actualizaciones, y eliminaciones. Incluye comandos para manipular la estructura de la base de datos.
1
Introducción (II)
Es un lenguaje no-procedural. En SQL no le decimos al SGBD cómo recuperar los datos, sino qué datos queremos recuperar. Cada SGBD suele añadir funcionalidades propias (no estándares) al SQL.
SELECT (I)
© 2001 Borja Sotomayor
El comando SELECT se utiliza para realizar consultas a la base de datos (para recuperar datos). Consiste en seleccionar columnas y filas de una o varias tablas. El resultado de una SELECT es un conjunto de filas (una tabla).
2
SELECT – FROM (I)
Selección de columnas de una tabla: SELECT columnas FROM tabla
:nombres de las columnas (separados por comas) que aparecerán en el resultado de la consulta. tabla :tabla de la cual queremos obtener las columnas. columnas
SELECT – FROM (II)
Ejemplo CLIENTES
DNI
Nombre
Apels
Apels
15077744
Fulanito
Pí
Pí
46878100
Miguel
Campoviejo
Campoviejo
12387912
Menganita
Pé
Pé
22198284
Alberto
López
López
22198285
Sara
López
López
SELECT Apels FROM CLIENTES
© 2001 Borja Sotomayor
3
SELECT – FROM (III)
Para evitar que en el resultado haya filas repetidas: SELECT DISTINCT columnas FROM tabla
SELECT – FROM (IV)
Ejemplo CLIENTES
DNI
Nombre
Apels
Apels
15077744
Fulanito
Pí
Pí
46878100
Miguel
Campoviejo
Campoviejo
12387912
Menganita
Pé
Pé
22198284
Alberto
López
López
22198285
Sara
López
SELECT DISTINCT Apels FROM CLIENTES
© 2001 Borja Sotomayor
4
SELECT – WHERE (I)
Selección de filas de una tabla Especificamos una condición que deben cumplir todas la filas que aparecerán en el resultado. SELECT * FROM tabla WHERE condición
* Æ
Todas las columnas
SELECT – WHERE (II)
Para las condiciones disponemos de los habituales operadores lógicos:
© 2001 Borja Sotomayor
= Æ Igualdad <> Æ Desigualdad >, >= Æ Mayor (o igual) que <, <= Æ Menor (o igual) que
Varias condiciones: OR y AND
5
SELECT – WHERE (III)
Ejemplo CLIENTES
DNI
Nombre
Apels
DNI
Nombre
Apels
15077744
Fulanito
Pí
22198284
Alberto
López
46878100
Miguel
Campoviejo
22198285
Sara
López
12387912
Menganita
Pé
22198284
Alberto
López
22198285
Sara
López
SELECT * FROM CLIENTE WHERE Apels=‘López’
SELECT – WHERE (IV)
Si queremos comprobar si un campo toma uno de varios posible valores, en lugar de hacer:
WHERE Apels=‘López’ OR Apel=‘Pérez’ OR ...
Podemos utilizar el operador IN: WHERE Apels IN (‘López’,‘Pérez’,...)
© 2001 Borja Sotomayor
6
SELECT – WHERE (V)
Si queremos comprobar si un valor se sitúa entre dos valores, en lugar de hacer:
WHERE Salario>=10000 AND Salario<=50000
Podemos utilizar el operador BETWEEN: WHERE Salario BETWEEN 10000 AND 50000
SELECT – WHERE (VI)
SQL también permite utilizar expresiones regulares muy básicas. % Æ 0 o más caracteres _ Æ 1 carácter En la consulta SQL, hay que utilizar el operador LIKE. WHERE Asignatura LIKE ‘Socio%’
© 2001 Borja Sotomayor
7
SELECT
En una sentencia SELECT podemos poner operaciones aritméticas tanto en los nombres de las columnas como en las condiciones. En los nombres de columnas: SELECT Nombre, Precio / 166.386 FROM ...
En las condiciones: ... WHERE (Precio * 1.1) > 10000
SELECT – AS
Es posible cambiar el nombre de las columnas, para que en el resultado de la consulta tengan un nombre distinto. Utilizamos el operador AS
SELECT Nombre AS Name ... SELECT Precio / 166.386 AS PrecioEuros ...
© 2001 Borja Sotomayor
8
SELECT – Agregación (I)
Es posible aplicar una función (función de agregación) a una columna entera. Por ejemplo, encontrar el valor máximo de una columna, la suma de sus valores, etc., etc.
SELECT funcion(columna) FROM tabla
SELECT – Agregación (II) PRODUCTOS Código
Nombre
Precio
Suma
12321
A
10000
15000
23456
B
20000
67757
C
30000
54556
D
40000
47885
X
50000
Σ
SELECT SUM(Precio) AS Suma FROM PRODUCTOS
© 2001 Borja Sotomayor
9
SELECT – Agregación (III)
Funciones de agregación:
SUM Æ Sumatorio MAX Æ Valor Máximo MIN Æ Valor Mínimo AVG Æ Promedio COUNT Æ Conteo
SELECT – Agregación (IV)
© 2001 Borja Sotomayor
Además de aplicar una función de agregación, podemos aplicar al mismo tiempo condiciones de selección de filas. ¡Ojo! Primero se realiza la selección de filas y luego se aplica la función.
10
SELECT – ORDER BY (I)
Podemos ordenar los resultados según el valor de una de las columnas (o de varias).
... ORDER BY columna [ASC | DESC]
Orden Ascendente (por defecto) Æ Orden Descendente
ASC Æ DESC
SELECT – ORDER BY (II) ... ORDER BY apellido1 DESC, apellido2 DESC
Ordenamos descendentemente por el primer apellido. Si hay dos o más primeros apellidos iguales, entonces ordenamos descendentemente por el segundo apellido.
© 2001 Borja Sotomayor
11
SELECT – Emparejamiento (I)
Con la sentencia SELECT podemos seleccionar datos de dos o más tablas. SELECT columnas FROM tablas
tablas:
nombre de las tablas separadas por comas.
SELECT – Emparejamiento (II)
© 2001 Borja Sotomayor
¡Ojo! La SELECT no tiene ni idea de cómo están relacionadas las tablas. Si le decimos que seleccione datos de dos tablas, combinará las dos tablas haciendo un producto cartesiano entre las dos.
12
FABRICANTES
PIEZAS Código
Nombre
Fabricante
Código
Nombre
1
Tornillo
35
35
Western Supplies
2
Tuerca
43
43
Grizzly Gears
3
Clavo
35
SELECT * FROM Piezas, Fabricantes
PIEZAS. Codigo
PIEZAS. Nombre
PIEZAS. Fabricante
FABRICANTES. Código
FABRICANTES. Nombre
1
Tornillo
35
35
Western Supplies
1
Tornillo
35
43
Grizzly Gears
2
Tuerca
43
35
Western Supplies
2
Tuerca
43
43
Grizzly Gears
3
Clavo
35
35
Western Supplies
3
Clavo
35
43
Grizzly Gears
SELECT – Emparejamiento (III)
© 2001 Borja Sotomayor
Si la primera tabla tiene n filas y la segunda tabla tiene m filas, el resultado tiene n x m filas: por cada fila de la primera tabla se incluyen todas las filas de la segunda tabla. Esto, en principio, no nos sirve para nada.
13
SELECT – Emparejamiento (IV)
Si existe una relación de 1 a N entre las tablas, lo que nos interesa es que, por cada fila de la tabla del lado N (“PIEZAS”), aparezca la fila relacionada en la tabla del lado 1 (“FABRICANTES”)
SELECT – Emparejamiento (V) PIEZAS. Codigo
PIEZAS. Nombre
PIEZAS. Fabricante
FABRICANTES. Código
FABRICANTES. Nombre
1
Tornillo
35
35
Western Supplies
1
Tornillo
35
43
Grizzly Gears
2
Tuerca
43
35
Western Supplies
2
Tuerca
43
43
Grizzly Gears
3
Clavo
35
35
Western Supplies
3
Clavo
35
43
Grizzly Gears
Queremos que en resultado aparezcan solo las filas sombreadas ¿Cómo podemos hacer esto?
© 2001 Borja Sotomayor
14
SELECT – Emparejamiento (VI) SELECT * FROM Piezas, Fabricantes WHERE PIEZAS.Fabricante = FABRICANTES.Codigo A esto se le llama la condición de emparejamiento de tablas Para hacer un emparejamiento de tablas no es necesario que haya una relación de 1 a N entre ellas. Sin embargo, el emparejamiento de tablas suele hacerse cuando queremos juntar dos o más tablas relacionadas.
SELECT – Emparejamiento (VII)
© 2001 Borja Sotomayor
Al hacer un emparejamiento de tablas, puede ocurrir que no queremos todas las columnas (SELECT *) sino solo unas cuantas de cada tabla. ¿Qué ocurre si en las dos tablas hay columnas que tienen el mismo nombre? Ejemplo: ¿Si sólo queremos el nombre de las piezas junto con el nombre de su fabricante? En ambas tablas la columna se llama “Nombre”.
15
FABRICANTES
PIEZAS Código
Nombre
Fabricante
Código
Nombre
1
Tornillo
35
35
Western Supplies
2
Tuerca
43
43
Grizzly Gears
3
Clavo
35
SELECT PIEZAS.Nombre, FABRICANTES.Nombre FROM PIEZAS, FABRICANTES WHERE PIEZAS.Fabricante = FABRICANTES.Codigo PIEZAS. Nombre
FABRICANTES. Nombre
Tornillo
Western Supplies
Tuerca
Grizzly Gears
Clavo
Western Supplies
SELECT – Prefijos y Etiquetas (I)
© 2001 Borja Sotomayor
Solución: Utilizamos prefijos. Antes del nombre de la columna ponemos el nombre de la tabla y un punto. Esto puede resultar un poco engorroso. Hay una manera de abreviar el nombre de las tablas para no repetirlos constantemente: etiquetas
16
FABRICANTES
PIEZAS Código
Nombre
Fabricante
Código
Nombre
1
Tornillo
35
35
Western Supplies
2
Tuerca
43
43
Grizzly Gears
3
Clavo
35
SELECT P.Nombre, F.Nombre FROM PIEZAS P, FABRICANTES F WHERE P.Fabricante = F.Codigo PIEZAS. Nombre
FABRICANTES. Nombre
Tornillo
Western Supplies
Tuerca
Grizzly Gears
Clavo
Western Supplies
SELECT – Prefijos y Etiquetas (II)
© 2001 Borja Sotomayor
Etiquetas: En el FROM, después del nombre completo de la tabla, ponemos un nombre abreviado. Si hay pocas tablas, suele utilizarse la primera letra del nombre.
17
SELECT – INNER JOIN (I)
Existe otra manera de realizar los emparejamientos. En lugar de utilizar una condición de emparejamiento podemos utilizar una INNER JOIN. SELECT columnas FROM tabla1 INNER JOIN tabla2 ON condicion_emparejamiento
SELECT – INNER JOIN (II) SELECT * FROM Piezas, Fabricantes WHERE PIEZAS.Fabricante = FABRICANTES.Codigo Equivalentes SELECT * FROM Piezas INNER JOIN Fabricantes ON PIEZAS.Fabricante = FABRICANTES.Codigo
© 2001 Borja Sotomayor
18
SELECT – OUTER JOIN (I) Supongamos que tenemos lo siguiente:
FABRICANTES
PIEZAS Código
Nombre
Fabricante
Código
Nombre
1
Tornillo
35
35
Western Supplies
2
Tuerca
43
Grizzly Gears
3
Clavo
35
SELECT – OUTER JOIN (II)
Si juntamos las dos tablas de la siguiente manera: SELECT * FROM Piezas, Fabricantes WHERE PIEZAS.Fabricante = FABRICANTES.Codigo
El resultado será: PIEZAS. Codigo
PIEZAS. Nombre
PIEZAS. Fabricante
FABRICANTES. Código
FABRICANTES. Nombre
1
Tornillo
35
35
Western Supplies
3
Clavo
35
35
Western Supplies
¿Dónde está la tuerca?
© 2001 Borja Sotomayor
19
SELECT – OUTER JOIN (III)
El registro de la tuerca no aparece porque no cumple la condición de emparejamiento (Fabricante es NULL). ¿Qué hacemos si queremos que aparezcan todos los registros de una tabla, a pesar de que no cumplan la condición de emparejamiento? Æ OUTER JOIN
SELECT – OUTER JOIN (IV) SELECT columnas FROM tabla1 LEFT OUTER JOIN tabla2 ON condicion_emparejamiento SELECT columnas FROM tabla1 RIGHT OUTER JOIN tabla2 ON condicion_emparejamiento
© 2001 Borja Sotomayor
20
SELECT – OUTER JOIN (V)
Si realizamos la siguiente consulta:
SELECT * FROM Piezas LEFT OUTER JOIN Fabricantes ON PIEZAS.Fabricante = FABRICANTES.Codigo
El resultado será: PIEZAS. Codigo
PIEZAS. Nombre
PIEZAS. Fabricante
FABRICANTES. Código
FABRICANTES. Nombre
1
Tornillo
35
35
Western Supplies
2
Tuerca
3
Clavo
35
35
Western Supplies
SELECT – OUTER JOIN (VI)
La consulta coge todas las filas de la tabla ‘de la izquierda’ (Piezas) y las junta con la otra tabla. Por cada fila de la tabla ‘izquierda’:
© 2001 Borja Sotomayor
Si la fila cumple la condición de emparejamiento, las dos filas se juntan como si fuese una INNER JOIN. Si la fila no cumple la condición de emparejamiento, se ponen los datos de la fila correspondiente a la tabla ‘de la izquierda’ y el resto de los datos se dejan a NULL.
21
SELECT – OUTER JOIN (VII)
La RIGHT OUTER JOIN es igual, pero con la tabla ‘de la derecha’. También existe una FULL OUTER JOIN, que coge todas las filas de ambas tablas. Pueden abreviarse:
LEFT OUTER JOIN Æ LEFT JOIN RIGHT OUTER JOIN Æ RIGHT JOIN FULL OUTER JOIN Æ FULL JOIN
SELECT – Agrupamiento (I)
© 2001 Borja Sotomayor
Agrupación: En SQL es posible agrupar las filas según el valor de una columna. Ej.: Agrupar por código de fabricante. Código
Nombre
Precio
Fabricante
1
Tornillo
10
35
2
Tuerca
5
35
3
Bisagra
40
35
4
Gancho
15
47
5
Chincheta 10
47
6
Clavo
5
89
Grupo (35)
Grupo (47) Grupo (89)
22
SELECT – Agrupamiento (II)
¿Por qué nos puede interesar hacer agrupamiento?
Para aplicar funciones de agregación a las columnas que no están siendo agrupadas. Para imponer una condición a nivel de grupo no a nivel de fila.
SELECT – Agrupamiento (III)
Aplicar funciones de agregación:
© 2001 Borja Sotomayor
Podemos agrupar por código de fabricante, y luego aplicar una función de agregación a el precio. La función se aplica a los valores de la columna en el grupo no en todas las filas.
23
SELECT Precio, Fabricante FROM PIEZAS Precio
Fabricante
10
35
10
47
40
35
15
Agrupamos por código de fabricante
Precio
Fabricante
47
10
35
5
35
5
35
5
89
40
35
15
47
10
47
5
89
Precio
Fabricante
18.333
35
12.5
47
5
89
Aplicamos una función de agregación (promedio) al precio.
SELECT – Agrupamiento (IV)
¿Cómo se hace esto en SQL? SELECT funcion(columna1), columna2 FROM tabla GROUP BY columna2 SELECT AVG(Precio), Fabricante FROM PIEZAS GROUP BY Fabricante
© 2001 Borja Sotomayor
¡Ojo! No puede quedar ninguna columna sin agrupar o sin agregar.
24
SELECT – Agrupamiento (V)
Imponer una condición a nivel de grupo:
Obtener los códigos de los fabricantes que ofrezcan productos cuyo precio medio sea superior a 10 pts.
SELECT Precio, Fabricante FROM PIEZAS Precio
Fabricante
10
35
5
35
40
35
15
Agrupamos por Codigo de fabricante
Precio
Fabricante
47
10
35
10
47
5
35
5
89
40
35
15
47
10
47
5
89
Precio
Fabricante
18.333
35
12.5
47
5
89
© 2001 Borja Sotomayor
Aplicamos una función de agregación (promedio) al precio.
25
Condición de grupo: El precio medio debe ser mayor de 10 pts.
Precio
Fabricante
18.333
35
12.5
47
5
89
SELECT AVG(Precio), Fabricante FROM PIEZAS GROUP BY Fabricante HAVING AVG(Precio) > 10
SELECT – Operaciones (I)
¿En que orden se realizan las operaciones que hemos descrito?
© 2001 Borja Sotomayor
1º- FROM: Accedemos a las tablas 2º- WHERE: Se aplican las condiciones de filas (eliminamos las filas que no cumplen las condiciones) 3º- GROUP BY: Agrupa las filas 4º- HAVING: Se aplican las condiciones de grupos (eliminamos los grupos que no cumplen las condiciones)
26
SELECT – Operaciones (II)
5º- SELECT: Se incluyen en el resultado únicamente las columnas (o valores calculados, o funciones agregadas) que se especifican aquí. 6º- ORDER BY: Ordena la tabla atendiendo a los criterios especificados.
SELECT – Subconsultas (I)
En el WHERE del SELECT (selección de filas) en lugar de comparar el valor de una columna con otro valor, podemos compararlo con el resultado de otra consulta (una subconsulta – subquery) ¿Para que nos sirve esto? Por ejemplo: ¿Cómo podemos encontrar los nombres de los artículos más baratos? SELECT Nombre FROM PIEZAS WHERE ???
© 2001 Borja Sotomayor
27
SELECT – Subconsultas (II)
Primero tendremos que encontrar el precio minimo. Luego tendremos que encontrar los productos cuyo precio coincida con ese precio mínimo. SELECT Nombre FROM PIEZAS WHERE Precio = PrecioMinimo ???
PIEZAS Código
Nombre
Precio
1
Tornillo
10
2
Tuerca
20
3
Bisagra
40
3
Clavo
10
10
SELECT MIN(Precio) FROM PIEZAS SELECT Nombre FROM PIEZAS WHERE Precio = PrecioMinimo SELECT Nombre FROM PIEZAS WHERE Precio = ( SELECT MIN(Precio) FROM PIEZAS )
© 2001 Borja Sotomayor
28
SELECT – Subconsultas (III)
Con subconsultas también es posible utilizar el operador IN. WHERE Precio IN ( subconsulta )
La consulta comprueba si Precio coincide con uno de varios posibles valores (en vez de escribirlos nosotros, los que devuelve la subconsulta). Nos permite simplificar consultas que requieran un emparejamiento de tablas.
PIEZAS
FABRICANTES
Código
Nombre
Fabricante
Código
Nombre
Lugar
1
Tornillo
35
35
Western Supplies
Bilbao
2
Tuerca
43
43
Grizzly Gears
Madrid
3
Bisagra
67
67
BilboTech
Bilbao
4
Clavo
35
Para encontrar los nombres de las piezas que podemos encontrar en Bilbao tendríamos que hacer la siguiente consulta: SELECT P.Nombre FROM PIEZAS P, FABRICANTES F WHERE P.Fabricante = F.Codigo AND F.Lugar = ‘Bilbao’
© 2001 Borja Sotomayor
29
SELECT – Subconsultas (IV)
Podemos plantear la consulta de otra manera. En vez de hacer un emparejamiento podemos:
Primero, encontrar los códigos de fabricantes situados en Bilbao. Luego, encontrar los nombres de las piezas que tienen como código de fabricante cualquiera de los códigos que hemos encontrado en el paso anterior.
FABRICANTES Código
Nombre
Lugar
35
Western Supplies
Bilbao
Código
43
Grizzly Gears
Madrid
35
67
BilboTech
Bilbao
67
SELECT Código FROM Fabricantes WHERE Lugar = ‘Bilbao’ PIEZAS Código
Nombre
Fabricante
1
Tornillo
35
2
Tuerca
43
3
Bisagra
67
4
Clavo
35
SELECT Nombre FROM Piezas WHERE Fabricante IN (
© 2001 Borja Sotomayor
)
30
SELECT – Subconsultas (V) SELECT Nombre FROM Piezas WHERE Fabricante IN (SELECT Código FROM Fabricantes WHERE Lugar = ‘Bilbao’) La consulta suele ser menos engorrosa (nos evitamos las condiciones de emparejamiento)
SELECT – Subconsultas (VI)
Con subconsultas también podemos utilizar:
Operador ANY WHERE campo op ANY ( subconsulta ) op Æ Operador lógico (=, >, <, etc.) ¡Ojo! Æ IN equivale a = ANY
Operador EXISTS WHERE EXISTS ( subconsulta )
© 2001 Borja Sotomayor
31
SELECT – Subconsultas (VII)
¡Ojo!
Utilizando campo op ( subconsulta ) subconsulta tiene que devolver un único valor Utilizando campo IN ( subconsulta ) y campo op ANY ( subconsulta ) subconsulta puede devolver varios valores
pero solo una columna (un campo)
op Æ Operador lógico (=, >, <, etc.)
SELECT – Subconsultas (VIII)
© 2001 Borja Sotomayor
Utilizando EXISTS ( subconsulta ) no importa cuantas columnas/filas pueda devolver la consulta, porque en lo que se va a fijar es en si la consulta es vacía o no (si devuelve o no algo)
32
INSERT (I)
La sentencia INSERT nos permite insertar nuevos datos en la base de datos. INSERT INTO tabla(col1, col2, ...) VALUES (valor1, valor2, ...)
INSERT (II) CLIENTES DNI
Nombre
Apels
15077744
Fulanito
Pí
46878100
Miguel
Campoviejo
12387912
Menganita
Pé
22198284
Alberto
López
22198285
Sara
López
54823158
Pedro
Pérez
INSERT INTO CLIENTES VALUES (54823158, ‘Pedro’, ‘Pérez’)
© 2001 Borja Sotomayor
33
INSERT (III)
Si vamos a introducir un valor en todas las columnas de la tabla, no es necesario especificar en qué columnas vamos a introducir datos.
INSERT (IV) PIEZAS Código
Nombre
Precio
Fabricante
1
Tornillo
10
35
2
Tuerca
5
35
3
Bisagra
40
35
4
Gancho
15
47
5
Chincheta 10
47
6
Clavo
5
89
7
Grapas
200
35
INSERT INTO PIEZAS(Nombre, Precio, Fabricante) VALUES (‘Grapas’, 200, 35)
© 2001 Borja Sotomayor
34
INSERT (V)
Si insertamos una nueva fila, y no especificamos valores para todas las columnas, se introducirán valores por defecto y (en los campos autonuméricos) el siguiente numero en secuencia.
UPDATE (I)
La sentencia UPDATE nos permite actualizar datos ya existentes.
UPDATE tabla SET campo1=valor1, campo2=valor2, ... WHERE condicion
© 2001 Borja Sotomayor
35
UPDATE (II) CLIENTES
CLIENTES
DNI
Nombre
Apels
DNI
Nombre
Apels
15077744
Fulanito
Pí
15077744
Fulanito
Pí
46878100
Miguel
Campoviejo
46878100
Mike
Oldfield
12387912
Menganita
Pé
12387912
Menganita
Pé
22198284
Alberto
López
22198284
Alberto
López
22198285
Sara
López
22198285
Sara
López
UPDATE CLIENTES SET Nombre=‘Mike’, Apels=‘Oldfield’ WHERE DNI = 46878100
UPDATE (III) PIEZAS
PIEZAS
Código
Nombre
Precio
Código
Nombre
Precio
1
Tornillo
100
1
Tornillo
90
2
Tuerca
50
2
Tuerca
45
3
Bisagra
100
3
Bisagra
90
4
Clavo
200
4
Clavo
180
UPDATE PIEZAS SET Precio = Precio * 0.9
© 2001 Borja Sotomayor
36
DELETE (I)
La sentencia DELETE nos permite eliminar filas.
DELETE FROM tabla WHERE condicion
DELETE (II) CLIENTES
CLIENTES
DNI
Nombre
Apels
DNI
Nombre
Apels
15077744
Fulanito
Pí
15077744
Fulanito
Pí
46878100
Miguel
Campoviejo
12387912
Menganita
Pé
12387912
Menganita
Pé
22198284
Alberto
López
22198284
Alberto
López
22198285
Sara
López
22198285
Sara
López
DELETE FROM CLIENTES WHERE DNI = 46878100
© 2001 Borja Sotomayor
37
DELETE (III)
¡Ojo! La siguiente sentencia: DELETE FROM tabla
(sin WHERE) borra todas las filas de la tabla.
© 2001 Borja Sotomayor
38