Crear / Modificar / Eliminar tablas en MySQL

Esta guía forma parte de la serie: Administrar MySQL desde la línea de comandos.

Una de las tareas frecuentes durante el proceso de desarrollo de un proyecto es el cambio de la estructura de la base de datos. Esta guía pretende mostrar como crear, modificar y eliminar tablas de una base de datos MySQL; no obstante las sentencias implicadas en estas operaciones son extensas y complejas y abordarlas en su totalidad sería engorroso y poco práctico. Para más información remítase al sitio oficial de MySQL

Crear Tabla

Crear la tabla hotel con la siguiente especificación:

  • - Identificador: entero sin signo, autoincrementable, llave primaria
  • - nombre: longitud variable, 100 carácteres como máxima longitud y no nulo
  • - activo: booleano, no nullo, 1 valor por defecto
  • - url: longitud variable, 255 carácteres como máxima longitud, índice único
CREATE TABLE hotel (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    descripcion TEXT,
    activo TINYINT(1) DEFAULT '1' NOT NULL,
    url VARCHAR(255),
    UNIQUE INDEX url_idx (url)) DEFAULT CHARACTER SET utf8
    COLLATE utf8_general_ci ENGINE = InnoDB;

Nótese que hemos especificado codificación UTF-8 y motor de almacenamiento InnoDB para esta tabla. (La codificación y motor de almacenamiento en una instalación MySQL por defecto son latin1 y MyISAM respectivamente)

Crear la tabla trabajador con la siguiente especificación:

  • - Identificador: entero sin signo, autoincrementable, llave primaria
  • - nombre: longitud variable, 100 carácteres como máxima longitud y no nulo
  • - activo: booleano, no nullo, 1 valor por defecto
CREATE TABLE trabajador (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    activo TINYINT(1) DEFAULT '1' NOT NULL,
    hotel_id INT UNSIGNED ) DEFAULT CHARACTER SET utf8
    COLLATE utf8_general_ci ENGINE = InnoDB;
Ver especificación de una tabla
desc hotel;
Ver índices de una tabla
show index from hotel;
Modificar definición de una columna

Restringir los valores de hotel_id a valores no nulos en la tabla trabajador

ALTER TABLE trabajador MODIFY COLUMN hotel_id INT UNSIGNED NOT NULL;
Agregar columna

Agregar la columna código a la tabla trabajador

ALTER TABLE trabajador ADD COLUMN codigo CHAR(11) NOT NULL;
Crear índice

El código del trabajador debe ser único

CREATE UNIQUE INDEX trabajador_codigo_idx USING BTREE
on trabajador(codigo);
Crear relación

Aquí se establece la relación entre trabajador y hotel (Un hotel puede terner muchos trabajadores y un trabajador pertenece a un solo hotel). Cuando se elemina un hotel se eliminan todos sus trabajadores

ALTER TABLE trabajador ADD CONSTRAINT trabajador_hotel_id_hotel_id
FOREIGN KEY (hotel_id) REFERENCES hotel(id) ON DELETE CASCADE;
Renombrar columna

Cambiar el nombre de la columna url a slug de la tabla hotel y restringir los valores a no nulos y cadena vacía como valor por defecto

ALTER TABLE hotel CHANGE COLUMN url slug varchar(255) NOT
NULL DEFAULT '';
Renombrar tabla
ALTER table trabajador RENAME TO trabajadores;
Eliminar tabla
DROP table tabla1[,tabla2, ...]
Eliminar índice
alter table drop index  trabajador_codigo_idx;
Eliminar columna

Eliminar la columna código de la tabla trabajadores

ALTER TABLE trabajadores DROP COLUMN codigo;

Lecturas recomendadas

- help create table
- help alter table
- help drop table

About these ads

3 comentarios

  1. esta buena la informacion sigan igual

  2. francisco · · Responder

    chido

  3. alejo lopera · · Responder

    me sirvio mcho grasias

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Conectando a %s

%d bloggers like this: