No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de SQL y MySQL

Curso de SQL y MySQL

Alberto Alcocer

Alberto Alcocer

Comandos UPDATE Y DELETE

21/24
Recursos

Aportes 100

Preguntas 7

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Es mejor hacer pruebas antes de ejecutar instrucciones que puedan afectar la integridad de nuestra data
Iniciamos una transacci贸n

BEGIN

Ahora supongamos que elimino informaci贸n de una tabla y se me olvida el WHERE

DELETE FROM authors;

Rayos ya perd铆 todo, haa pero como estoy dentro de una transacci贸n debo confirmar las operaciones hechas a la base de datos, de lo contrario no se ejecutar谩n.

Si confirmo, entonces no hay vuelta atras. Se eliminar铆an todos los datos de dicha tabla

COMMIT

pero si hago un retroceso de dichos cambios. Entonces es como si nunca hubiese pasado nada.

ROLLBACK

Fiuuu, que alivio.

Les recomiendo esta canci贸n a todos los que haya visto la clase entera 馃槃
https://www.youtube.com/watch?v=i_cVJgIz_Cs

WHEN realizas un select de las personas que te han gustado durante toda tu vida:
9999 row in set(0.50 sec)
BUT repites el select pero a la inversa:
Empty set (0.00 sec)
馃槄馃槄

Como aporte.
ALTER es a las columnas lo que UPDATE es a las filas
DROP es a las columnas lo que DELETE es a las filas

Y la siguiente canci贸n para nunca olvidar poner el WHERE en el DELETE FROM.
https://www.youtube.com/watch?v=i_cVJgIz_Cs

Para eliminar todo el contenido de una tabla y dejarla vac铆a:

TRUNCATE nameTable;

Pero si quieres eliminar toda la tabla, estructura y datos:

DROP nameTable;

Resumen de la Clase:
Tips:

  • Los datos no deber铆an borrarse, siempre y cuando se respete el acuerdo con el usuario final.
  • SIEMPRE usar WHERE con comandos UPDATE.
  • Al hacer UPDATE o DELETE usar LIMIT para limitar el impacto del comando si algo saliese mal.

Comandos:

  • DELETE: elimina informaci贸n.
  • UPDATE: actualiza informaci贸n en una tabla.
  • TRUNCATE: elimina el contenido de una tabla por completo.

C贸digo:

-- Clase 19 UPDATE Y DELETE

-- Ejemplos de Delete y Update

DELETE FROM authors WHERE author_id = 161 LIMIT 1;

SELECT client_id, name FROM clients WHERE active <> 1;

UPDATE clients SET active = 0 WHERE client_id = 80 LIMIT 1;

UPDATE clients
SET 
    email = '[email protected]'
WHERE
    client_id = 7
LIMIT 1;

--Desactivar clientes con ID especifica y apellido lopez

UPDATE clients
SET 
    active = 0
WHERE
    client_id IN (1,6,8,27)
    OR name like '%Lopez%';

-- Buscar con ID y Lopez

SELECT client_id, name
FROM clients
WHERE
    client_id IN (1,6,8,27)
    OR name like '%Lopez%';```
  • Muy buen consejo colocar el limit en un Delete o update

Resumen de la clase:

-- DELETE: borra el registro.
-- Adicionalmente filtrar con WHERE por id y limitarlo.
DELETE FROM authors WHERE author_id = 161 LIMIT 1;

-- UPDATE: actualizar datos de una tupla existente.
-- Tambi茅n se debe filtrar con WHERE
UPDATE clients
SET active = 0
WHERE client_id = 80
LIMIT 1;

UPDATE clients
SET active = 0
WHERE client_id IN (1,6,8,27,90)
  OR NAME like '%Lopez%';


-- TRUNCATE: Borra todo el contenido de una tabla
TRUNCATE transactions;

select client_id, name from clients order by rand() limit 10; en est谩 sentencia RAND() permite ordenar de forma aleatoria, no recomendado hacerlo en producci贸n.
select client_id, name from clients where active <> 1; en donde <> significa que es diferente

Me encanta que @Alberto Alcocer siempre comparte las 鈥渂uenas pr谩cticas鈥 eso no se ve en todos los cursos.

Beco, tu historia del peri贸dico s铆 que motiva a no olvidar ell uso del WHERE. jaja

Cuando se realiza un UPDATE y un DELETE se recomienda hacerlo con un campo que identifica de manera puntual a esa registro utilizando el WHERE. Otra buena pr谩ctica que se le puede a帽adir a esto es utilizar un LIMIT 1 para que s贸lo actualice ese registro puntual

DELETE borra la tabla, TRUNCATE borra el contenido de la tabla, pero no la tabla.

El comando truncate [nombre de tabla] borra el contenido de la tabla, pero no borra la tabla.

Comprendido

SELECT count(*) FROM authors;

DELETE FROM authors WHERE author_id = 1 LIMIT 1;

SELECT name , client_id FROM clients WHERE active = '0';

SELECT name , client_id, active FROM clients ORDER BY RAND() LIMIT 10; 

SELECT * FROM clients WHERE client_id IN  (80, 7);

UPDATE clients SET active = '0' WHERE client_id = 80 LIMIT 1; 

UPDATE clients SET email = '[email protected]' WHERE client_id = 80 LIMIT 1; 

SELECT * FROM clients WHERE client_id IN  (1,6,8,27,90) OR name LIKE '%Lopez%';

UPDATE clients SET active = '0' WHERE client_id IN  (1,6,8,27,90) OR name LIKE '%Lopez%';

DELETE FROM clients WHERE active = '0' LIMIT 1;

TRUNCATE transactions; 

Las tablas que creadas en clase no se defini贸 ninguna FOREIGN KEY. No s贸n obligatorias siempre?

Yo creo que si has dise帽ado bien una aplicaci贸n y una base de datos no es necesario hacer DELETE o DROP (que ya de por si son peligrosos).Simplemente se a帽ade un campo mas que sea de Activo o inactivo como hizo el profe para poder filtrar los datos que no est谩n siendo usados.Y si esos datos ya no son usados por mucho tiempo se van para un data warehause para su posterior minado (ya que los datos muertos tambi茅n son valiosos)

BEGIN;
SELECT * FROM clients WHERE name LIKE '%david%';
UPDATE clients
SET active = 0
WHERE name LIKE '%david%'
LIMIT 1;
SELECT * FROM clients WHERE name LIKE '%david%';
ROLLBACK;
SELECT * FROM clients WHERE name LIKE '%david%';

DELETE en una bases de datos no deber铆a ocurrir siempre y cuando sea legal, 茅tico y vaya de acuerdo con los t茅rminos que se tienen con los clientes.

S铆 deseamos deshacernos de los datos pero no de la tabla en s铆 podemos utilizar el comando TRUNCATE TABLE. La sintaxis es: TRUNCATE table_name;

Triste y excelente ejemplo de la tragicomedia vivida por el profesor para nunca olvidar el WHERE tanto en una setencia UPDATE como DELETE, adem谩s de restringir la cantidad de tuplas afectadas con el uso de LIMIT

Minuto 10:32

Un shortcut muy 煤til para buscar en queries que ya se ejecutaron es: Ctrl + R y empezar a escribir la tabla o la condici贸n del query que se busca. Al presionar nuevamente Ctrl + R busca la siguiente coincidencia.

  • La funci贸n rand() s贸lo se recomienda para casos de prueba
    y no programaticamente*

  • TRUNCATE borra el contenido de la tabla pero deja la estructura*/

-la opci贸n Delete debe ser un recursos que no se debe usar, siempre y cuando se legal, viable y es lo que el usuario quiere.
-Es buena pr谩ctica colocar un limit 1 o limit鈥 dependiendo de cu谩ntos registros
se quiera borrar.
-Si va a borrar por datos por coincidencias LIKE es necesario averiguar cu谩ntos registros son esos y cu谩les id tienen para cuando se haga la sentencia ser bastante espec铆fico y luego colocamos nuevamente el LIMIT

  • caso Update: Es buena pr谩ctica obtener un campo 鈥渁ctive鈥 que es un booleano que nos ayuda
    a desactivar registro virtualmente

El truco de usar LIMIT 1 para hacer un UPDATE o DELETE me parece super 煤til, lo implementar茅 inmediatamente.

jajaja cuando un mexicano dice aguas, la cosa es enserio, aguas con el WHERE!

Me gusta cuando nos ense帽an las buenas pr谩cticas, no se me habr铆a ocurrido poner LIMIT 1 como un comando 鈥渄efensivo鈥 al evitar que se borren m谩s datos de lo esperado 馃槂

Aunque RAND() no es eficiente computacionalmente: se sugiere desde la aplicaci贸n cliente: 1- obtener la consulta al Servidor de los datos puntuales desde la BD evitando el ORDER BY 2- una vez recibido en un cursor del lado de nuestra aplicaci贸n, aplicar el ORDER BY RAND()

He prendido mucho con este profesor, es como鈥ds no saben yo si d茅jense ense帽ar鈥odo me ha quedado super claro

Delete from Authors; Tengo entendido que no se puede ejecutar esa instrucci贸n.

Genial

Me gusta los consejos que dejan, lo que m谩s hago es dejar el punto y coma en otra l铆nea para no da帽ar la base de datos

Alguien sabe c贸mo es el s铆mbolo <> en MariaDB?

UPDATE: Para actualizar un dato.

Truco con LIMIT en caso de error.

鈥淎guas siempre pongan el WHERE鈥. Me ha quedado claro de por vida. 馃槂

Buena an茅cdota la del peri贸dico :v

muy buen curso, quiero seguir aprendiendo

Buen curso

En mi trabajo ten铆a la pr谩ctica de hacer un select con el where correspondiente y comprobar la condici贸n que luego usar铆a con el update o delete.

Todos tienen sus historias con el where triste en su momento luego divertidas como todo.

Genial!! 馃槃

Cuando hay que hacer uso del DELETE siempre debe ir acompa帽ado de un WHERE y es buena practica colocarle un LIMIT de la cantidad de tuplas a borrar.

TRUNCATE TABLA: lo que hace es borrar el contenido de la tabla pero permanece la estructura de la misma.

Que buen consejo el utilizar LIMIT en las sentencias DELETE

Y no solo poner el where sino tambien poner la columna, una vez me da帽e una base de datos de produccion por colocar where y el valor pero sin decirle a que columna xD menos mal hice copia antes de.

Me gustan las recomendaciones sobre las buenas pr谩cticas, agrega mucho valor.

truncate: Borra el contenido de una tabla, pero no la estructura.

Al ejecutar el update, no por consola. Nos dar谩 un error.
Se debe cambiar el OR de esta consulta por 鈥楢ND鈥

original
select client_id, name, active from clients where client_id in(1, 6, 8, 27, 90) or name like 鈥%Lopez%鈥;

modificado
select client_id, name, active from clients where client_id in(1, 6, 8, 27, 90) and name like 鈥%Lopez%鈥;

ahora tambien me paso un error:

puse el where pero justo antes me olvide borrar 鈥;鈥 que estaban antes. Y se cambio toda la BD

Como Frontend developer me parece muy interesante todo este mundo de los datos, etc. Tal vez algun dia me muevo mas por aca, por ahora seguire usando ORM cuando me toque hacr back.

Excelente curso

Si hay que tener cuidado en ejecutar estos dos comandos en la Base de datos
TRUNCATE -> No puedes dar un rollback posterior a realizar el TRUNCATE a tabla, no se puede regresar la informaci贸n
DELETE-> Puedes hacer rollback posterior a realizar el DELETE a tabla siempre y cuando no hayas hecho COMMIT sino tampoco puedes regresar los cambios

Recomendacion: Antes de usar una sentencia UPDATE o DELETE usar START TRANSACTION y cuando estan seguros que el resultado fue correcto usar el COMMIT, de lo contrario ROLLBACK. Ejemplo:

SET AUTOCOMMIT = OFF;
START TRANSACTION;
<sentencia UPDATE o DELETE>
-- Si el resultado fue el esperado
COMMIT;
-- Si el resultado no es el esperado
ROLLBACK;
SET AUTOCOMMIT = ON;

El COMMIT guarda los cambios en la base de datos.
El ROLLBACK descarta los cambios realizados y los deja como estaban antes de la ejecucion del query.

El comando ROLLBACK puede ser usado para deshacer algo una transacci贸n en la base de datos, indiferentemente de si us茅 DELETE o TRUNCATE. SIEMPRE Y CUANDO EL DELETE O EL TRUNCATE EST脡N DENTRO DE UNA TRANSACCI脫N.

`-- Borrar
begin transaction
truncate table clients
select * from clients

鈥 Recuperar
ROLLBACK TRANSACTION
select * from Employee`

select * from authors order by rand() limit 10;
select count(*) from authors;
delete from authors where author_id = 5 limit 1;
select client_id, name from clients where active <> 1;
select client_id,name, active from clients order by rand() limit 10;
update clients set active = 0
where client_id = 80 limit 1
update clients
set
active = 0
where
client_id in (1,6,8,27,90)
or name like '%lopez%'
select client_id, name, active from clients
where client_id in (1,6,8,27,90) or name like 鈥%lopez%鈥
鈥搕runcate transactions

-- comandos DELETE y UPDATE son muy importantes y muy peligrosos ya que si hacemos algo mal
-- en el query podria tener serios problemas en los datos modificados o borrados.
-- es buena practica colocar al final del query LIMIT 1, ya que si cometemos un error
-- por lo menos solo afectara a un solo registro. Adem谩s siempre va acompa帽ado de un WHERE

-- Su estructura es la siguiente
DELETE FROM clients WHERE client_id = 1 LIMIT 1;
DELETE clients;
-- Estructura de UPDATE
UPDATE authors SET nationality = 'MEX' WHERE author_id = 1 LIMIT 1;

-- Estructura de TRUNCATE, sirve para reiniciar la tabla
TRUNCATE clients;```

dejo por qui mis notas del curso

CREATE TABLE IF NOT EXISTS books (
    book_id  INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    author_id INTEGER UNSIGNED ,
    title VARCHAR(100) NOT NULL ,
    `year` INTEGER UNSIGNED NOT NULL DEFAULT 1900,
    `laguage` VARCHAR(2) NOT NULL DEFAULT 'es' COMMENT 'ISO 639_1 Language',
    `cover_url` VARCHAR(500),
    price DOUBLE(6,2) NOT NULL DEFAULT 10.0,
    sellable TINYINT(1) DEFAULT 1,
    copies INTEGER NOT NULL DEFAULT 1,
    description TEXT
);

CREATE TABLE IF NOT EXISTS authors (
    author_ID INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(100) NOT NULL,
    nationality VARCHAR(3)
);

CREATE TABLE clients (
    client_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    `name` VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    birthdate DATETIME,
    gender ENUM('M', 'F', 'ND') NOT NULL,
    active TINYINT(1) NOT NULL DEFAULT 1,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
        ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE IF NOT EXISTS operations(
    operation_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    book_id INTEGER UNSIGNED,
    client_id INTEGER UNSIGNED,
    type ENUM('p', 'd', 'v') not null,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    finished TINYINT(1) NOT NULL DEFAULT 0
); 

INSERT INTO authors(author_id, name, nationality)
VALUES('', 'JUEAN RULFO', 'MEX')

INSERT INTO authors(name, nationality)
VALUES('Gabriel Garcia M谩rquez', 'COL')

#podemos utilizar el comando ON DUPLICATE KEY UPDATE para actulizar los datos que ya existen

#con el query de abajo revisamos varios  cindicionales
SELECT name, email, YEAR(NOW()) - YEAR(birthdate), gender FROM clients WHERE gender = 'F' AND name LIKE '%Lop%'

#aqui comenzamos a cruzar las tablas 
select count(*) from //alguna-tabla//

select * from authors where author_id > 0 and author_id <= 5;
select  book_id, author_id, title from books  where author_id between 1 and 5;

/*
select b.book_id, a.name, b.title
from books as b
join authors as a
    on a.author_id = b.author_id
where a.author_id between 1 and 5;
*/

/*
select c.name, b.title, a.name, t.type
from transactions as t
join books as b
    on t.book_id = b.book_id
join clients as c
    on t.client_id = c.client_id;
join authors as a
    on b.author_id = a.author_id
where c.gender = 'F'
    and t.type = 'sell'
*/

/*
select c.name, b.title, a.name, t.type
from transactions as t
join books as b
    on t.book_id = b.book_id
join clients as c
    on t.client_id = c.client_id;
join authors as a
    on b.author_id = a.author_id
where c.gender = 'F'
    and t.type IN ('sell', 'lend')
*/


#ejemplo de inner join con poca semantica
/*

select b.title, a.name 
from authors as a, books as b
where a.author_id = b.author_id
limit 10

*/

#este ejemplo nos muestra un inner join de facil lectura

/*

select b.title, a.name
from books as b
inner join authors as a
    on a.author_id = b.author_id
limit 10

*/

***         LEFT Join         ***

select a.author_id, a.name, a.nationality, b.title
from authors as a
join  books as b
    on b.author_id = a.author_id
where a.author_id between 1 and 5
order by a.author_id desc;

select a.author_id, a.name, a.nationality, COUNT(b.book_id) as "number of books"
from authors as a
join  books as b
    on b.author_id = a.author_id
where a.author_id between 1 and 5
GROUP BY a.author_id
order by a.author_id desc;

/*   ***        casos de negocios        ***   */

preguntas para el modelo negocio
1) 驴que nacionalidades hay?

SELECT DISTINCT nationality FROM authors ORDER BY nationality;

2) 驴cuantos escritores hay de cada nacionalidad?

SELECT nationality, COUNT(author_id) AS c_authors
FROM authors
WHERE nationality IS NOT NULL
    AND nationality NOT IN('RUS')
GROUP BY nationality
ORDER BY c_authors DESC, nationality ASC;

3) cual es el precio de la desviacion standard ("Precio de los libros")

SELECT nationality, 
COUNT(book_id) as libros, 
AVG(price) as promedio, 
STDDEV(price) as std
FROM books as b
JOIN authors as a 
    on a.author_id = b.author_id 
GROUP BY nationality
ORDER BY libros DESC;

4) cual es el preico maximo de un libro

SELECT a.nationality, MAX(price), MIN(price)
FROM books as b
JOIN authors AS a 
    ON a.author_id = b.author_id
GROUP BY nationality;

reporte final de prestamos

SELECT c.name, t.type, b.title, a.name, CONCAT(a.name, "(", a.nationality, ")") as author,
    TO_DAYS(NOW()) - TO_DAYS(t.created_at) as ago
FROM transactions AS t
LEFT JOIN clients AS c
    ON c.client_id = t.client_id
LEFT JOIN books AS b
    ON b.book_id = t.book_id
LEFT JOIN authors AS a
    on b.author_id = a.author_id;





/*
    ***     *   agregar transaciones   *     ***

INSERT INTO `transactions`(book_id, client_id, type, finished) 
VALUES (25, 10 , "sell", 1),
(20, 15 , "lend", 0),
(22, 11 , "lend", 0),
(23, 18 , "lend", 0),
(34, 27 , "sell", 1),
(40, 43 , "sell", 1),
(2, 5 , "sell", 1); 


*/
"Comandos Upadate y Delete"
DELETE FROM author_id = 161 LIMIT 1 
;

UPDATE tabla 
SET  
    [columna = valor, ...]
WHERE 
    [condiciones]
LIMIT 1;

UPDATE clients 
SET activate = 0 
WHERE client_id = 80 
LIMIT 1; 

UPDATE clients
SET  
    email = '[email protected]'
WHERE 
    client_id = 7 
    OR client_id = 9 
LIMIT 1
;

TRUNCATE transaction "elimina todo "```
DELETEfromauthors
WHERE author_id = 84
LIMIT1;```

Excelente la clase

IN()

excelentes clases

El limit, en DB2 es equivalente a FETCH FIRST # ROWS ONLY

excelente clase.

Genial el desarrollo.

Super la buena practica del LIMIT a la hora de hacer un update o delete

SELECT client_id, name, active FROM clients WHERE client_id IN (80, 65, 76, 1, 61, 7, 19, 97);

UPDATE clients
SET active = 0
WHERE client_id = 80
LIMIT 1;

Utilizo windows y este c贸digo no me corre igual, 驴alguien sabe por qu茅?

DELETE FROM table
WHERE (info, key2) IN (
SELECT info, key2
FROM table
WHERE info = 1
ORDER BY key2
FETCH FIRST ROW ONLY
);

Genial !

cual es la principal diferencia entre UPDATE y ALTER?

El profesor habla de backups, 驴Por qu茅 no los ense帽an a hacer en este curso?

muy buenas se puede hacer un VIEW con parametros de entrada?

驴Qu茅 le costaba al profesor explicar la sintaxis de esta forma en todo el curso? Muy desorganizada la estructura de este curso.

DELETE no creo que al menos en un sistema de producci贸n se borre algo.

Este curso se hace verdaderamente tedioso al tener que arreglar manualmente todos los archivos que dejan en la parte de recursos 鈥 Se pierde mucho tiempo y el hilo de la clase

Muy bueno, gracias!!!

Cuando usemos el comando DELETE debemos ser muy espec铆ficos con lo que queremos borrar.

UPDATE:

  • Correcciones
  • Actualizaci贸n informaci贸n.

卤---------------------------------------卤---------------------------------------------+
| Truncate | Delete |
卤---------------------------------------卤---------------------------------------------+
| Es posible hacer rollback | Es posible hacer rollback |
| | |
| | |
| Ejemplo: | Ejemplo: |
| BEGIN TRAN | BEGIN TRAN |
| TRUNCATE TABLE #Personas | DELETE FROM #Personas |
| SELECT * FROM #Personas | SELECT * FROM #Personas |
| ROLLBACK | ROLLBACK |
| SELECT * FROM #Personas | SELECT * FROM #Personas |
卤---------------------------------------卤---------------------------------------------+
| Truncate resetea el campo identity de | Delete no resetea el campo identity de la |
| la Tabla | Tabla |
卤---------------------------------------卤---------------------------------------------+
| Bloquea la tabla completa | Bloquea solo la fila a borrar |
卤---------------------------------------卤---------------------------------------------+
| Es un comando DDL | Es un comando DML |
| (Data Definition Language) |(Data Manipulation Language) |
卤---------------------------------------卤---------------------------------------------+
| No se puede usar WHERE | Se puede usar WHERE para filtrar las filas |
卤---------------------------------------卤---------------------------------------------+
| El trigger de la tabla no se ejecuta | El trigger de la tabla s铆 se ejecuta |
卤---------------------------------------卤---------------------------------------------+
| Sintaxis: | Sintaxis: |
| 1) TRUNCATE TABLE #Personas | 1) DELETE FROM #Personas |
| | 2) DELETE FROM #Personas WHERE |
| | Id IN (1,2,3) |
卤---------------------------------------卤----------------------------

Excelente clase, aprendi bastante

-- Eliminar un registro
DELETE FROM table_name WHERE condition;
-- Ejemplo Delete
DELETE FROM clients WHERE client_id = 4;

-- Actualizar un registro
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

-- Ejemplo de update
UPDATE clients SET active = 0 WHERE client_id = 10;

Qu茅 pasa si nos equivocamos? Hay alg煤n tipo crtl +z ? o sistema de versiones de la base de datos?

Aprend铆 la pr谩ctica del LIMIT para las sentencias UPDATE y DELETE

Que diferencia existe entre DELETE, TRUNCATE y DROP

Siempre recordar colocar el WHERE al usar DELETE

驴Un TRUNCATE es equivalente a un DELETE sin WHERE?

Querys bastante importante y utiles

siempre poner el WHERE

Dos casos para actualizar.

rand(): Para n煤meros aleatorios

no nos olvidemos de poner el WHERE en el DELETE FROM

DELETE FROM

Buena practica colocar LIMIT en el DELETE

Mucho cuidado con el WHERE a la hora de actualizar una tabla.

Seria bueno incluir en dos clases mas los TRIGGERS

Apuntes de clase:

----Uso del DELETE 
DELETE FROM  authors where author_id = 161 limit 1;

----Uso del UPDATE 
select client_id, name from clients where active <> 1;
select client_id, name, active from clients ORDER BY rand() LIMIT 10;
select client_id, name, active from clients WHERE  client_id in (80, 65, 76, 1, 61,19,97);
UPDATE clients 
SET active = 0
WHERE client_id = 80
LIMIT 1; 

SELECT  client_id, name, email, active 
FROM clients 
WHERE client_id IN (7, 80, 65, 76, 1, 61, 19, 97);

UPDATE clients 
SET email = '[email protected]'
WHERE client_id = 7 OR client_id = 9
LIMIT 1; 

SELECT client_id, name, active
FROM clients
WHERE 
   client_id IN (1,6,8,27,90)
   OR name LIKE '%lopez%';

UPDATE clients 
SET active = 0
WHERE 
    client_id IN (1,6,8,27,90)
    OR name LIKE '%lopez%';

---- Borrar toda una tabla
SELECT * FROM transactions;
TRUNCATE transactions;

Buenas, aca les dejo una breve explicaci贸n de las diferencias entre TRUNCATE y DELETE
https://grimpidev.wordpress.com/2009/03/21/diferencias-entre-truncate-table-y-delete-from/

Comandos UPDATE y DELETE + TRUNCATE

.
UPDATE = Actualiza
DELETE = Borra
TRUNCATE = Borra el contenido de la tabla manteniendo la estructura.
.

> IMPORTANTE

.
Hay que ser muy espec铆ficos al utilizar estos comandos ya que puedes borrar cosas no deseadas. Buena pr谩ctica es utilizar los ID de los elementos a manipular, adem谩s, se puede agregar el comando LIMIT con un n煤mero espec铆fico como segundo seguro.
.

--- Ejemplo DELETE
DELETE FROM authors
WHERE author_id = 161
LIMIT 1;

.
Comando b谩sico UPDATE

UPDATE tabla
SET
	[columna = valor1, valor2, . . .]
WHERE
	[condiciones]
LIMIT #;

.
Comando TRUNCATE
.
Borra el contenido de una tabla manteniendo la estructura

TRUNCATE transactions;