Eliminar registros, comando DELETE
Como ya se ha comentado, en la versión actual OpenOffice no se permite diseñar visualmente consultas de eliminación, inserción o actualización. Por lo tanto, para realizar este tipo de tareas en la base de datos debes recurrir a SQL.
La sentencia DELETE permite eliminar registros de una tabla. Esta es sin duda una operación delicada por lo que debes estar muy seguro de lo que haces pues una vez ejecutada no existe la posibilidad de deshacer la operación.
La recomendación en este sentido es que en primer lugar realices una consulta de selección para comprobar que estás seleccionando realmente los datos que deseas eliminar.
Los comandos DELETE, INSERT y UPDATE no se pueden ejecutar del modo que lo has estado haciendo hasta ahora con las consultas (SELECT). OpenOffice Base no permite hacerlo, pero sí incluye una herramienta que ofrece la posibilidad de ejecutar cualquier sentencia SQL.
- En la ventana principal del programa, en la parte superior, haz clic sobre el menú Herramientas.
- A continuación, selecciona el comando SQL para tener acceso al cuadro de diálogo que muestra la figura 6.18.

Figura 6.18
En esta ventana encuentras en primer lugar el cuadro denominado Comando a ejecutar. Será aquí donde debas escribir la sentencia SQL que deseas aplicar sobre la base de datos. Bajo este espacio se encuentra el botón Ejecutar que tendrás que utilizar para llevar a cabo las operaciones indicadas en el comando SQL.
A continuación dispones de una lista desplegable con las últimas sentencias SQL ejecutadas, una especie de histórico que puede servir para no tener que escribir varias veces la misma instrucción si ya la has utilizado con anterioridad. Observa este elemento resaltado en la figura 6.19.

Figura 6.19
Por último, la sección Estado (figura 6.20) mostrará todos los mensajes relacionados con la ejecución de la sentencia SQL.

Figura 6.20
Sintaxis de las sentencias en el intérprete SQL
El nivel de exigencia del intérprete SQL en cuanto a la sintaxis de las instrucciones es muy alto y necesitas actuar de modo algo distinto a lo que has hecho hasta ahora. Algunos datos importantes que debes tener en cuenta:
- Los nombres de tablas y campos deben estar entre comillas dobles. Por ejemplo:
SELECT "Nombre", "Apellidos" FROM "Alumnos" - En cuanto a las condiciones, los literales deben estar incluidos entre comillas simples y cada una de las condiciones encerradas entre paréntesis. Por ejemplo:
SELECT "Nombre", "Apellidos" FROM "Alumnos"
WHERE ("Nombre" = 'Antonio')
El término literal dentro del diseño de consultas mediante lenguaje SQL, hace referencia al texto de una condición, en el ejemplo anterior Antonio sería un literal. - Si la condición fuera una fecha no habría demasiados cambios:
SELECT "Nombre", "Apellidos" FROM "Alumnos"
WHERE ("FechaNacimiento" = '2008-12-01') - Cuando hay varias condiciones es conveniente encerrar todo el contenido de la cláusula WHERE entre paréntesis:
SELECT "Nombre", "Apellidos" FROM "Alumnos"
WHERE (("FechaNacimiento" = '2008-12-01')
AND ("FechaNacimiento" = '2008-12-31'))
Es esencial que sigas al pie de la letra la sintaxis requerida por el intérprete de SQL incluido en OpenOffice; de lo contrario un mensaje indicará que algo no está bien.
Ejemplo de eliminación de registros
A continuación un ejemplo del proceso completo de eliminación de registros con OpenOffice Base. Eso sí, aplicaremos el principio de prudencia, es decir, crearemos en primer lugar una consulta de selección estándar y la convertiremos después en una consulta de eliminación. De esta forma podemos comprobar si los registros que serán eliminados corresponden exactamente con los que deseamos borrar de la base de datos. La idea es eliminar los alumnos cuya fecha de nacimiento sea inferior a 31/12/1990. El resultado lo debes ordenar alfabéticamente. Empecemos por diseñar la consulta.
Actividad 11
- Selecciona la opción Crear consulta en vista SQL y empieza escribiendo: SELECT.
- A continuación indica los campos de la tabla que deseas mostrar en la consulta, en este caso utilizarás los campos Nombre y Apellidos y FechaNacimiento de la tabla Alumnos.
- Ahora añade la cláusula FROM y escribe el nombre de la única tabla implicada: Alumnos.
- Ahora añade la sentencia WHERE y escribe el primer criterio de filtrado: FechaNacimiento <= '1990-12-31'.
- Finalmente para ordenar el resultado, añade ORDER BY Apellidos.
- La instrucción SQL queda del siguiente modo:
SELECT Nombre, Apellidos, FechaNacimiento FROM Alumnos WHERE FechaNacimiento <= '1990-12-31' ORDER BY Apellidos
Observa el aspecto de la ventana diseño en la figura 6.21.

Figura 6.21
- Ejecuta la consulta y comprueba que los resultados mostrados corresponden realmente con la información que deseas eliminar de la base de datos.
- Una vez que estés completamente seguro de que la selección es correcta, un pequeño truco para ahorrar algo de trabajo.
- Selecciona la instrucción SQL completa y después utiliza el comando Copiar, ya sea con la combinación de teclas Control+C o desde el menú Editar.
- Cierra la ventana de consulta, guarda el resultado si lo crees conveniente y vuelve a la ventana principal de la base de datos.
- En el menú Herramientas selecciona el comando SQL como muestra la figura 6.22.

Figura 6.22
- Haz clic dentro de la primera sección del cuadro de diálogo y ejecuta el comando Pegar (Control+V). Al instante aparece la instrucción de selección.
- Pero si lo que deseas es eliminar registros y no seleccionarlos, debes hacer algunos cambios. Concretamente debes eliminar el comando SELECT y cambiarlo por DELETE. Además elimina los nombres de campos y la cláusula ORDER BY. Una vez hechos todos estos cambios la sentencia quedaría de la siguiente forma:
DELETE FROM "Alumnos" WHERE ("FechaNacimiento" <= '1990-12-31') -
Si has seguido todos los pasos correctamente, el resultado de ejecutar la sentencia anterior será un error. Bueno, en realidad no se trata de un error, si no más bien de un sistema de protección de la base de datos. Las reglas de integridad referencial de la base de datos no te deja llevar a cabo este proceso para no dejar registros "colgados".
-
Para solucionarlo abre la ventana de relaciones y haz clic con el botón derecho sobre la línea que une la tabla alumnos con todas aquellas tablas donde se han utilizado datos de esta tabla.
- Selecciona el comando Editar para que Base muestre el cuadro de diálogo Relaciones. En la parte inferior derecha tienes la sección Opciones de eliminación, pues bien aquí puedes controlar comportamiento del programa cuando se intenta eliminar un registro que tiene vinculos en otras tablas. Si seleccionas la opción Eliminar en cascada ya no tendría que aparecer el error y el alumno desaparecerá de todas aquellas tablas donde se encontraba.
En la parte inferior del cuadro de diálogo Ejecutar comandos SQL aparece un mensaje indicando que todo ha sido correcto como puedes ver en la figura 6.23.

Figura 6.23
Si no has eliminado la consulta diseñada anteriormente, para comprobar los datos antes de eliminarlos puedes ejecutarla de nuevo y si todo es correcto no debería devolver ningún registro.
Antes de terminar con este apartado, otro pequeño truco. Si quieres conocer la sentencia SQL asociada a cualquier consulta mientras trabajas en la vista Diseño, ejecuta el comando Ver y después utiliza Activar o desactivar la vista Diseño como puedes ver en la figura 6.24. Para recuperar el aspecto inicial de la ventana, repite la misma operación.

Figura 6.24