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
esta buena la informacion sigan igual
chido
me sirvio mcho grasias