sql >> Base de Datos >  >> RDS >> Oracle

modificar la columna desplegable de la tabla en la base de datos de Oracle

A menudo necesitamos soltar la columna en la tabla. Hay dos formas de eliminar la columna en Oracle
(a) modificar la columna de eliminación de la tabla en Oracle
(b) modificar la tabla establecer la columna no utilizada en Oracle

SOLTAR COLUMNA usando DROP COLUMN

Aquí, en esto, soltamos la columna de la tabla usando el siguiente comando .

ALTER TABLE table_name
DROP COLUMN col_name;

Esta declaración tiene un bloqueo exclusivo en la tabla y, si la tabla es grande, llevará tiempo ejecutar la consulta

Ejemplo

SQL> CREATE TABLE Books_master
( Book_Id NUMBER(6,0),
Title VARCHAR2(50),
Author VARCHAR2(50),
ISBN VARCHAR2(25),
BCost NUMBER(6,0),
Publish_Year NUMBER(4,0),
CONSTRAINT Books_master_PK PRIMARY KEY (Book_Id),
CONSTRAINT Books_master_UK1 UNIQUE (Title, Author),
CONSTRAINT Books_master_UK2 UNIQUE (ISBN)
) ;
Table created.

SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (10, 'Complete/Convenient', 'Ketan Bhagat', 'ISBN 978-93-80349-92-3', 195, 2013);
SQL>INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (20, 'Deception Point', 'Dan Brown', 'ISBN 0-671-02738-7', 563,2001);
SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (30, 'Angels-Demons', 'Dan Brown', 'ISBN 0-671-02736-0',563, 2000);
SQL>INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (40, 'Harry Potter', 'J.K. Rowling', 'ISBN 0-7475-5100-6', 102,2003);

SQL> commit;
Commit complete.

SQL> column TITLE format a10
SQL> column AUTHOR format a10
SQL> column ISBN format a15
SQL > Desc BOOKS_MASTER

Sueltemos una columna de esta tabla

SQL> alter table books_master drop column PUBLISH_YEAR;
Table altered.

SQL > Desc BOOKS_MASTER
SQL> Select * from Books_master;

SOLTAR COLUMNA usando ESTABLECER SIN UTILIZAR

  • si le preocupa el recurso consumido al eliminar la columna, puede usar la instrucción ALTER TABLE…SET UNUSED .
  • Esta declaración marca una o más columnas como no utilizadas, pero en realidad no elimina los datos de la columna de destino ni restaura el espacio en disco ocupado por estas columnas.
  • Una columna que está marcada como no utilizada no se muestra en las consultas ni en las vistas del diccionario de datos, y su nombre se elimina para que una nueva columna pueda reutilizar ese nombre. También se eliminan todas las restricciones, índices y estadísticas definidos en la columna.

Sintaxis

ALTER TABLE 
ESTABLECER COLUMNA NO UTILIZADA ;

Podemos soltar la columna no utilizada más adelante cuando el recurso sea más bajo usando el comando

ALTER TABLE 
Soltar  COLUMNAS NO UTILIZADAS;

Si tiene tablas grandes, puede reducir la cantidad de registros de deshacer acumulados utilizando la opción CHECKPOINT, que fuerza un punto de control después de que se haya procesado el número especificado de filas. Los puntos de control reducen la cantidad de registros de deshacer acumulados durante la operación de la columna desplegable para evitar el posible agotamiento del espacio de deshacer.

ALTER TABLE table_name DROP COLUMNAS NO UTILIZADAS CHECKPOINT 500;

  • Si ha utilizado la sintaxis del punto de control con su comando de eliminación, entonces podría eliminar la sesión (o cerrar la base de datos) a la mitad de la eliminación.
  • La tabla no estará disponible para DML o consulta
  • puede finalizar el comando "soltar columnas" usando la opción "continuar" (con un punto de control opcional).
alter table
drop columns continue checkpoint;

alter table
drop columns continue checkpoint 5000;

Ejemplo
vamos con la tabla creada anteriormente

SQL> alter table books_master set unused column ISBN;
Table altered.
SQL> desc books_master
SQL> Select * from Books_master;

Podemos verificar el recuento de columnas no utilizadas consultando la siguiente vista USER_UNUSED_COL_TABS, ALL_UNUSED_COL_TABS o DBA_UNUSED_COL_TABS

SQL> select * from DBA_UNUSED_COL_TABS where TABLE_NAME='BOOKS_MASTER';

Ahora puede soltar la columna durante el período de baja actividad

SQL> alter table Books_master drop unused columns;
Table altered.

SQL> select * from DBA_UNUSED_COL_TABS where TABLE_NAME='BOOKS_MASTER';
no rows selected

Cómo eliminar varias columnas

Podemos especificar varias columnas durante el comando soltar

SQL> alter table books_master drop (AUTHOR,TITLE);
Table altered.

Espero que les guste la publicación en la columna desplegable de la tabla alterada en Oracle. Proporcione sus comentarios

También lee
Clave principal de Oracle
modificar movimiento de tabla
modificar columna de cambio de nombre de tabla en Oracle
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables006. htm