SQL> --創建表order_status2
SQL> CREATE TABLE order_status2 (
2 id INTEGER
3 CONSTRAINT order_status2_pk PRIMARY KEY,
4 status VARCHAR2(10),
5 last_modified DATE DEFAULT SYSDATE
6 );
SQL> --在表order_status2中增加一個字段modified_by
SQL> ALTER TABLE order_status2
2 ADD modified_by INTEGER;
SQL> --在表order_status2中增加一個字段initially_created
SQL> ALTER TABLE order_status2
2 ADD initially_created DATE DEFAULT SYSDATE NOT NULL;
SQL> --修改表order_status2中status字段的長度從varchar2(10)為varchar2(15)
SQL> ALTER TABLE order_status2
2 MODIFY status VARCHAR2(15);
SQL> --修改表order_status2的id字段從number(38)為number(5)
SQL> ALTER TABLE order_status2
2 MODIFY id NUMBER(5);
SQL> --修改order_status2中字段status的數據類型
SQL> ALTER TABLE order_status2
2 MODIFY status CHAR(15);
SQL> --修改列的默認值
SQL> ALTER TABLE order_status2
2 MODIFY last_modified DEFAULT SYSDATE-1;
SQL> --刪除列
SQL> ALTER TABLE order_status2
2 DROP COLUMN initially_created;
SQL> --CHECK約束
SQL> ALTER TABLE order_status2
2 ADD CONSTRAINT order_status2_status_ck
3 CHECK (status IN ('PLACED','PENDING','SHIPPED'));
SQL> ALTER TABLE order_status2
2 ADD CONSTRAINT order_status2_id_ck CHECK (id>0);
SQL> --NOT NULL約束
SQL> ALTER TABLE order_status2
2 MODIFY status CONSTRAINT order_status2_status_nn NOT NULL;
SQL> --NOT NULL約束,注意此處增加NOT NULL約束使用的是MODIFY關鍵字而不是ADD
SQL> --CONSTRAINT后面跟的是該約束的名稱,
SQL> --雖然不使用CONSTRAINT指定名稱,數據庫會自動分配一個約束的名稱,
SQL> --但是這樣并不利于數據庫的維護,建議再增加約束時指定有意義的約束名稱
SQL> ALTER TABLE order_status2
2 MODIFY modified_by CONSTRAINT order_status2_modified_by_nn NOT NULL;
SQL> --從order_status表中刪除modified_by列,
SQL> --目地是清楚之前modified_by列上的約束
SQL> ALTER TABLE order_status2
2 DROP COLUMN modified_by;
SQL> --FOREIGN KEY約束,設置級聯,
SQL> --當刪除employees表中某條記錄,同時刪除order_status2表中相關記錄
SQL> ALTER TABLE order_status2
2 ADD CONSTRAINT order_status2_modified_by_fk
3 modified_by REFERENCES employees (employee_id) ON DELETE CASCADE;
SQL> --從order_status表中刪除modified_by列,
SQL> --目地是清楚之前modified_by列上的約束
SQL> ALTER TABLE order_status2
2 DROP COLUMN modified_by;
SQL> ALTER TABLE order_status2
2 ADD CONSTRAINT order_status2_modified_by_fk
3 modified_by REFERENCES employees (employee_id) ON DELETE SET NULL;
SQL> --添加UNIQUE約束
SQL> ALTER TABLE order_status2
2 ADD CONSTRAINT order_status2_status_uq UNIQUE (status);
--刪除約束
ALTER TABLE order_status2
DROP CONSTRAINT order_status2_status_uq;
SQL> CREATE TABLE order_status2 (
2 id INTEGER
3 CONSTRAINT order_status2_pk PRIMARY KEY,
4 status VARCHAR2(10),
5 last_modified DATE DEFAULT SYSDATE
6 );
SQL> --在表order_status2中增加一個字段modified_by
SQL> ALTER TABLE order_status2
2 ADD modified_by INTEGER;
SQL> --在表order_status2中增加一個字段initially_created
SQL> ALTER TABLE order_status2
2 ADD initially_created DATE DEFAULT SYSDATE NOT NULL;
SQL> --修改表order_status2中status字段的長度從varchar2(10)為varchar2(15)
SQL> ALTER TABLE order_status2
2 MODIFY status VARCHAR2(15);
SQL> --修改表order_status2的id字段從number(38)為number(5)
SQL> ALTER TABLE order_status2
2 MODIFY id NUMBER(5);
SQL> --修改order_status2中字段status的數據類型
SQL> ALTER TABLE order_status2
2 MODIFY status CHAR(15);
SQL> --修改列的默認值
SQL> ALTER TABLE order_status2
2 MODIFY last_modified DEFAULT SYSDATE-1;
SQL> --刪除列
SQL> ALTER TABLE order_status2
2 DROP COLUMN initially_created;
SQL> --CHECK約束
SQL> ALTER TABLE order_status2
2 ADD CONSTRAINT order_status2_status_ck
3 CHECK (status IN ('PLACED','PENDING','SHIPPED'));
SQL> ALTER TABLE order_status2
2 ADD CONSTRAINT order_status2_id_ck CHECK (id>0);
SQL> --NOT NULL約束
SQL> ALTER TABLE order_status2
2 MODIFY status CONSTRAINT order_status2_status_nn NOT NULL;
SQL> --NOT NULL約束,注意此處增加NOT NULL約束使用的是MODIFY關鍵字而不是ADD
SQL> --CONSTRAINT后面跟的是該約束的名稱,
SQL> --雖然不使用CONSTRAINT指定名稱,數據庫會自動分配一個約束的名稱,
SQL> --但是這樣并不利于數據庫的維護,建議再增加約束時指定有意義的約束名稱
SQL> ALTER TABLE order_status2
2 MODIFY modified_by CONSTRAINT order_status2_modified_by_nn NOT NULL;
SQL> --從order_status表中刪除modified_by列,
SQL> --目地是清楚之前modified_by列上的約束
SQL> ALTER TABLE order_status2
2 DROP COLUMN modified_by;
SQL> --FOREIGN KEY約束,設置級聯,
SQL> --當刪除employees表中某條記錄,同時刪除order_status2表中相關記錄
SQL> ALTER TABLE order_status2
2 ADD CONSTRAINT order_status2_modified_by_fk
3 modified_by REFERENCES employees (employee_id) ON DELETE CASCADE;
SQL> --從order_status表中刪除modified_by列,
SQL> --目地是清楚之前modified_by列上的約束
SQL> ALTER TABLE order_status2
2 DROP COLUMN modified_by;
SQL> ALTER TABLE order_status2
2 ADD CONSTRAINT order_status2_modified_by_fk
3 modified_by REFERENCES employees (employee_id) ON DELETE SET NULL;
SQL> --添加UNIQUE約束
SQL> ALTER TABLE order_status2
2 ADD CONSTRAINT order_status2_status_uq UNIQUE (status);
--刪除約束
ALTER TABLE order_status2
DROP CONSTRAINT order_status2_status_uq;