4.4. Sentencias de definición de datos

Entendemos como sentencias de definición de datos (data definition language) todas aquellas que permitan manipular la estructura de nuestra base de datos.

Se trata de una manera de definir ciertos comandos de datos. Estas sentencias pueden ser:

  • CREATE: se encarga de crear bases de datos o tablas.
  • ALTER: la usaremos para la modificación de tablas o bases de datos.
  • DROP: la usaremos para borrar bases de datos o tablas.
  • RENAME: usaremos esta sentencia para cambiar el nombre de nuestra base de
    datos o de una tabla.

Estos comandos son exclusivamente para hacer modificaciones en las tablas, no para realizar consultas en MySQL. JDBC nos da opciones para poder hacer este tipo de sentencias mediante el código Java.

Crear tablas o bases de datos

El comando CREATE se puede usar para crear una tabla o una base de datos. Normalmente, ya tendremos creada la base de datos, pero si en alguna ocasión se tiene que realizar, se puede hacer mediante la aplicación.

Aquí tenemos la estructura teórica que podemos adaptar para nuestras sentencias y necesidades. La estructura básica de estas sentencias son estas, a modo de recordatorio:

public void crecionBaseDeDatos() throws Exception {
    Connection conn = null;
    Statement stmt = null;
    try {
        //Paso 1.Previamente habremos realizado la conexión
        conn = conector.conector();
        //Paso 2. Creamos un nuevo objeto con la conexión
        stmt = conn.createStatement();
        //Paso 3. Definimos la sentencia de crear una nueva base de datos
        String sql = "CREATE DATABASE ejemplo";
        //Paso 4. Ejecutar la sentencia
        stmt.executeUpdate(sql);
    }catch(SQLException se){
        //Gestionamos los posibles errores que puedan surgir durante la ejecucion de la insercion
        se.printStackTrace();
    }catch(Exception e){
        //Gestionamos los posibles errores
        e.printStackTrace();
    }finally{
        //Paso 5. Cerrar el objeto en uso y la conexión
        stmt.close();
        conn.close();
    }
}

Modificar tablas

Para la modificación de tablas o de bases de datos utilizaremos la sentencia ALTER. ALTER es la operación SQL que se encargará de realizar cambios dentro de la base de datos o de la tabla que especifiquemos, siempre que esos datos existan. Nos permitirá añadir, cambiar o eliminar campos de una tabla, o también renombrar una tabla. Estas son las estructuras básicas para realizar este tipo de operaciones:

//Para modificar la base de datos
ALTER DATABASE nombre_base_de_datos MODIFY NAME=nuevo_nombre;
//Para añadir columnas
ALTER TABLE nombre_tabla ADD COLUMN nombre_columna tipo_dato;
//Para modificar columnas
ALTER TABLE nombre_tabla MODIFY COLUMN nombre_columna tipo_dato;
//Para borrar una columna
ALTER TABLE nombre_tabla DROP COLUMN nombre_columna;

Las opciones con esta sentencia son bastante amplias: podremos modificar columnas, añadirlas o hasta borrarlas. Aquí podemos ver un ejemplo práctico:

Statement stmt = null;
try {
    //Paso 1: Realizamos la conexión
    conn = conector.conector();
    System.out.println("Nos hemos conectado a la BBDD");
    //Paso 2: Preparamos el objeto Statement
    stmt = conn.createStatement();
    //Paso 3:Modificacion de la base de datos, borrar 2 columnas
    String sql = "ALTER TABLE estudiante DROP COLUMN dni, DROP COLUMN edad;";
    stmt.executeUpdate(sql);
}catch(SQLException se){
    //Gestionamos los posibles errores que puedan surgir durante la ejecución de la inserción
    se.printStackTrace();
} catch (Exception e) {
    System.out.println("Se ha producido un error.");
} finally {
    stmt.close();
    conn.close();
}

Eliminar tablas o bases de datos

El comando DROP es utilizado para borrar bases de datos o tablas dentro de nuestra base de datos. Cuando ejecutamos este comando, todos los datos que contenga la BBDD o la tabla también se borran. Como recordatorio, aquí tenemos la estructura básica para las dos opciones de DROP:

//Para borrar una base de datos
DROP DATABASE nombre_base_datos;
//Para borrar una tabla
DROP TABLE nombre_tabla;

La estructura es muy simple y adaptarlo a la estructura JDBC será parecido a lo que venimos realizando con los otros comandos. Como podemos apreciar, también usaremos la interfaz Statement. La sentencia DROP, al no devolver ningún registro ni información, es ideal para este tipo de interfaz, ya que está especialmente diseñada para operaciones sencillas con la base de datos.

Renombrar tablas

El comando RENAME nos permitirá renombrar una tabla, es decir, modificar el nombre por otro. Este tipo de operación no producirá ningún cambio en los registros que contenga esa tabla, solo se modificará el nombre de la tabla. La estructura que deberemos seguir es esta:

//Para renombrar una tabla
RENAME TABLE nombre_tabla TO Nuevo_nombre_tabla;

Como hemos visto en ejemplos anteriores, el procedimiento es el mismo, solo cambia la sentencia SQL.