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

Làm cách nào để mô tả một bảng trong Oracle mà không sử dụng lệnh DESCRIBE?

Bạn đang tìm kiếm USER_TAB_COLUMNS - tất cả các cột và mô tả của chúng trong lược đồ mà truy vấn được thực thi trong - hoặc ALL_TAB_COLUMNS - giống nhau ngoại trừ tất cả các bảng mà người dùng có quyền xem.

Một truy vấn điển hình có thể là:

select *
  from user_tab_columns
 where table_name = 'MY_TABLE'
 order by column_id

column_id là "thứ tự" của cột trong bảng.

Bạn nên đảm bảo rằng 'MY_TABLE' được viết hoa trừ khi bạn đang thêm các bảng có cách viết hoa (một ý tưởng tồi), trong trường hợp đó bạn cần sử dụng một cái gì đó như = "MyTable" .

Cụ thể là desc tương đương với phần sau mà tôi đã đánh cắp từ ss64, một tài nguyên Oracle tốt:

select column_name as "Name"
     , nullable as "Null?"
     , concat(concat(concat(data_type,'('),data_length),')') as "Type"
  from user_tab_columns
 where table_name = 'MY_TABLE';

Bạn có thể tìm thấy tất cả kiểu xem này bằng cách select * from dictionary , là cấp cao nhất của từ điển dữ liệu hoặc bằng cách xem tài liệu.

Ngoài ra còn có DBA_TAB_COLUMNS , giống với ALL_TAB_COLUMNS , nhưng đối với mọi bảng trong cơ sở dữ liệu. Điều này giả định rằng bạn có đặc quyền để xem cả nó và các bảng. Nếu bạn không có quyền truy cập vào bảng này, bạn cần có DBA để cấp cho bạn SELECT ANY DICTIONARY đặc ân.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01438:giá trị lớn hơn độ chính xác được chỉ định cho phép đối với cột này khi chèn 3

  2. GROUP BY hoạt động như thế nào?

  3. Làm cách nào để tạo Khóa ngoại với CASCADE BẬT CẬP NHẬT trên Oracle?

  4. Quản lý việc xử lý lỗi trong khi chạy sqlplus từ các tập lệnh shell

  5. Tại sao tôi không thể tạo trình kích hoạt trên các đối tượng do SYS sở hữu?