sql >> Base de Datos >  >> RDS >> Mysql

MySQL SOLTAR COLUMNA

A veces, es posible que deba eliminar una columna de la tabla de la base de datos en MySQL. Puede hacer esto fácilmente usando el comando MySQL DROP COLUMN. Aquí se explica cómo eliminar una columna de una tabla en MySQL.

Cómo eliminar una columna de una tabla en MySQL

Estos son los pasos para eliminar la columna de la tabla en MySQL. Usaremos la consulta DROP COLUMN de MySQL para eliminar las columnas existentes de la tabla.

Esta es la sintaxis de la sentencia DROP COLUMN:

ALTER TABLE table_name
DROP COLUMN column_name;

En la declaración anterior, debe mencionar la tabla cuya columna desea eliminar, en la cláusula ALTER TABLE. Luego especifique el nombre de la columna en la cláusula DROP COLUMN.

Solo puede usar DROP, en lugar de DROP COLUMN arriba.

Si desea eliminar varias columnas de la tabla, menciónelas en cláusulas separadas DROP COLUMN, en la misma declaración.

ALTER TABLE table_name
DROP COLUMN column1,
DROP COLUMN column2,
DROP COLUMN column3;

Cuando elimina una columna de la tabla, todos los procedimientos almacenados, vistas y disparadores que hacen referencia a esta columna dejan de ser válidos. Deberá actualizarlos manualmente para que vuelvan a funcionar. También puede eliminar la columna con el índice, pero el índice dejará de ser válido después de eliminar la columna.

Lectura adicional:MySQL DROP TABLE

Ejemplos de DROP COLUMN de MySQL

Supongamos que tiene la siguiente tabla pedidos

mysql> create table orders(order_date date, 
       sale int, 
       product_id int, 
       category varchar(255));

Digamos que desea DROP COLUMN product_id

mysql> alter table orders drop column product_id;

mysql> describe orders;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| order_date | date         | YES  |     | NULL    |       |
| sale       | int(11)      | YES  |     | NULL    |       |
| category   | varchar(255) | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+

Lectura adicional:Cómo obtener registros de hoy en MySQL

MySQL DROP múltiples columnas

Digamos que desea eliminar varias columnas de venta y categoría. Aquí está la declaración MySQL DROP COLUMN para eliminar varias columnas de la tabla en MySQL

mysql> alter table orders
     drop column sale,
     drop column category;

mysql> describe orders;
+------------+------+------+-----+---------+-------+
| Field      | Type | Null | Key | Default | Extra |
+------------+------+------+-----+---------+-------+
| order_date | date | YES  |     | NULL    |       |
+------------+------+------+-----+---------+-------+

Lectura adicional:cómo obtener registros de los últimos 7 días en MySQL

MySQL DROP COLUMN con clave foránea

Si intenta DROP COLUMN directamente con Foreign Key, MySQL generará un error. Digamos que tienes las siguientes tablas

mysql> create table orders3(id int auto_increment primary key,category_id int);

mysql> create table categories(id int auto_increment primary key,name varchar(255));

mysql> ALTER TABLE orders3
     ADD CONSTRAINT fk_cat
     FOREIGN KEY (category_id)
     REFERENCES categories(id);

Lectura adicional:Cómo obtener registros entre 2 fechas en MySQL

En el ejemplo anterior, la clave externa category_id en orders3 hace referencia a la columna de ID de clave principal de la tabla de categorías. Si intenta eliminarlo, obtendrá un error.

mysql> alter table orders3 drop column category_id;
ERROR 1553 (HY000): Cannot drop index 'fk_cat': needed in a foreign key constraint

Entonces, primero debe eliminar la restricción de clave externa y solo luego usar MySQL DROP COLUMN

mysql> alter table orders3 drop foreign key fk_cat;

mysql> alter table orders3 drop column category_id;

mysql> describe orders3;
+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| id    | int(11) | NO   | PRI | NULL    | auto_increment |
+-------+---------+------+-----+---------+----------------+

Ubiq facilita la visualización de datos en minutos y la supervisión en paneles en tiempo real. ¡Pruébalo hoy!