La parte final de la sentencia CREATE TABLE permite especificar varias opciones para la tabla.
Sólo comentaremos la opción del motor de almacenamiento, para ver el resto en detalle se puede consultar la sintaxis en CREATE TABLE.
La sintaxis de esta opción es:
{ENGINE|TYPE} = {BDB|HEAP|ISAM|InnoDB|MERGE|MRG_MYISAM|MYISAM }
Podemos usar indistintamente ENGINE o TYPE, pero la forma recomendada es ENGINE ya que la otra desaparecerá en la versión 5 de MySQL.
Hay seis motores de almacenamiento disponibles. Algunos de ellos serán de uso obligatorio si queremos tener ciertas opciones disponibles. Por ejemplo, ya hemos comentado que el soporte para claves foráneas sólo está disponible para el motor InnoDB. Los motores son:
Generalmente usaremos tablas MyISAM o tablas InnoDB.
A veces, cuando se requiera una gran optimización, creemos tablas temporales en memoria.
Disponemos de varias sentencias para verificar o consultar características de tablas.
Podemos ver la estructura de una tabla usando la sentencia SHOW COLUMNS:
mysql> SHOW COLUMNS FROM gente; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | nombre | varchar(40) | YES | | NULL | | | fecha | date | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql>
También podemos ver la instrucción usada para crear una tabla, mediante la sentencia SHOW CREATE TABLE:
mysql> show create table gente\G *************************** 1. row *************************** Table: gente Create Table: CREATE TABLE `gente` ( `nombre` varchar(40) default NULL, `fecha` date default NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec) mysql>
Usando '\G' en lugar de ';' la salida se muestra en forma de listado, en lugar de en forma de tabla. Este formato es más cómodo a la hora de leer el resultado.
La sentencia CREATE TABLE mostrada no tiene por qué ser la misma que se usó al crear la tabla originalmente. MySQL rellena las opciones que se activan de forma implícita, y usa siempre el mismo formato para crear claves primarias.
A veces es necesario eliminar una tabla, ya sea porque es más sencillo crearla de nuevo que modificarla, o porque ya no es necesaria.
Para eliminar una tabla se usa la sentencia DROP TABLE.
La sintaxis es simple:
DROP TABLE [IF EXISTS] tbl_name [, tbl_name] ...
Por ejemplo:
mysql> DROP TABLE ciudad6; Query OK, 0 rows affected (0.75 sec) mysql>
Se pueden añadir las palabras IF EXISTS para evitar errores si la tabla a eliminar no existe.
mysql> DROP TABLE ciudad6; ERROR 1051 (42S02): Unknown table 'ciudad6' mysql> DROP TABLE IF EXISTS ciudad6; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql>
De modo parecido, se pueden eliminar bases de datos completas, usando la sentencia DROP_DATABASE.
La sintaxis también es muy simple:
DROP DATABASE [IF EXISTS] db_name
Hay que tener cuidado, ya que al borrar cualquier base de datos se elimina también cualquier tabla que contenga.
mysql> CREATE DATABASE borrame; Query OK, 1 row affected (0.00 sec) mysql> USE borrame Database changed mysql> CREATE TABLE borrame ( -> id INT, -> nombre CHAR(40) -> ); Query OK, 0 rows affected (0.09 sec) mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | borrame | | mysql | | prueba | | test | +--------------------+ 4 rows in set (0.00 sec) mysql> SHOW TABLES; +-------------------+ | Tables_in_borrame | +-------------------+ | borrame | +-------------------+ 1 row in set (0.00 sec) mysql> DROP DATABASE IF EXISTS borrame; Query OK, 1 row affected (0.11 sec) mysql> DROP DATABASE IF EXISTS borrame; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql>
© Enero de 2005 Salvador Pozo, salvador@conclase.net