Taller > PHP > Base de Datos MySQL
Eliminar Base de Datos y Tabla MySQL con PHP
En MySQL, eliminar una base de datos o una tabla es una operación irreversible que elimina permanentemente todos los datos que contienen.
Esta operación es útil cuando una base de datos o una tabla ya no es necesaria, o cuando se debe hacer limpieza para liberar espacio en el servidor.
Sin embargo, es crucial realizar una copia de seguridad de tus datos antes de proceder, ya que cualquier error puede llevar a la pérdida permanente de información importante.
Advertencia Importante
¡Cuidado! Eliminar una base de datos o una tabla es una acción irreversible. Una vez eliminada, toda la información contenida se pierde para siempre. Asegúrate de realizar copias de seguridad y estar completamente seguro antes de ejecutar estas operaciones.
Eliminar una Base de Datos con PHP
Cuando ya no necesitas una base de datos en tu servidor MySQL, puedes eliminarla utilizando la consulta SQL DROP DATABASE. A continuación, veremos cómo hacerlo utilizando las extensiones MySQLi y PDO, dos de las formas recomendadas para interactuar con bases de datos desde PHP.
En cada uno de estos ejemplos, también incluimos un paso opcional para verificar si la base de datos existe antes de intentar eliminarla, lo cual es una buena práctica para evitar errores innecesarios.
Usando MySQLi Orientado a Objetos
Este ejemplo muestra cómo eliminar una base de datos utilizando la extensión MySQLi en modo orientado a objetos. Antes de proceder con la eliminación, verificamos si la base de datos existe para evitar posibles errores.
<?php
$servidor = "localhost";
$usuario = "usuario";
$contraseña = "contraseña";
// Crear conexión
$conn = new mysqli($servidor, $usuario, $contraseña);
// Verificar conexión
if ($conn->connect_error) {
die("Error en la conexión: " . $conn->connect_error);
}
// Verificar si la base de datos existe
$sql_check = "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'mi_base_datos'";
$resultado = $conn->query($sql_check);
if ($resultado->num_rows > 0) {
// Eliminar la base de datos
$sql = "DROP DATABASE mi_base_datos";
if ($conn->query($sql) === TRUE) {
echo "Base de datos eliminada exitosamente";
} else {
echo "Error al eliminar la base de datos: " . $conn->error;
}
} else {
echo "La base de datos no existe.";
}
// Cerrar la conexión
$conn->close();
?>
Usando MySQLi Procedural
Aquí usamos MySQLi en su modo procedural para eliminar la base de datos. Al igual que en el ejemplo anterior, primero verificamos si la base de datos existe antes de eliminarla.
<?php
$servidor = "localhost";
$usuario = "usuario";
$contraseña = "contraseña";
// Crear conexión
$conn = mysqli_connect($servidor, $usuario, $contraseña);
// Verificar conexión
if (!$conn) {
die("Error en la conexión: " . mysqli_connect_error());
}
// Verificar si la base de datos existe
$sql_check = "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'mi_base_datos'";
$resultado = mysqli_query($conn, $sql_check);
if (mysqli_num_rows($resultado) > 0) {
// Eliminar la base de datos
$sql = "DROP DATABASE mi_base_datos";
if (mysqli_query($conn, $sql)) {
echo "Base de datos eliminada exitosamente";
} else {
echo "Error al eliminar la base de datos: " . mysqli_error($conn);
}
} else {
echo "La base de datos no existe.";
}
// Cerrar la conexión
mysqli_close($conn);
?>
Usando PDO
Utilizando PDO, también podemos eliminar una base de datos de manera similar. En este ejemplo, también verificamos si la base de datos existe antes de eliminarla.
<?php
$servidor = "localhost";
$usuario = "usuario";
$contraseña = "contraseña";
try {
// Crear conexión PDO
$conn = new PDO("mysql:host=$servidor", $usuario, $contraseña);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Verificar si la base de datos existe
$sql_check = "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'mi_base_datos_pdo'";
$resultado = $conn->query($sql_check);
if ($resultado->rowCount() > 0) {
// Eliminar la base de datos
$sql = "DROP DATABASE mi_base_datos_pdo";
$conn->exec($sql);
echo "Base de datos eliminada exitosamente";
} else {
echo "La base de datos no existe.";
}
} catch(PDOException $e) {
echo "Error al eliminar la base de datos: " . $e->getMessage();
}
// Cerrar la conexión
$conn = null;
?>
Eliminar una Tabla con PHP
Cuando solo deseas eliminar una tabla de tu base de datos, el proceso es similar al de eliminar una base de datos. Utilizas la consulta SQL DROP TABLE para borrar la tabla y su contenido permanentemente.
A continuación, se muestran ejemplos utilizando MySQLi y PDO para eliminar una tabla llamada empleados.
Usando MySQLi Orientado a Objetos
Este ejemplo muestra cómo eliminar una tabla utilizando la extensión MySQLi en modo orientado a objetos. Primero, se verifica si la tabla existe antes de proceder a eliminarla para evitar errores.
<?php
$servidor = "localhost";
$usuario = "usuario";
$contraseña = "contraseña";
$base_datos = "mi_base_datos";
// Crear conexión
$conn = new mysqli($servidor, $usuario, $contraseña, $base_datos);
// Verificar conexión
if ($conn->connect_error) {
die("Error en la conexión: " . $conn->connect_error);
}
// Verificar si la tabla existe
$sql_check = "SHOW TABLES LIKE 'empleados'";
$resultado = $conn->query($sql_check);
if ($resultado->num_rows > 0) {
// Eliminar la tabla
$sql = "DROP TABLE empleados";
if ($conn->query($sql) === TRUE) {
echo "Tabla eliminada exitosamente";
} else {
echo "Error al eliminar la tabla: " . $conn->error;
}
} else {
echo "La tabla no existe.";
}
// Cerrar la conexión
$conn->close();
?>
Usando MySQLi Procedural
Este ejemplo utiliza la extensión MySQLi en modo procedural para eliminar la tabla empleados. Al igual que en el ejemplo anterior, primero verificamos si la tabla existe.
<i><?php
$servidor = "localhost";
$usuario = "usuario";
$contraseña = "contraseña";
$base_datos = "mi_base_datos";
// Crear conexión
$conn = mysqli_connect($servidor, $usuario, $contraseña, $base_datos);
// Verificar conexión
if (!$conn) {
die("Error en la conexión: " . mysqli_connect_error());
}
// Verificar si la tabla existe
$sql_check = "SHOW TABLES LIKE 'empleados'";
$resultado = mysqli_query($conn, $sql_check);
if (mysqli_num_rows($resultado) > 0) {
// Eliminar la tabla
$sql = "DROP TABLE empleados";
if (mysqli_query($conn, $sql)) {
echo "Tabla eliminada exitosamente";
} else {
echo "Error al eliminar la tabla: " . mysqli_error($conn);
}
} else {
echo "La tabla no existe.";
}
// Cerrar la conexión
mysqli_close($conn);
?>
Usando PDO
En este ejemplo, utilizamos la extensión PDO para eliminar la tabla empleados de la base de datos. También verificamos si la tabla existe antes de proceder a eliminarla.
<?php
$servidor = "localhost";
$usuario = "usuario";
$contraseña = "contraseña";
$base_datos = "mi_base_datos_pdo";
try {
// Crear conexión PDO
$conn = new PDO("mysql:host=$servidor;dbname=$base_datos", $usuario, $contraseña);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Verificar si la tabla existe
$sql_check = "SHOW TABLES LIKE 'empleados'";
$resultado = $conn->query($sql_check);
if ($resultado->rowCount() > 0) {
// Eliminar la tabla
$sql = "DROP TABLE empleados";
$conn->exec($sql);
echo "Tabla eliminada exitosamente";
} else {
echo "La tabla no existe.";
}
} catch(PDOException $e) {
echo "Error al eliminar la tabla: " . $e->getMessage();
}
// Cerrar la conexión
$conn = null;
?>
Conclusión
Eliminar bases de datos o tablas es una tarea que debe realizarse con cuidado. Siempre asegúrate de tener copias de seguridad y de que estás trabajando en la base de datos correcta antes de ejecutar comandos como DROP DATABASE o DROP TABLE.
Además, utilizar las funciones adecuadas en PHP como MySQLi y PDO asegura que tu código sea compatible con las versiones más recientes de PHP y te permite manejar errores de manera eficiente.
Al seguir estas mejores prácticas, puedes evitar problemas críticos de pérdida de datos y mejorar la seguridad y estabilidad de tu aplicación.