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

Cómo alterar la tabla en Oracle

A menudo necesitamos modificar la tabla en Oracle según los cambios y la actualización de los requisitos. Estos son algunos de los puntos importantes sobre la instrucción Alter table

  • Alteras o modificas  una tabla con ALTER TABLE  declaración.
  • La tabla debe estar incluida en su esquema para modificar una tabla, o debe tener el privilegio de objeto ALTER para la tabla o el privilegio de sistema ALTER ANY TABLE.
  • Si una vista, una vista materializada, un disparador, un índice basado en funciones, una restricción de verificación, una función o un procedimiento del paquete depende de una tabla base, la alteración de la tabla base o sus columnas puede afectar el objeto dependiente. Por ejemplo, los objetos plsql se vuelven no válido  si el objeto de la tabla dependiente cambia y tiene que volver a hacerlos válidos

Modificar características físicas (INITRANS o parámetros de almacenamiento)

Podemos modificar el parámetro de almacenamiento de la tabla usando la instrucción Alterar tabla. Podemos modificar inittrans así

ALTER TABLE TABLE_NAME INITRANS 10;

Mover la tabla a nuevos segmentos o tablespace

Podemos mover la tabla sin partición o la partición de la tabla a un nuevo segmento o nuevo espacio de tabla si es necesario

Alter table table_name move tablespace <tablespace name>

Incluso podemos usar el comando mover para cambiar cualquier parámetro de almacenamiento de las tablas que no se modifique usando el comando alterar tabla

Alterar la tabla en Oracle para cambiar el tipo de datos

Podemos cambiar el tipo de datos de cualquier columna usando el comando modificar modificar tabla

ALTER TABLE <table_name>
MODIFY (<column_name>  <new_data_type>);
Before
SQL> desc emp
 Name                                      Null?    Type
 ----------------------------------------- -------- -----------------------
 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)


After
SQL> desc emp
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(20)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)

modificar el tipo de datos de la columna en Oracle

Agregar una nueva columna/Eliminar una columna/Renombrar una columna

Podemos agregar una nueva columna a la definición de la tabla

Usar el comando modificar tabla agregar 

ALTER TABLE <table_name>
ADD (<New column_name>  <new_data_type>);

Oracle le permite cambiar el nombre de las columnas existentes en una tabla. Use la cláusula RENAME COLUMN de la instrucción ALTER TABLE para cambiar el nombre de una columna

Oracle le permite colocar la columna en la tabla usando el comando

Modificar la columna desplegable de la tabla;
Consulte el siguiente artículo para obtener más información sobre esto

alterar tabla agregar oráculo de columna

Establecer una columna sin usar y eliminar la columna sin usar

si le preocupa el recurso consumido al eliminar la columna, puede usar la declaració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.
Example
ALTER TABLE <table_name>
SET UNUSED COLUMN <column_name>;

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

ALTER TABLE <table_name>
Drop  UNUSED COLUMN ;

Agregue, modifique o elimine las restricciones de integridad asociadas con la tabla o también puede habilitar/deshabilitar las restricciones

La adición de restricciones se realiza mediante la modificación de restricciones de adición de tablas

ALTER TABLE EMP ADD CONSTRAINT EMP_FK FOREIGN KEY (DEPT_NO) REFERENCES 
DEPT(DEPT_NO);

Eliminación de restricciones:se realiza mediante el

comando
ALTER TABLE DROP CONSTRAINT <constraint_name> command;

Habilitación/deshabilitación de restricciones:las restricciones se pueden crear en el modo DESHABILITAR/HABILITAR o se pueden deshabilitar o habilitar con el comando

ALTER TABLE ENABLE/DISABLE CONSTRAINT <constraint_name>

Renombrar nombre de tabla

Oracle le permite cambiar el nombre de la tabla también

Rename <table name>  to <new table name>;

Alteración de caché de tabla/sin caché, compresión, paralelismo

Oracle permite Alteración de caché de tabla/sin caché, compresión, paralelismo

Artículos relacionados

Enumerar todas las tablas en Oracle
crear tabla oracle
ora-20005:las estadísticas de objetos están bloqueadas
alterar movimiento de tabla
cómo verificar todas las restricciones en una tabla en oracle
https ://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_3001.htm