Curso de MySQL
Consultas, lista de correo 'C++ Con Clase' 'MySQL Con Clase' página de entrada Tabla de contenido Contactar con Webmaster
<< < > >> Curso Sentencias Funciones API C
0 Prólogo 1 Definiciones 2 Modelo E-R 3 Modelo relacional 4 Normalización 5 Tipos de columnas 6 Cliente MySQL
7 Crear bases de datos
.Crear base de datos .Crear una tabla .Valores nulos .Valores por defecto .Claves primarias .Autoincrementadas .Comentarios .Definición de creación .Índices .Claves foráneas .Opciones de tabla .Motor almacenamiento .Verificaciones .Eliminar una tabla .Eliminar base de datos .Ejemplo 1 .Ejemplo 2 8 Inserción de datos 9 Consultas 10 Operadores 11 Funciones 12 Consultas multitabla 13 Usuarios/privilegios 14 Importar/exportar A Instalar MySQL B Reglas de nombres C Expr regulares D Husos horarios E Palabras reservadas F Bibliografía

Opciones de tabla  

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.

Motor de almacenamiento

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:

  • BerkeleyDB o BDB: tablas de transacción segura con bloqueo de página.
  • HEAP o MEMORY: tablas almacenadas en memoria.
  • ISAM: motor original de MySQL.
  • InnoDB: tablas de transacción segura con bloqueo de fila y claves foráneas.
  • MERGE o MRG_MyISAM: una colección de tablas MyISAM usadas como una única tabla.
  • MyISAM: el nuevo motor binario de almacenamiento portable que reemplaza a ISAM.

Generalmente usaremos tablas MyISAM o tablas InnoDB.

A veces, cuando se requiera una gran optimización, creemos tablas temporales en memoria.

Verificaciones  

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.

Eliminar una tabla  

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>

Eliminar una base de datos  

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>
Inicio << < > >>