Juan David Sánchez
Juan David Sánchez
Juan David Sánchez
Juan David Sánchez
Luis Valencia
Pablo Morales Pérez
luis juarez
Germán Salina
Carlos Eduardo Gomez García
Marcos Guzmán
Jason Ordóñez
Carlos Eduardo Bracho Rosales
Irving Juárez
Mario Alexander Vargas Celis
kevin rua
jhernandez725
Jayner Quintero
Juan Osorio
Aldo Mauricio Vital Gutierrez
Alejandra Olalde
Guillermo Fco. Hueche Pichun
Gerardo Ferreyra
Luis Ernesto Domínguez Velásquez
Pedro Quiñones Paternina
César Cubarrubia
Leyendo el manual de MySQL, encontré la siguiente expresión que nos ayudaría a probar sin miedo a cargarnos nuestros datos. La expresión se llama TRANSACTION y nos permite realizar nuestras acciones y sólo aplicarlas si llamamos COMMIT o devolvernos si llamamos ROLLBACK.
Ejemplo:
-- Iniciamos una transacción START TRANSACTION; -- Oops! DELETE FROM `stations`; -- Empezamos a sudar SELECT * FROM `stations`; -- No nos preocupemos, le hacemos ROLLBACK y volvemos al estado inicial antes de comenzar la transacción. ROLLBACK; -- 🎉 SELECT * FROM `stations`;
Si estamos seguros que nuestros cambios están correctos, en lugar de hacer ROLLBACK hacemos COMMIT.
En pocas palabras, si vamos a hacer write-operations y no estamos 100% seguros de lo que haremos, mejor crear una transacción que nos servirá como un salvavidas 😄
Ese Truncate me hubiera servido en el curso de la universidad, crees que por culpa de los autoincreméntales teníamos que borrar la base y cargarla desde Workbench otra vez 😯😯😯
PUEDES HACER PARA CREAR UNA TABLA IGUAL A stations APLICANDO ESTE COMANDO:
CREATE TABLE stations_delete SELECT * FROM stations;
Son necesarias las comillas invertidas ??
Depende, en algunos gestores sí. En mi caso sí eran necesarias o me daba error de sintaxis, pero por buenas prácticas es mejor acostumbrarse a ponerlas :D
Para eliminar una vez identificado todos los id también podríamos utilizar el siguiente query:
DELETE FROM `stations` WHERE id IN (164,165,166)
Un profe EXCELENTE. Super explicado, cero dudas, bueno, tal vez un par pero espero despejarme un poco mas en clases posteriores.
Una manera de saber los IDs de más de un record en SQL es usando IN
SELECT name, id FROM stations WHERE name IN("Merced", "Lázaro de Guerrero")
. Tambien otro tip es que cuando estamos estamos haciendo un DELETE, hay que ponerle un LIMIT 1, ya que para ciertas condiciones, se pueden borrar más de uno.
DELETE FROM stations WHERE id = 164 LIMIT 1;
USE metro_cdmx;
DROP TABLE stations_delete
he trabajado con sql server en proyectos reales, y una buena practica para evitar el problema de borrar toda la bd, es sacar backup antes de hacer cualquier modificacion.
Para Workbench en las ultimas versiones existe el modo seguro que se puede activar o desactivar para evitar esos casos con DELETE:
delete from metro_mx.stations Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 0.000 sec
Una buena practica a tener en cuenta es realizar inicialmente el select de lo que deseamos borrar, esto filtrando los registros, hasta es bueno hacer un backup y luego modificamos la consulta adicionando la clausula Update
TRUNCATE TABLE para reiniciar los id's
Tengo entendido que OR evalúa dos o mas condiciones y solo aplica la sentencia a la primera evaluación que coincida y descarta el resto, o tal esto nos pueda producir un resultado diferente al esperado.
¿O es que en bases de datos los conectores-operadores lógicos funcionan de forma diferente?
¿Y que pasa con el conector-operador lógico AND, no seria este operador una mejor solución? Esto en referencia de este ejercicio:
USE `metro_cdmx`; DELETE FROM `station` WHERE `id` = 164 OR WHERE `id` = 165;
Hola! Estando en la terminal, dentro de mi db (MariaDB [subway_gdl]>) escribo SELECT id FROM stations WHERE name = "Benito Cárdenas"; y me sale lo siguiente:
Empty set (0.014 sec)
Alguien sabe la razón?
Encuentro peligroso que los Truncate reinicien las secuencias, si el ID es llave foranea en otra tabla pierdo las referencias. Estoy en lo correcto o no?
Les dejo este tema clásico sobre dl DELETE FROM https://youtu.be/i_cVJgIz_Cs 🤣
En el Core financiero de la empresa donde trabajo realizamos borrado lógico en las tablas transaccionales y Delete solo aplicamos a tablas temporales que requieren limpieza anualmente.
Genial e importante esta clase....
Otra manera de hacer el ejercicio que realizó el profe:
DELETE FROM `stations` WHERE id BETWEEN 164 AND 166; `````DELETE FROM `stations` WHERE id BETWEEN 164 AND 166;``