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;
# [NOT] DEFERRABLE 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';