Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

alterar tabela modificar coluna no banco de dados oracle


Nós pode alterar o tipo de dados da coluna em uma tabela usando alterar tabela modificar coluna no oracle
ALTER TABLE table_nameMODIFY column_name ;

A ação pode ser muitas coisas como
(a) alterar o tipo de dados
(b) Encurtar ou ampliar o tipo de dados
(c) Alterar o valor padrão
(d) Alterar para permitir nulos ou não nulos
(e) Visibilidade da coluna
(d) Modificação da coluna virtual
Vamos começar um por um

Tipo de dados de alteração da coluna MODIFY do Oracle


Você pode modificar o tipo de dados de alteração da coluna somente se a coluna estiver vazia
SQL> CREATE TABLE Books_master( Book_Id NUMBER(6,0),Title VARCHAR2(50),Autor 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 (Título, Autor),CONSTRAINT Books_master_UK2 UNIQUE (ISBN));Tabela criada

Como a tabela está vazia, podemos modificar o tipo de dados de alteração da coluna
SQL> alterar tabela Books_master modificar ISBN NUMBER(6,0);Tabela alterada.SQL> alterar tabela Books_master modificar ISBN VARCHAR2(25);Tabela alterada.

Vamos inserir alguns dados
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);1 linha criada.commit;

Agora, novamente, tente modificar a coluna para alterar o tipo de dados
SQL> alter table Books_master modifique ISBN NUMBER(6,0);alter table Books_master modifique ISBN NUMBER(6,0)*ERROR na linha 1:ORA-01439:a coluna a ser modificada deve estar vazia para alterar o tipo de dados

pré>
Agora podemos anular essa coluna e executar esta instrução com sucesso
SQL> atualização Books_master set ISBN=null;1 linha atualizada.SQL> commit;Commit complete.SQL> altera tabela Books_master modifica ISBN NUMBER(6,0);Tabela alterada.

Agora, o que fazer se quisermos manter os dados, existem várias opções
(a) Adicionar nova coluna como novo tipo de dados, copiar dados para esta coluna, excluir a coluna antiga, renomear nova coluna como nome de coluna real:
alterar tabela books_master adicionar número ISBN1;atualizar books_master definir ISBN1=to_number(ISBN);alterar tabela descartar coluna ISBN;alterar tabela renomear coluna ISBN1 para ISBN;

(b) Use DBMS_REDEFINITION e reconstrua sua tabela com novas colunas

Oracle MODIFY column Encurtar ou ampliar o tipo de dados (alterar tabela modificar o tamanho da coluna oracle)


Isso é usado quando queremos alterar os bytes ou caracteres VARCHAR.
Exemplo

Aqui estamos aumentando o comprimento do VARCHAR de 50 para 100
SQL> altera a tabela Books_master modifica o título VARCHAR2(100);Tabela alterada.

Agora, se estamos tentando encurtar o comprimento de 100 para 10
SQL> altera a tabela Books_master modifica o título VARCHAR2(10); altera a tabela Books_master modifica o título VARCHAR2(10)*ERROR na linha 1:ORA-01441:não é possível diminuir o comprimento da coluna porque algum valor é muito grande

Isso acontece porque os dados existentes não cabem nesse tamanho. Então, pode aumentar o comprimento ou atualizar essa coluna
SQL> altera a tabela Books_master modifica o título VARCHAR2(20);Tabela alterada.

Valor padrão da coluna MODIFY do Oracle


se tivermos que modificar o valor padrão da coluna
SQL> altera a tabela BOOKS_MASTER modifica o padrão BCOST 1000;Tabela alterada.

Agora, da próxima vez, se ocorrer alguma inserção e BCOST for nulo, ele terá um valor padrão como 1000
alterar tabela BOOKS_MASTER modificar BCOST padrão 1000;Tabela alterada.SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN,Publish_Year) VALUES (21, 'Deception', 'Dan', 123,2001);1 linha criada .SQL> commit;Commit complete.SQL> selecione BCOST em Books_master onde book_id=21;BCOST-----1000 

Oracle MODIFY coluna NULL ou NOT NULL


Podemos modificar a coluna para permitir nulos ou não nulos
SQL> desc books_masterName Nulo? Tipo ---- --- ----BOOK_ID NOT NULL NUMBER(6)TITLE VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMBER(6)BCOST NOT NULL NUMBER(6)PUBLISH_YEAR NUMBER(4)SQL> alter table BOOKS_MASTER modificar PUBLISH_YEAR não nulo;Tabela alterada.SQL> desc books_masterName Nulo? Tipo ---- ---- -----BOOK_ID NOT NULL NUMBER(6)TITLE VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMBER(6)BCOST NOT NULL NUMBER(6)PUBLISH_YEAR NOT NULL NUMBER(4) 

Se você estiver alterando para não nulo, devemos ter um valor existente, caso contrário, isso falhará

Visibilidade da coluna MODIFY do Oracle


Podemos alterar a visibilidade da coluna com Modify column
SQL> desc books_masterName Nulo? Tipo ---- ---- -----BOOK_ID NOT NULL NUMBER(6)TITLE VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMBER(6)BCOST NOT NULL NUMBER(6)PUBLISH_YEAR NOT NULL NUMBER(4) SQL> alter table BOOKS_MASTER modifique PUBLISH_YEAR invisível;Tabela alterada.Agora a coluna se torna invisívelSQL> desc books_masterName Null? Tipo ---- ---- ----BOOK_ID NOT NULL NUMBER(6)TITLE VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMBER(6)BCOST NOT NULL NUMBER(6)SQL> alterar tabela BOOKS_MASTER modificar PUBLISH_YEAR visível;Tabela alterada.Agora a coluna se torna visívelSQL> desc books_masterName Null? Tipo --- ----- -----BOOK_ID NOT NULL NUMBER(6)TITLE VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMBER(6)BCOST NOT NULL NUMBER(6)PUBLISH_YEAR NOT NULL NUMBER(4) 

Espero que gostem deste post no oracle alter table modifique a coluna. Por favor, forneça o feedback

Também lê
alterar tabela adicionar coluna oracle
alterar tabela renomear coluna oracle
soltar coluna no oracle
https://docs.oracle.com/cd/B28359_01/server.111/b28286/ declarações_3001.htm