Oracle
 sql >> Baza danych >  >> RDS >> Oracle

zmień tabelę modyfikuj kolumnę w bazie danych Oracle

My może zmienić typ danych kolumny w tabeli za pomocą zmień tabelę zmień kolumnę w oracle

ALTER TABLE table_name
MODIFY column_name <action>;

Akcją może być wiele rzeczy, takich jak
(a) zmiana typu danych
(b) Skrócenie lub rozszerzenie typu danych
(c) Zmiana wartości domyślnej
(d) Zmiana na zezwalaj na null lub nie nulls
(e) Widoczność kolumny
(d) Modyfikacja wirtualnej kolumny
Zacznijmy jeden po drugim

Oracle MODIFY zmienia typ danych w kolumnie

Możesz zmienić typ danych zmiany kolumny tylko wtedy, gdy kolumna jest pusta

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

Ponieważ tabela jest pusta, możemy zmienić typ danych zmiany kolumny

SQL> alter table Books_master modify ISBN NUMBER(6,0);
Table altered.
SQL> alter table Books_master modify ISBN VARCHAR2(25);
Table altered.

Wstawmy trochę danych

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 row created.
commit;

Teraz ponownie spróbuj zmodyfikować kolumnę, aby zmienić typ danych

SQL> alter table Books_master modify ISBN NUMBER(6,0);
alter table Books_master modify ISBN NUMBER(6,0)
*
ERROR at line 1:
ORA-01439: column to be modified must be empty to change datatype

Teraz możemy wyzerować tę kolumnę i pomyślnie uruchomić tę instrukcję

SQL> update Books_master set ISBN=null;
1 row updated.
SQL> commit;
Commit complete.
SQL> alter table Books_master modify ISBN NUMBER(6,0);
Table altered.

Co zrobić, jeśli chcemy zachować dane, jest wiele opcji
(a) Dodaj nową kolumnę jako nowy typ danych, skopiuj dane do tej kolumny, usuń starą kolumnę, zmień nazwę nowej kolumny na rzeczywistą nazwę kolumny:

alter table books_master add ISBN1 number;
update books_master set ISBN1=to_number(ISBN);
alter table drop column ISBN;
alter table rename column ISBN1 to ISBN;

(b) Użyj DBMS_REDEFINITION i przebuduj swoją tabelę z nowymi kolumnami

Kolumna Oracle MODIFY Skróć lub poszerz typ danych (zmień tabelę, zmień rozmiar kolumny oracle)

Jest to używane, gdy chcemy zmienić bajty lub znaki VARCHAR.
Przykład

Tutaj zwiększamy długość VARCHAR z 50 do 100

SQL> alter table Books_master modify title VARCHAR2(100);
Table altered.

Teraz, jeśli próbujemy skrócić długość ze 100 do 10

SQL> alter table Books_master modify title VARCHAR2(10);
alter table Books_master modify title VARCHAR2(10)
*
ERROR at line 1:
ORA-01441: cannot decrease column length because some value is too big

Dzieje się tak, ponieważ istniejące dane nie mieszczą się w tym rozmiarze. Więc możesz zwiększyć długość lub zaktualizować tę kolumnę

SQL> alter table Books_master modify title VARCHAR2(20);
Table altered.

Domyślna wartość kolumny Oracle MODIFY

jeśli musimy zmienić domyślną wartość kolumny

SQL> alter table BOOKS_MASTER modify BCOST default 1000;
Table altered.

Teraz następnym razem, gdy wystąpi jakakolwiek wstawka, a BCOST ma wartość null, będzie miał domyślną wartość 1000

alter table BOOKS_MASTER modify BCOST default 1000;
Table altered.

SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN,Publish_Year) VALUES (21, 'Deception', 'Dan', 123,2001);
1 row created.
SQL> commit;
Commit complete.

SQL> select BCOST from Books_master where book_id=21;
BCOST
-----
1000

Oracle MODIFY kolumna NULL lub NOT NULL

Możemy zmodyfikować kolumnę, aby zezwolić na wartości null lub not null

SQL> desc books_master
Name Null? Type
---- ---   ----
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 modify PUBLISH_YEAR not null;
Table altered.

SQL> desc books_master
Name Null? Type
---- ----  -----
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)

Jeśli zmieniasz na nie null, powinniśmy mieć istniejącą wartość, w przeciwnym razie to się nie powiedzie

Oracle MODIFY widoczność kolumny

Możemy zmienić widoczność kolumny za pomocą Modyfikuj kolumnę

SQL> desc books_master
Name Null? Type
---- ---- -----
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 modify PUBLISH_YEAR invisible;
Table altered.

Now the column become invisible

SQL> desc books_master
Name Null? Type
---- ----  ----
BOOK_ID NOT NULL NUMBER(6)
TITLE VARCHAR2(20)
AUTHOR VARCHAR2(50)
ISBN NUMBER(6)
BCOST NOT NULL NUMBER(6)

SQL> alter table BOOKS_MASTER modify PUBLISH_YEAR visible;
Table altered.

Now the column become visible
SQL> desc books_master
Name Null? Type
--- ----- -----
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)

Mam nadzieję, że podoba Ci się ten post w tabeli alter oracle modyfikuj kolumnę. Prosimy o przesłanie opinii

Też czyta
zmień tabelę dodaj wyrocznię kolumny
zmień nazwę tabeli zmień nazwę kolumny wyrocznia
upuść kolumnę w wyroczni
https://docs.oracle.com/cd/B28359_01/server.111/b28286/ oświadczenia_3001.htm


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyrocznia:„=DOWOLNY()” kontra „IN ()”

  2. Funkcja PL/SQL w Oracle nie widzi DBMS_AQ

  3. Typ danych rekordu oparty na kursorze z kursorem zwracającym wiele wartości w bazie danych Oracle

  4. PL/SQL — użyj zmiennej listy w miejscu gdzie w klauzuli

  5. Funkcja pliku kontrolnego migawki z RMAN i ORA-00245