Mysql – Sentencias DDL en MySQL

Written by lopezatienza on 14/05/2009 – 09:49 -

SENTENCIAS DDL EN MySQL


Comandos para la creación de objetos (CREATE)

Creación de una Base de Datos

La sentencia para crear una base de datos en MySQl es :

CREATE DATABASE nombre_base_de_datos;

Al crear una base de datos no se selecciona ésta de manera automática; debemos hacerlo de manera explícita, por ello usamos el comando USE.

La base de datos se crea sólo una vez, pero nosotros debemos seleccionarla cada vez que iniciamos una sesión con mysql. Por ello es recomendable que se indique la base de datos sobre la que vamos a trabajar al momento de invocar al monitor de MySQL. Por ejemplo:

shell>mysql -h casita -u blueman -p nombre_base_datos

Enter password: ******

Welcome to the MySQL monitor. Commands end with ; or \g

Your MySQL connection id is 17 to server version: 3.23.38 -nt

Type 'help;' or '\h' hor help. Type '\c' to clear the buffer

Mysql>

Observar que "nombre_base_datos" no es la contraseña que se está proporcionando desde la línea de comandos, sino el nombre de la base de datos a la que deseamos acceder. Si deseamos proporcionar la contraseña en la línea de comandos después de la opción "-p", debemos de hacerlo sin dejar espacios (por ejemplo, -phola123, no como -p hola123). Sin embargo, escribir nuestra contraseña desde la línea de comandos no es recomendado, ya que es bastante inseguro.

Creación de una Tabla

Las tablas son la estructura de datos básica en cualquier base de datos relacional. Una tabla es una colección organizada de registros (o filas), todas ellas con los mismos atributos (columnas o campos). Las columnas de la tabla describen la estructura de la misma y las restricciones de integridad de la tabla describen los datos que son válidos dentro de la misma.

La sentencia SQL para creación de tablas en MySQL es CREATE TABLE, que tiene la siguiente sintaxis básica:

CREATE TABLE nombre_tabla (definición de columnas…..);

En definición de columnas, hay que especificar el nombre de la columna seguida de su tipo de datos (integer, char…) y si existe más de una columna, éstas se separan mediante comas:

CREATE TABLE Personas (nombre char(10), apellidos char(30), dirección char(40), fecha_nacimento date, edad integer, telefono integer);

Comandos para la modificación de la estructura de las tablas (ALTER)

La modificación y administración de tablas de una base de datos se realizan básicamente a partir de las sentencias CREATE TABLE (vista en el punto anterior), ALTER TABLE Y DROP TABLE.

Después de crear una tabla, es posible cambiar muchas de las opciones que fueron definidas cuando se creó originalmente, por ejemplo, es posible:

·    Agregar, modificar o eliminar columnas. Así se puede cambiar el nombre, la longitud, el tipo de datos, la precisión, la escala y la aceptación de valores NULL de la columna, aunque hay algunas restricciones.
·    Agregar o eliminar restricciones PRIMARY KEY y FOREIGN KEY.
·    Agregar o eliminar restricciones UNIQUE y CHECK.

Inicialmente la sintaxis de ALTER TABLE podría ser la siguiente:

ALTER TABLE nombre_tabla
| CHANGE nombre_columna nombre_columna_nuevo
| ADD COLUMN declaración_columna
| DROP COLUMN nombre_columna
| MODIFY COLUMN declaración_columna
| RENAME  nombre_tabla_nueva

Veamos un ejemplo:

En el ejemplo anterior, se creamos una tabla que guarda información sobre los datos de los empleados de una empresa.

En la sintaxis de ALTER TABLE ya hemos visto que CHANGE, MODIFY, RENAME y ADD son cláusulas cuya finalidad es modificar propiedades de las columnas de las tablas, renombrar las tablas y añadir elementos a las mismas como columnas, índices y restricciones de integridad.

Las cláusulas CHANGE y MODIFY se utilizan para cambiar el tipo de las columnas de una tabla, pero CHANGE puede además renombrar columnas. La cláusula RENAME permite renombrar tablas. Por su parte, la cláusula ADD permite añadir columnas, índices y restricciones de integridad a las tablas.

En la consulta siguiente se añade  la columna con valores enteros de nombre c_id a la tabla EMP:

Mysql> ALTER TABLE emp ADD c_id INTEGER;

La consulta siguiente modifica la columna mgr de la tabla EMP a tipo numérico:

Mysql> ALTER TABLE emp MODIFY mgr NUMERIC;

La consulta anterior se podría haber relizado mediante CHANGE como sigue (obsérvese que ahora hay que repetir el nombre de la columna a modificar):

Mysql> ALTER TABLE emp CHANGE mgr mgr NUMERIC;

Pero la ventana de CHANGE respecto a MODIFY es que permite, además de modificar una columna, cambiar su nombre.  En la consulta siguiente se modifica la columna mgr de la tabla EMP  a tipo numérico y además se cambia su nombre a mgr1:

Mysql> ALTER TABLE emp CHANGE mgr mgr1 NUMERIC;

En la consulta siguiente se renombra la tabla emp a emp1. Posteriormente se deshace el cambio de nombre de la tabla:

Mysql> ALTER TABLE emp RENAME AS emp1;
Mysql> ALTER TABLE emp1 RENAME AS emp;

En la consulta siguiente se añaden a la table EMP las columnas de nombres nueva_columna (numérica con 7 dígitos y dos decimales) y nueva_columna2 (con 1 carácter):

Mysql> ALTER TABLE emp ADD nueva_columna NUMERIC(7,2), ADD nueva_columna2 CHAR(1);

A continuación, en la tabla EMP se cambian de nombre las columnas nueva_columna y nueva_columna2 a los nuevos nombres ahorro y préstamo. Además se renombre la tabla a emp1:

Mysql> ALTER TABLE emp RENAME AS emp1, CHANGE nueva_columna ahorro, nueva_columna2 prestamo char(1);

Por último, en la tabla emp1 se borran las columnas ahorro y préstamo:

Mysql> ALTER TABLE emp1 DROP ahorro, DROP prestamo;

Comandos para el borrado de las tablas (DROP)

La sentencia DROP TABLE permite borrar tablas completas de la base de datos. Esta sentencia suprime las tablas que se especifican en su sintaxis y valida los cambios pendientes en la base de datos. Únicamente un administrador de la base de datos (DBA) puede suprimir tablas de otros usuarios.

Al suprimir una tabla también se suprimen los índices y las concesiones asociadas a ella. Los sinónimos construidos sobre tablas suprimidas se marcan como inválidas y dejan de funcionar.

La sintaxis de DROP TABLE es la siguiente:

DROP TABLE tabla1, table2….

No se puede utilizar DROP TABLE para quitar una tabla a la que se haga referencia con una restricción FOREIGN KEY, ya que primero se debe quitar la restricción FOREIGN KEY o la tabla de referencia.

El propietario de una tabla puede quitar la tabla de cualquier base de datos. Cuando se quita la tabla, las reglas o valores predeterminados de la misma pierden sus enlaces y se quitan automáticamente las restricciones o desencadenadores asociados con ella. Si vuelve a crear una tabla, deberá volver a enlazar las reglas y valores predeterminados apropiados, volver a crear los desencadenadores y agregar todas las restricciones necesarias.

Tampoco se puede utilizar la instrucción DROP TABLE sobre las tablas del sistema. Si elimina todas las filas de una tabla (DELETE tabla), la tabla existe hasta que se quite. Los permisos para utilizar DROP TABLE pertenecen de manera predeterminada al propietario de la tabla y no se pueden transferir.

En el ejemplo siguiente se elimina la tabla EMP creada previamente:

Mysql> DROP TABLE emp;

Borrado de bases de datos con DROP DATABASE

En MySQL es muy sencillo borrar una base de datos completa con todos sus objetos mediante la sentencia DROP DATABASE, cuya sintaxis es la siguiente:

DROP DATABASE nombre_base_de_datos;

Si se intenta eliminar una base de datos que no existe, MySQL ofrece un mensaje de error. Después de eliminar una base de datos es necesario tener precaución. Ya sabemos que la sentencia falla si no existe la base datos que se quiere borrar, pero también falla en caso de no disponer de los permisos necesarios.

Ya sabemos que las bases de datos MySQL se almacenan en un directorio que cuelga del directorio de datos y puede ocurrir que se hayan colocado archivos adicionales que no son tablas en dicho directorio. En este caso, cuando intentamos borrar la base de datos, los archivos citados no se borrarán, pero lo más peligroso es que tampoco se borrará la base de datos. Por lo tanto, para poder eliminar la base de datos en esta última situación, será necesario borrar respectivamente del directorio de la base de datos cualquier archivo que no sea tabla ni parte natural de la base de datos.


Autor: Antonio Lopez Atienza


Tags:
Posted in Mysql | No Comments »

Leave a Comment

 

RSS
MCC D5E