Durante la fase de diseo o en los comienzos de la fase de desarrollo se produce asiduamente la creacin y eliminacin de las BD debido a numerosos cambios en el diseo del dominio que finalmente va a ser utilizado. Por ello habra que buscar algo parecido a drop all tables, el cual permitiera la eliminacin de todas las tablas del esquema.
En el caso de Oracle un esquema de BD tiene que estar asociado a un usuario de BD, por lo que esto puede ser un poco duro de ejecutar. En algunos casos los desarrolladores no tienen permisos para la creacin o borrado de usuarios, y puede ser un poco molesto estar todos los das molestando al DBA para que nos elimine o cree el usuario.
Hoy en da para la creacin de las BD nos ayudamos de diferentes aplicaciones/frameworks que nos permiten la generacin de la BD a partir del diseo del dominio. Como ejemplo podemos poner el hibernate tools, el cual crea de forma automtica el esquema de BD a partir del dominio anotado o a partir de los hbm. Este mismo framework nos permite generar el cdigo SQL que crea/elimina las tablas de la BD.
Una alternativa a las soluciones anteriormente propuestas es la ejecucin de una sentencia SELECT que nos proporcione las sentencias que hemos de ejecutar para la eliminacin de las tablas relativas al usuario actual.
Para evitar tener que copiar esta sentencia en un fichero y copiarlo cada vez que queramos eliminar el esquema de BD, nos podemos ayudar del cliente que utilicemos para acceder a la BD. En mi caso suelo utilizar SQL SQUIRREL y este me permite asociar una abreviacin a un script, as que slo tengo que asociar la sentencia DROPALL a la consulta anteriormente indicada.
En este artculo, aprenders la sintaxis de cada comando en diferentes motores de bases de datos como MySQL, PostgreSQL, SQL Server y Oracle. Y entenders el debate DROP TABLE vs. DELETE vs. TRUNCATE TABLE.
Si quieres practicar tus conocimientos de SQL, te recomiendo nuestra plataforma de aprendizaje de SQL LearnSQL.es. LearnSQL.es ofrece ms de 50 cursos interactivos de SQL en varios niveles de competencia. Por ejemplo, prueba nuestro curso Ejercicio de SQL con ms de 600 ejercicios prcticos de SQL para practicar tus conocimientos de SQL.
DELETE es un comando DML (Lenguaje de Manipulacin de Datos). Este comando elimina registros de una tabla. Se utiliza slo para eliminar datos de una tabla, no para eliminar la tabla de la base de datos.
Si quieres eliminar todos los registros de una tabla determinada, utiliza DELETE FROM seguido del nombre de la tabla. Observa que no hay nombres de columnas en esta sintaxis; se estn eliminando todos los registros, no los datos de las columnas seleccionadas.
Si no quieres eliminar la estructura de la tabla, o slo quieres eliminar filas especficas, utiliza el comando DELETE. Puedes eliminar una, algunas o todas las filas de una tabla. DELETE devuelve el nmero de filas eliminadas de la tabla.
DELETE tambin mantiene el ID de autoincremento en la tabla. Si eliminas el ltimo registro de la tabla con ID=20 y luego aades un nuevo registro, este registro ser ID=21 (aunque el registro inmediatamente anterior sea ID=19).
DELETE pueden ser ejecutado por disparadores (triggers). Un disparador puede ser llamado antes, despus o en lugar de la operacin DELETE. Se puede ejecutar para cualquier cambio de fila o cuando se eliminan todas las filas. La eliminacin de filas en otra tabla tambin puede disparar DELETE.
TRUNCATE TABLE es similar a DELETE, pero esta operacin es un comando DDL (Lenguaje de Definicin de Datos). Tambin borra registros de una tabla sin eliminar la estructura de la misma, pero no utiliza la clusula WHERE. Esta es la sintaxis:
TRUNCATE es ms rpido que DELETE, ya que no explora cada registro antes de eliminarlo. TRUNCATE TABLE bloquea toda la tabla para eliminar datos de una tabla; por lo tanto, este comando tambin utiliza menos espacio de transaccin que DELETE.
A diferencia de DELETE, TRUNCATE no devuelve el nmero de filas eliminadas de la tabla. Tambin restablece el valor de autoincremento de la tabla al valor inicial (normalmente 1). Si se aade un registro despus de truncar la tabla, ser ID=1. Nota: En PostgreSQL, se puede elegir reiniciar o continuar el valor de autoincremento. Oracle utiliza una secuencia para incrementar los valores, la cual no es reiniciada por TRUNCATE.
Por supuesto, necesita permiso para usar TRUNCATE TABLE. En PostgreSQL, se necesita el privilegio TRUNCATE; en SQL Server, el permiso mnimo es ALTER table; en MySQL, se necesita el privilegio DROP. Por ltimo, Oracle requiere el privilegio de sistema DROP ANY TABLE para utilizar este comando.
DROP TABLE es otra operacin DDL (Lenguaje de Definicin de Datos), pero no se utiliza para eliminar simplemente los datos de una tabla, sino que elimina la estructura de la tabla de la base de datos, junto con cualquier dato almacenado en la tabla.
Todo lo que se necesita despus de DROP TABLE es el nombre de la tabla que se quiere eliminar. Por ejemplo, si quisieras eliminar toda la tabla product de la base de datos, deberas escribir:
En SQL Server, DROP TABLE requiere el permiso ALTER en el esquema al que pertenece la tabla; MySQL requiere el privilegio DROP; Oracle requiere el privilegio DROP ANY TABLE. En PostgreSQL, los usuarios pueden eliminar sus propias tablas.
Iptables es un firewall que tiene una funcin esencial en la seguridad de la red para la mayora de los sistemas Linux. Aunque muchos tutoriales de iptables ensean cmo crear reglas de firewall para proteger el servidor, este se centrar en un aspecto diferente de la administracin de firewall: cmo listar y eliminar reglas.
Nota: Cuando trabaje con firewalls, tenga precaucin de no bloquearse a s mismo de su propio servidor al bloquear el trfico SSH (puerto 22, de forma predeterminada). Si pierde acceso debido a la configuracin del firewall, es posible que deba conectarse a este mediante una consola fuera de banda para solucionar su problema de acceso.
Veamos primero cmo enumerar reglas. Hay dos formas diferentes de ver las reglas de iptables activas: en una tabla o como una lista de especificaciones de reglas. Ambos mtodos proporcionan aproximadamente la misma informacin en diferentes formatos.
Como se puede ver, el resultado se parece a los comandos que se utilizaron para crearlas, sin el comando iptables anterior. Esto tambin tendr un aspecto similar a los archivos de configuracin de reglas de iptables, si alguna vez se utiliz iptables-persistent o iptables save.
Si desea limitar el resultado a una cadena especfica (ENTRADA, SALIDA, TCP, etc.), puede especificar el nombre de la cadena directamente despus de la opcin -S. Por ejemplo, para mostrar todas las especificaciones de reglas en la cadena TCP, debe ejecutar este comando:
La primera lnea de resultado indica el nombre de la cadena (ENTRADA, en este caso), seguido por su directiva predeterminada (ANULAR). La siguiente lnea consiste en los encabezados de cada columna de la tabla y viene seguida de las reglas de la cadena. Veamos qu indica cada encabezado:
La ltima columna, que no est etiquetada, indica las opciones de una regla. Es decir, cualquier parte de la regla que no est indicada mediante las columnas anteriores. Puede ser cualquier cosa, desde puertos de origen y destino hasta el estado de conexin del paquete.
Cuando se listan reglas de iptables, tambin es posible mostrar el nmero de paquetes y el tamao total de estos en bytes, que coinciden con cada regla particular. Esto a menudo es til cuando se trata de tener una idea aproximada de qu reglas coinciden con los paquetes. Para hacerlo, utilice la opcin -L y -v juntos.
Si desea borrar, o dejar en cero, los contadores de paquetes y bytes para sus reglas, utilice la opcin -Z. Tambin se restablecen si se produce un reinicio. Esto es til cuando desea ver si el servidor est recibiendo trfico nuevo que coincida con las reglas existentes.
Para borrar los contadores de todas las reglas de una cadena especfica, utilice la opcin -Z y especifique la cadena. Por ejemplo, para borrar los contadores de la cadena ENTRADA, ejecute este comando:
Si desea borrar los contadores de una regla determinada, especifique el nombre de la cadena y el nmero de la regla. Por ejemplo, para dejar en cero los contadores de la primera regla en la cadena ENTRADA, ejecute esto:
Una de las formas de eliminar reglas de iptables es mediante la especificacin de reglas. Para hacerlo, puede ejecutar el comando iptables con la opcin -D seguida de la especificacin de reglas. Si desea eliminar reglas usando este mtodo, puede utilizar el resultado de la lista de reglas, iptables -S, para obtener ayuda.
La otra forma de eliminar reglas de iptables es mediante su nmero de lnea y cadena. Para determinar el nmero de lnea de una regla, liste las reglas en el formato de tabla y agregue la opcin --line-numbers:
Nota: Tenga cuidado de no bloquearse de su servidor mediante SSH, al vaciar una cadena con una directiva predeterminada de anular o denegar. Si lo hace, es posible que necesite conectarse a l a travs de la consola para solucionar su problema de acceso.
Primero, establezca las directivas predeterminadas para cada una de las cadenas incorporadas en ACEPTAR. El motivo principal para hacer esto es garantizar que no quede bloqueado del servidor mediante SSH:
Recuerde que cualquier cambio de iptables mediante el comando iptables es efmero y debe guardarse para que persista durante reinicios del servidor. Esto se trata en la seccin Reglas de almacenamiento del tutorial Reglas y comandos comunes de firewall.
Clusula que indica que si el esquema especificado no existe, el comando no debe realizar cambios y debe devolver un mensaje en el que se indique que el esquema no existe, en lugar de terminar con un error.
Clusula que indica que si se elimina un esquema externo, se elimina la base de datos externa asociada con el esquema externo, si existe una. Si no existe ninguna base de datos externa, el comando devuelve un mensaje que indica que no existe ninguna base de datos externa. Si se eliminan mltiples esquemas externos, se eliminan todas las bases de datos externas asociadas con los esquemas especificados.
795a8134c1