Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

thay đổi bảng sửa đổi cột trong cơ sở dữ liệu oracle

Chúng tôi có thể thay đổi kiểu dữ liệu của cột trong bảng bằng cách sử dụng thay đổi cột sửa đổi bảng trong oracle

 ALTER TABLE table_nameMODIFY column_name ; 

Có thể thực hiện nhiều hành động như
(a) thay đổi kiểu dữ liệu
(b) Rút ngắn hoặc mở rộng kiểu dữ liệu
(c) Thay đổi giá trị mặc định
(d) Thay đổi thành cho phép null hoặc không nulls
(e) Hiển thị cột
(d) Sửa đổi cột ảo
Hãy bắt đầu từng cái một

Kiểu dữ liệu thay đổi cột Oracle MODIFY

Bạn chỉ có thể sửa đổi kiểu dữ liệu thay đổi cột nếu cột đó trống

 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)); Bảng đã tạo 

Vì bảng trống, chúng tôi có thể sửa đổi kiểu dữ liệu thay đổi cột

 SQL> bảng thay đổi Books_master sửa đổi ISBN NUMBER (6,0); Bảng đã thay đổi.SQL> bảng thay đổi Books_master sửa đổi ISBN VARCHAR2 (25); Bảng đã được thay đổi. 

Hãy chèn một số dữ liệu

 SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (10, 'Hoàn thành / Thuận tiện', 'Ketan Bhagat', 'ISBN 978-93-80349-92-3', 195 , 2013); 1 hàng đã tạo.commit; 

Bây giờ một lần nữa, hãy thử sửa đổi cột để thay đổi kiểu dữ liệu

 SQL> bảng thay đổi Books_master sửa đổi số ISBN (6,0); bảng thay đổi Books_master sửa đổi số ISBN (6,0) * LỖI ở dòng 1:ORA-01439:cột được sửa đổi phải để trống để thay đổi kiểu dữ liệu  

Bây giờ chúng ta có thể vô hiệu cột đó và chạy câu lệnh này thành công

 SQL> cập nhật Books_master set ISBN =null; 1 hàng được cập nhật.SQL> cam kết; Hoàn thành cam kết.SQL> bảng thay đổi Books_master sửa đổi ISBN NUMBER (6,0); Bảng đã thay đổi. 

Bây giờ phải làm gì nếu chúng ta muốn giữ lại dữ liệu, có nhiều lựa chọn
(a) Thêm cột mới làm kiểu dữ liệu mới, sao chép dữ liệu vào cột này, xóa cột cũ, đổi tên cột mới thành tên cột thực:

 thay đổi bảng books_master thêm số ISBN1; cập nhật books_master set ISBN1 =to_number (ISBN); thay đổi bảng thả cột ISBN; thay đổi bảng đổi tên cột ISBN1 thành ISBN; 

(b) Sử dụng DBMS_REDEFINITION và xây dựng lại bảng của bạn với các cột mới

Oracle MODIFY cột Rút ngắn hoặc mở rộng kiểu dữ liệu (thay đổi bảng sửa đổi kích thước cột oracle)

Điều này được sử dụng khi chúng ta muốn thay đổi các byte hoặc ký tự VARCHAR.
Ví dụ

Ở đây, chúng tôi đang tăng độ dài VARCHAR từ 50 lên 100

 SQL> bảng thay đổi Books_master sửa đổi tiêu đề VARCHAR2 (100); Bảng đã được thay đổi. 

Bây giờ nếu chúng ta đang cố gắng rút ngắn độ dài từ 100 xuống 10

 SQL> bảng thay đổi Books_master sửa đổi tiêu đề VARCHAR2 (10); bảng thay đổi Books_master sửa đổi tiêu đề VARCHAR2 (10) * LỖI ở dòng 1:ORA-01441:không thể giảm độ dài cột vì một số giá trị quá lớn 

Điều này xảy ra vì dữ liệu hiện có không phù hợp với kích thước đó. Vì vậy, có thể tăng độ dài hoặc cập nhật cột đó

 SQL> bảng thay đổi Books_master sửa đổi tiêu đề VARCHAR2 (20); Bảng đã thay đổi. 

Giá trị mặc định của cột Oracle MODIFY

nếu chúng ta phải sửa đổi giá trị mặc định của cột

 SQL> thay đổi bảng BOOKS_MASTER sửa đổi BCOST mặc định 1000; Bảng đã thay đổi. 

Bây giờ, lần sau nếu bất kỳ lần chèn nào xảy ra và BCOST là null, nó sẽ có giá trị mặc định là 1000

 thay đổi bảng BOOKS_MASTER sửa đổi BCOST mặc định 1000; Đã thay đổi bảng.SQL> CHÈN VÀO Books_master (Book_Id, Title, Author, ISBN, Publish_Year) VALUES (21, 'Deception', 'Dan', 123,2001); 1 hàng đã được tạo .SQL> commit; commit complete.SQL> chọn BCOST từ Books_master trong đó book_id =21; BCOST ----- 1000 

Cột SỬA ĐỔI Oracle NULL hoặc NOT NULL

Chúng tôi có thể sửa đổi cột để cho phép null hoặc không nulls

 SQL> desc books_masterName Null? Nhập ---- --- ---- 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> bảng thay đổi BOOKS_MASTER sửa đổi PUBLISH_YEAR not null; Table đã thay đổi.SQL> desc books_masterName Null? Nhập ---- ---- ----- BOOK_ID NOT NULL NUMBER (6) TITLE VARCHAR2 (20) AUTHOR VARCHAR2 (50) ISBN NUMBER (6) BOOK_ID NOT NULL NUMBER (6) PUBLISH_YEAR NOT NULL NUMBER (4) 

Nếu bạn đang thay đổi thành không null, chúng tôi phải có giá trị hiện có, nếu không điều này sẽ không thành công

Khả năng hiển thị cột Oracle MODIFY

Chúng tôi có thể thay đổi mức độ hiển thị của cột bằng Sửa đổi cột

 SQL> desc books_masterName Null? Nhập ---- ---- ----- BOOK_ID NOT NULL NUMBER (6) TITLE VARCHAR2 (20) AUTHOR VARCHAR2 (50) ISBN NUMBER (6) BOOK_ID NOT NULL NUMBER (6) PUBLISH_YEAR NOT NULL NUMBER (4) SQL> thay đổi bảng BOOKS_MASTER sửa đổi PUBLISH_YEAR ẩn; Bảng đã thay đổi. Bây giờ cột trở nên vô hìnhSQL> desc books_masterName Null? Nhập ---- ---- ---- BOOK_ID NOT NULL NUMBER (6) TITLE VARCHAR2 (20) AUTHOR VARCHAR2 (50) ISBN NUMBER (6) BCOST NOT NULL NUMBER (6) SQL> bảng thay đổi BOOKS_MASTER sửa đổi PUBLISH_YEAR hiển thị; Bảng đã thay đổi. Bây giờ cột trở nên hiển thị .SQL> desc books_masterName Null? Nhập --- ----- ----- BOOK_ID NOT NULL NUMBER (6) TITLE VARCHAR2 (20) AUTHOR VARCHAR2 (50) ISBN NUMBER (6) BOOK_ID NOT NULL NUMBER (6) PUBLISH_YEAR NOT NULL NUMBER (4) 

Tôi hy vọng bạn thích bài đăng này trên bảng thay đổi oracle sửa đổi cột. Vui lòng cung cấp phản hồi

Cũng đã đọc
thay đổi bảng thêm cột oracle
thay đổi bảng đổi tên cột oracle
thả cột trong oracle
https://docs.oracle.com/cd/B28359_01/server.111/b28286/ statement_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. Tại sao một biến oracle plsql varchar2 cần một kích thước nhưng một tham số thì không?

  2. Chuyển đổi dấu thời gian thành ngày tháng trong Oracle SQL

  3. Làm cách nào để đếm số từ trong một chuỗi trong Oracle?

  4. cách tìm tất cả các chỉ mục và cột của chúng cho bảng, dạng xem và từ đồng nghĩa trong oracle

  5. KHÔNG VÀO lựa chọn với giá trị NULL