二、数据表管理

 
  1.ALTER TABLE Table_Name ADD Column_Name TYPE[(SIZE)] [NOT NULL] [DEFAULT n];
 
  SQL> alter table SYS.USER_TAB add sex_info char(10) not null;
 
  2.ALTER TABLE Table_Name DROP COLUMN Column_Name;
 
  SQL> alter table SYS.USER_TAB drop column sex_info;
  
  3.ALTER TABLE Table_Name MODIFY Column_Name TYPE[(SIZE)];
 
  SQL> alter table SYS.USER_TAB modify sex_info varchar2(10);
 
  4.ALTER TABLE Table_Name RENAME COLUMN Column_Name_old TO Column_Name_New;
 
  SQL> alter table SYS.USER_TAB rename column sex_info to address;
 
  5.ALTER TABLE Table_Name RENAME TO Table_Name_New; → RENAME Table_Name TO Table_Name_New;
 
  SQL> alter table SYS.USER_TAB rename to SYS.USER_INFO;
    ERROR at line 1:
    ORA-14047: ALTER TABLE|INDEX RENAME may not be combined with other operations
  --> SQL> alter table SYS.USER_TAB rename to USER_INFO;
  
  6.ALTER TABLE Table_Name MOVE [TABLESPACE Tablespace_Name];
 
  ROWID(Change) --> USER_INDEXES.STATUS → UNUSABLE:
  SQL> ALTER INDEX Index_Name REBUILD [ONLINE] [TABLESPACE Tablespace_Name];
  
  7.ALTER TABLE Table_Name ENABLE/DISABLE ROW MOVEMENT;
    # ASSM(AUTO SEGMENT SPACE MANAGEMENT).
 
  8.COMMENT ON TABLE/COLUMN ... IS ...
 
SQL> COMMENT ON TABLE user_info IS 'USERINFO'; 
    SQL> COMMENT ON COLUMN user_info.deptid IS 'DEPARTMENT_ID'; 
 
SQL> select * from USER_TAB_COMMENTS where table_name='USER_INFO';
SQL> select * from USER_COL_COMMENTS where table_name='USER_INFO';
 

 
三、Constraint_Management
 
  1.PRIMARY KEY:
  
  SQL> ALTER TABLE user_info ADD [CONSTRAINT Constraint_Name] PRIMARY KEY(userid);
 
  SQL> select constraint_name,column_name from USER_CONS_COLUMNS where table_name='USER_INFO';
 
  SQL> ALTER TABLE user_info DROP CONSTRAINT SYS_C005900;
 
  SQL> ALTER TABLE user_info DROP PRIMARY KEY KEEP INDEX; [CASCADE]
  
  2.FOREIGN KEY:
 
  SQL> ALTER TABLE user_info ADD [CONSTRAINT Constraint_Name] 
       FOREIGN KEY(deptid) REFERENCES dept_info(deptid) [ON DELETE CASCADE];
 
  # ON DELETE [Cascade | Set Null | No Action(default)];
 
  SQL> ALTER TABLE user_info DROP CONSTRAINT ... 
    ==> SQL> ALTER TABLE dept_info DROP PRIMARY KEY CASCADE
 
  3.CHECK CONSTRAINT:
 
  SQL> ALTER TABLE user_info ADD [CONSTRAINT Constraint_Name] CHECK(sex in ('Woman','Man'));
 
  4.UNIQUE CONSTRAINT:
 
  SQL> ALTER TABLE dept_info ADD CONSTRAINT uq_deptinfo_name UNIQUE(deptname);
 
  5.CONSTRAINT STATUS:
  
  # ENABLE/DISABLE and VALIDATE/NOVALIDATE:
 
  SQL> ALTER TABLE dept_info RENAME CONSTRAINT uq_dept_info TO uq_deptinfo_name; 
 
SQL> ALTER TABLE user_info ENABLE/DISABLE CONSTRAINT SYS_C005908;
 
SQL> ALTER TABLE dept_info DISABLE PRIMARY KEY CASCADE; → FOREIGN_KEY.
 
SQL> ALTER TABLE dept_info ADD/MODIFY [CONSTRAINT Constraint_Name] PRIMARY KEY
     ENABLE/DISABLE VALIDATE/NOVALIDATE;
 
  # [NOTDEFERRABLE INITIALLY [DEFERRED|IMMEDIATE]:
 
  SQL> ALTER TABLE user_info ADD/MODIFY CONSTRAINT fk_emp_info
         FOREIGN KEY(deptno) REFERENCES dept(deptno)
         DEFERRABLE INITIALLY DEFERRED; --DEFERRED(COMMIT,CHECK)/IMMEDIATE.
    
  --DEFERRABLE → SET CONSTRAINTS ...
  SQL> ALTER TABLE user_info ADD CONSTRAINT pk_user_id PRIMARY KEY(userid) DEFERRABLE; 
  SQL> SET CONSTRAINTS Constraint_Name/All IMMEDIATE/DEFERRED;
 
  6.EXCEPTIONS INTO EXCEPTIONS:
  
  SQL> @ ?/rdbms/admin/utlexcpt.sql /* ?/rdbms/admin/utlexcpt1.sql */.
  SQL> ALTER TABLE user_info ENABLE PRIMARY KEY EXCEPTIONS INTO EXCEPTIONS
  SQL> SELECT * FROM EXCEPTIONS;
  DISABLE CONSTRAINT → (2)INSERT/UPDATE INTO...
  ENABLE...EXCEPTIONS INTO EXCEPTIONS → (4)SELECT * FROM EXCEPTIONS;
  DELETE FROM ...WHERE ROWID...;
 
  7.DBA_/ALL_/USER_CONSTRAINTS|DBA_/ALL_/USER_CONS_COLUMNS:
  
  SQL> SELECT constraint_name,constraint_type,status,deferrable,deferred 
       FROM USER_CONSTRAINTS WHERE table_name='USER_INFO';
  
  CONSTRAINT_NAME CONSTRAINT_TYPE STATUS          DEFERRABLE      DEFERRED
  --------------- --------------- --------------- --------------- ----------
  SYS_C005905     C               ENABLED         NOT DEFERRABLE  IMMEDIATE
  SYS_C005908     R               ENABLED         NOT DEFERRABLE  IMMEDIATE
  
  Type of Constraint Definition:
 
C:(check constraint on a table) | P:(primary key) | U:(unique key) | R:(referential integrity) 
 
V:(with check option, on a view) | O:(with read only, on a view).
  
  SQL> SELECT ucc.column_name,ucc.constraint_name,uc.constraint_type,uc.status 
       FROM USER_CONSTRAINTS uc,USER_CONS_COLUMNS ucc 
       WHERE uc.TABLE_NAME = ucc.table_name AND uc.CONSTRAINT_NAME = ucc.constraint_name 
       AND ucc.table_name = 'USER_INFO';