文档课题:oracle表字段设置为unused的相关知识.
数据库:oracle 19.3
表emp_test相关信息.
SQL> select table_name,column_name,data_type,data_length,data_precision,data_scale,to_char(last_analyzed,'yyyy-mm-dd hh24:mi:ss') from user_tab_columns where table_name='EMP_TEST'
TABLE_NAME COLUMN_NAME DATA_TYPE DATA_LENGTH DATA_PRECISION DATA_SCALE TO_CHAR(LAST_ANALYZ
--------------- -------------------- --------------- ----------- -------------- ---------- -------------------
EMP_TEST EMPLOYEE_ID NUMBER 22 6 0 2022-09-04 12:10:17
EMP_TEST FIRST_NAME VARCHAR2 9 2022-09-04 12:10:17
EMP_TEST LAST_NAME VARCHAR2 25 2022-09-04 12:10:17
EMP_TEST EMAIL VARCHAR2 25 2022-09-04 12:10:17
EMP_TEST PHONE_NUMBER VARCHAR2 20 2022-09-04 12:10:17
EMP_TEST HIRE_DATE TIMESTAMP(6) 11 6 2022-09-04 12:10:17
EMP_TEST JOB_ID VARCHAR2 12 2022-09-04 12:10:17
EMP_TEST SALARY NUMBER 22 8 2 2022-09-04 12:10:17
EMP_TEST COMMISSION_PCT NUMBER 22 2 2 2022-09-04 12:10:17
EMP_TEST MANAGER_ID NUMBER 22 6 0 2022-09-04 12:10:17
EMP_TEST DEPARTMENT_ID NUMBER 22 4 0 2022-09-04 12:10:17
11 rows selected.
SQL> desc emp_test
Name Null? Type
----------------------------------------------------- -------- ------------------------------------
EMPLOYEE_ID NUMBER(6)
FIRST_NAME VARCHAR2(9)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL TIMESTAMP(6)
JOB_ID NOT NULL VARCHAR2(12)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
设置email字段为unused.
SQL> alter table emp_test set unused (email);
Table altered.
再次查询,email字段不再显示.
SQL> select table_name,column_name,data_type,data_length,data_precision,data_scale,to_char(last_analyzed,'yyyy-mm-dd hh24:mi:ss') from user_tab_columns where table_name='EMP_TEST'
2*
TABLE_NAME COLUMN_NAME DATA_TYPE DATA_LENGTH DATA_PRECISION DATA_SCALE TO_CHAR(LAST_ANALYZ
--------------- -------------------- --------------- ----------- -------------- ---------- -------------------
EMP_TEST EMPLOYEE_ID NUMBER 22 6 0 2022-09-04 12:10:17
EMP_TEST FIRST_NAME VARCHAR2 9 2022-09-04 12:10:17
EMP_TEST LAST_NAME VARCHAR2 25 2022-09-04 12:10:17
EMP_TEST PHONE_NUMBER VARCHAR2 20 2022-09-04 12:10:17
EMP_TEST HIRE_DATE TIMESTAMP(6) 11 6 2022-09-04 12:10:17
EMP_TEST JOB_ID VARCHAR2 12 2022-09-04 12:10:17
EMP_TEST SALARY NUMBER 22 8 2 2022-09-04 12:10:17
EMP_TEST COMMISSION_PCT NUMBER 22 2 2 2022-09-04 12:10:17
EMP_TEST MANAGER_ID NUMBER 22 6 0 2022-09-04 12:10:17
EMP_TEST DEPARTMENT_ID NUMBER 22 4 0 2022-09-04 12:10:17
10 rows selected.
通过数据字典user_unused_col_tabs查出某表有几个字段被设置为unused.
SQL> desc user_unused_col_tabs;
Name Null? Type
----------------------- -------- ----------------
TABLE_NAME NOT NULL VARCHAR2(128)
COUNT NUMBER
SQL> select * from user_unused_col_tabs;
TABLE_NAME COUNT
--------------- ----------
EMP_TEST 1
说明:如上所示,表emp_test有1个字段被设置为unused,但目前未找到查询具体哪个字段被设置为unused的视图.
删除unused字段.
SQL> alter table emp_test drop unused column;
Table altered.
SQL> select * from user_unused_col_tabs;
no rows selected