查看所有文章 (cdavid)類別與物件 |
||
|---|---|---|
|
站長
![]()
註冊日期:
2007/2/15 16:05 來自 台北縣
所屬群組:
網站管理員 註冊會員 文章:
92
等級: 8; EXP: 57
HP : 0 / 189 MP : 30 / 1972 ![]() |
成員資料(Data Member):物件的資料部分,屬於基本資料型態的變數、常數或其他的成員變數
成員方法(Method Member):物件的操作部分,即程式與函數,也就是Java的方法。 宣告物件變數 Data yesterday, birthday, tomorrow; 建立物件實例 birthday = new Data(); 存取實例變數與方法 yesterday.year = 2005;物件.實例變數 yesterday.printDate();物件.實例方法 private修飾子:成員資料或成員方法只能在類別本身呼叫或存取。 public修飾子:成員資料或方法是此類別建立物件對外的使用介面,可以讓其他類別的程式碼呼叫此物件的實例方法或存取實例變數。 取得物件日期資料 setDate()、getDay()、gatMonth()、getYear() 使用this參考物件本身 this.day = day; this(m, d, 2005); 建構子需要使用new運算子建立物件 只有不是宣告成static部分才會建立獨立的實例變數和方法
發表日期:2007/7/16 17:13
|
|
工具箱
|
||
DBA配置使用者系統權限 |
||
|---|---|---|
|
站長
![]()
註冊日期:
2007/2/15 16:05 來自 台北縣
所屬群組:
網站管理員 註冊會員 文章:
92
等級: 8; EXP: 57
HP : 0 / 189 MP : 30 / 1972 ![]() |
建立USER帳號
CREATE USER user IDENTIFIED BY password; ex: CREATE USER scott IDENTIFIED BY tiger; 使用者的系統權限 GRANT privilege [, privilege...]TO user [, user...]; CREATE SESSION 連結資料庫的權限 CREATE TABLE 建置使用者自有的Table資料表格權限 CREATE SEQUENCE 建置使用者自有的Sequence序號物件權限 CREATE VIEW 建置使用者自有的View檢視表權限 CREATE PROCEDURE 建置使用者自有的Store Procedure、Function或Package物件權限 ex: GRANT create table,create sequence, create view TO scott; Grant賦予系統權限 DBA使用GRANT指令,來配置賦予使用者應有的系統權限。一旦配置完成,使用者可立即使用所配置的權限。 ex: GRANT create table,create sequence,create view TO scott; 賦予ROLE權限 ROLE被建置並賦予適當的權限後,可以整個ROLE的帳號,配置給使用者或其他的ROLES。 ex: CREATE ROLE manager; GRANT create table, create view to manager; GRANT manager to BLAKE, CLARK; 變更密碼 DBA可為每個使用者建立帳號,設置密碼。若有密碼異動需求,或使用者遺忘了自己曾改動的密碼,DBA可使用ALTER USER指令,為使用者變更密碼。 ALTER USER user IDENTIFIED BY password; ex: ALTER USER scott IDENTIFIED BY lion; 物件權限的特性 不同的物件權限,應用於不同種類的物件。物件擁有者自動擁有該物件的所有物件權限,並可將該物件權限,賦予其他使用者或ROLE。若在賦予的執行程序中,附加GRANT OPTION子句,則被賦予權限者,可再將該物件權限,轉授於其他使用者。若未附加該子句,則被賦予權限者,則無權執行轉授作業。 Object_priv:設定所要賦予的物件權限名稱。 ALL:指定該物件的所有權限。 Column:為資料表格或檢視表配置出,可被存取的特定欄位名稱。 ON object:設定指定權限賦予的物件名稱。 TO:設定被指定賦予物件權限的使用者帳號或ROLE。 PUBLIC:賦予指定的物件權限給所有的使用者。 WITH GRANT OPTION:為被賦予權限者,附加可再轉授賦予的權限。 賦予 EMP 資料表格的查詢權限 GRANT select ON emp TO sue, rich; 賦予更動特定欄位的權限給使用者及 roles GRANT update (dname, loc) ON dept TO scott, manager; 要賦予權限給他人或ROLE,必須是該物件的擁有者,或具有WITH GRANTOPTION轉授權限者。 物件擁有者,可賦予該物件的任何物件權限,給其他使用者或ROLE。 物件擁有者,自動擁有該物件的所有物件權限。 衹有DBA可以配置系統權限,一般使用者僅能配置其所擁有的物件權限。 使用WITH GRANT OPTION WITH GRANT OPTION的功能,用以賦予被賦予權限者,再轉授指定物件權限的權利。擁有WITH GRANT OPTION轉授權限者,若當初被賦予的權限,被收回時,作用範圍所及,包含其後再轉授的使用者或ROLE。 給予使用者可再賦予該權限給他人的權利 GRANT select, insert ON dept TO scott WITH GRANT OPTION; 運用 PUBLIC 角色, 賦予所有使用者可查詢 Alice’s DEPT 資料表格的權限 GRANT select ON alice.dept TO PUBLIC; Revoke回收物件權限 REVOKE指令,若附加CASCADE CONSTRAINT子句,收回父檔的物件權限時,會同時回收子檔對父檔進行關連欄位資料參照的權限。 REVOKE {privilege [, privilege...]|ALL} ON object FROM {user[, user...]|role|PUBLIC} [CASCADE CONSTRAINTS]; ex: REVOKE select, insert ON dept FROM scott; 收回使用者的物件權限時,若配置之初有附加WITH GRANT OPTION子句,則收回的範圍所及,會及於所有之後的再轉授範圍,一併回收指定的物件權限,不論其後的轉授過程是否冗長,或涉及多少個使用者或ROLE。
發表日期:2007/6/24 14:22
|
|
工具箱
|
||
Synonyms同名物件 |
||
|---|---|---|
|
站長
![]()
註冊日期:
2007/2/15 16:05 來自 台北縣
所屬群組:
網站管理員 註冊會員 文章:
92
等級: 8; EXP: 57
HP : 0 / 189 MP : 30 / 1972 ![]() |
為物件建立簡短的同義字名稱,簡化存取動作.
如欲參照其他擁有者的物件(資料表格). 簡化較長的物件名稱. CREATE [PUBLIC] SYNONYM synonym FOR object; 若有需參照使用其他使用者所建置的資料表格需求時,必須在該物件前,加上擁有者的名稱。此時可為該物件,建立一個簡短的同義字名稱,取代原需附加擁有者的物件全名,並提供該物件(如資料表格、檢視表、序號檔、執行程序或其他物件),另一個可供選擇的名稱。此方式尤其對有冗長名稱的物件,具有使用上的效益。 PUBLIC:設定可供所有使用者,共同使用的Synonyms同義字物件名稱。 Synonym:設定指定的Synonym同義字物件名稱。 Object:設定需建立Synonym同義字的物件名稱。 Package中,不能使用同義字物件名稱。 同一使用者所擁有的物件,不能有相同的同義字物件名稱。 建立Synonyms CREATE SYNONYM d_sum FOR dept_sum_vu; 刪除 synonym DROP SYNONYM d_sum; 建立Synonym 同義字名稱 除範例所示外,DBA可使用CREATE PUBLIC SYNONYM語法,為物件建立可供所有使用者共同使用的同義字名稱。 CREATE PUBLIC SYNONYM dept FOR alice.dept; 刪除Synonym 同義字名稱 使用DROP SYNONYM指令,可刪除物件的同義字名稱。刪除此物件名稱,對原來的物件無影響。衹有DBA有權刪除PUBLIC的Synonym同義字名稱。 DROP PUBLIC SYNONYM dept;
發表日期:2007/6/24 13:45
|
|
工具箱
|
||
Index索引檔 |
||
|---|---|---|
|
站長
![]()
註冊日期:
2007/2/15 16:05 來自 台北縣
所屬群組:
網站管理員 註冊會員 文章:
92
等級: 8; EXP: 57
HP : 0 / 189 MP : 30 / 1972 ![]() |
CREATE INDEX index
ON table (column[, column]...); 使用CREATE INDEX語法,為一個或多個欄位建立Index索引檔物件。 Index:設定Index索引檔名稱。 Table:設定所依附的資料表格名稱。 Column:設定指定資料表格中欲建置Index索引的欄位。 ex: CREATE INDEX emp_ename_idx ON emp(ename); 一個或多個欄位經常被使用於 WHERE 子句或連結關連性資料的 Join 條件. 該欄位的值涵蓋範圍很廣. 該欄位含有大量的 Null 值. 大型資料表格確常需查詢少於 2-4%的資料列. 查核Indexes 建置Index需適當,愈多的索引檔,並不表示都產生加速查詢的效率。若資料表格有頻繁的DML異動資料指令,在COMMIT時,Oracle需同時更新所有設置的索引檔資料內容。此時愈多的索引檔,反而會造成執行效能降低。 使用USER_INDEXES系統資料表格,可查核到所建置Index索引檔的資料。若配合USRE_IND_COLUMNS系統資料表格的查核,可檢核索引所對應的欄位名稱。 ex: SELECT ic.index_name,ic.column_name,ic.column_position col_pos,ix.uniqueness FROM user_indexes ix,user_ind_columns ic WHERE ic.index_name=ix.index_name AND ic.table_name = 'EMP'; 刪除Index Indexes索引物件,是不能被修改的,衹能刪除後再重建。使用DROP INDEX語法刪除索引物件時,會同時移除其在系統資料表格中的記錄。刪除Index物件,必須是該物件的擁有者,或具有DROP ANY INDEX系統權限者。 ex:DROP INDEX index;
發表日期:2007/6/24 13:33
|
|
工具箱
|
||
SEQUENCE 的語法 |
||
|---|---|---|
|
站長
![]()
註冊日期:
2007/2/15 16:05 來自 台北縣
所屬群組:
網站管理員 註冊會員 文章:
92
等級: 8; EXP: 57
HP : 0 / 189 MP : 30 / 1972 ![]() |
CREATE SEQUENCE sequence
[INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}]; 使用CREATE SEQUENCE語法,建立Sequence自動序號產生器物件。 SEQUENCE:設定Sequence物件名稱。 INCREMENT BY n:設定序號遞增或遞減的間隔數字,n是一個整數,若省略此子句的設定,其預設值為1。 START WITH n:設定第一個序號的起始數字,預設值為1。 MAXVALUE n:設定自動產生序號的最大值。 NOMAXVALUE:無最大值設定時,預設最大值,遞增時為10的27次方,遞減時為-1。 MINVALUE n:設定自動產生序號的最小值。 NOMINVALUE:無最小值設定時,預設最小值,遞增時為1,遞減時為-10的26次方。 CYCLE | NOCYCLE:設定序號到達最大值或最小值設定時,繼續循環式產生使用序號,或不產生使用序號。預設值為NOCYCLE。 CACHE n | NOCACHE:設定有多少個數值,讓Oracle資料庫,事先配置並保留於記憶體中使用,以加速執行效能。預設載入20個數值。 ex: CREATE SEQUENCE dept_deptno INCREMENT BY 1 START WITH 91 MAXVALUE 100 NOCACHE NOCYCLE; 查核Sequence資訊 Sequence物件建置完成後,會記錄於系統資料表格中。Sequence是資料庫物件之一,故可在USER_OBJECTS查到Sequence的資料。若要查核Sequence建置所設定的資訊,或目前狀態,可查核USER_SEQUENCES的內容。 ex: SELECT sequence_name,min_value,max_value,increment_by,last_number FROM user_sequences; NEXTVAL及CURRVAL 在NEXTVAL前加上Sequence物件名稱,用以從指定的Sequence物件,取得相繼的序號。如sequence.NEXTVAL,則新的唯一序號會被取出使用,並置放於CURRVAL中,可供查核。 CURRVAL虛擬欄位,用以查核目前使用者所取得的可使用的序號值。在目前使用者的Session中,必須先執行NEXTVAL,才能查到CURRVAL的數值。在CURRVAL前亦需加上Sequence物件名稱,如sequence.CURRVAL,則會參照回應並顯示目前使用者所使用的最後數值。 使用NEXTVAL及CURRVAL的規則 可使用於INSERT指令的SELECT次查詢語法中。 可使用於INSERT指令的VALUES子句中。 可使用於UPDATE指令的SET子句中。 不可用於View物件的SELECT語法中。 不可用於含DISTINCT保留字的SELECT語法中。 不可用於含GROUP BY、HAVING或ORDER BY子句的SELECT語法中。 不可用於SELECT、UPDATE、DELETE指令的次查詢語法中。 不可用於CREATE TABLE或ALTER TABLE的DEFAULT預設值設定。 ex: INSERT INTO dept(deptno, dname, loc) VALUES (dept_deptno.NEXTVAL, 'MARKETING','SAN DIEGO'); 修改Sequence 若使用Sequence物件的序號,已屆至所設定的MAXVALUE最大值限制,無法再配置序號時,會產生錯誤訊息。為了能繼續使用該Sequence物件,可使用ALTER SEQUENCE指令,修改序號物件的相關設定。 ALTER SEQUENCE sequence [ INCREMENT BY n ][ {MAXVALUE n | NOMAXVALUE} ][ {MINVALUE n | NOMINVALUE} ][ {CYCLE | NOCYCLE} ][ {CACHE n | NOCACHE} ]; ex: ALTER SEQUENCE dept_deptno INCREMENT BY 1 MAXVALUE 999999 NOCACHE NOCYCLE; 刪除Sequence 使用DROP SEQUENCE指令,刪除Sequence序號物件,需為該物件的擁有者,或擁有DROP ANY SEQUENCE系統權限者,才有權利執行刪除指令。 ex: DROP SEQUENCE sequence;
發表日期:2007/6/24 12:44
|
|
工具箱
|
||
MERGE語法 |
||
|---|---|---|
|
站長
![]()
註冊日期:
2007/2/15 16:05 來自 台北縣
所屬群組:
網站管理員 註冊會員 文章:
92
等級: 8; EXP: 57
HP : 0 / 189 MP : 30 / 1972 ![]() |
MERGE
把一個table的資料複製到一個新的table MERGE INTO copy_emp c USING employees e ON (c.employee_id = e.employee_id) WHEN MATCHED THEN UPDATE SET c.first_name = e.first_name c.last_name = e.last_name c.email = e.email c.salary = e.salary WHEN NOT MATCHED THEN INSERT VALUES(e.employee_id,e.first_name,e.last_name,e.email,e.salary);
發表日期:2007/6/24 11:28
|
|
工具箱
|
||
建立檢視表(view) |
||
|---|---|---|
|
站長
![]()
註冊日期:
2007/2/15 16:05 來自 台北縣
所屬群組:
網站管理員 註冊會員 文章:
92
等級: 8; EXP: 57
HP : 0 / 189 MP : 30 / 1972 ![]() |
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[, alias]...)]
AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]][WITH READ ONLY] 新增View時,需嵌入次查詢(Subqurey)子句,定義資料來源、範圍及條件。 OR REPLACE:使用於修改並重建已存在的View。 FORCE:強制建置一個View,不論資料來源的資料表格是否存在。 View:設定View 的名稱。 Alias:與SELECT指令所擷取的欄位名稱,對應的別名。 Subquery:完整的SELECT語法,用以擷取View所需的資料。 WITH CHECK OPTION:指定檢核於DML指令異動資料時,需符合View擷取資料時的設定條件。 Constraint:設定WITH CHECK OPTION時所賦予的Constraint 名稱。 WITH READ ONLY:設定不容許任何DML指令,在該View運作。 ex: CREATE VIEW empvu10 AS SELECT empno, ename, job FROM emp WHERE deptno = 10; 次查詢(Subquery)可包含複雜條件,如檔案連結、群組函數或其他次查詢。 次查詢中,不可包含ORDER BY 子句。 設定WITH CHECK OPTION子句時,若未設立Constraint名稱,系統會自動以SYS_Cn的名稱配置。 可使用OR REPLACE子句,變更View的定義,不需執行刪除及重建動作,亦可節省重新設定View的權限配置作業。 在 SQL*Plus 環境,以 DESCRIBE 指令檢核 View 的檔案結構 ex: describe emp10 查核View的資料 查核View資料的相關指令用法,如同查核一般資料表格般。顯示的結果,即為建立View時,所設定資料範圍。 ex: select * from emp10 修改View的定義 OR REPLACE指令,會重新建置並覆蓋已存在的View。不用刪除後再重建,甚或重新賦予使用者使用權限。若指定欄位名稱,需注意定需與次查詢中的欄位名稱相對應。 ex: create or replace view emp10 (id_number,name,sal,department_id) as select employee_id,last_name,salary,department_id from employees where department_id=40; 複合式的View 在次查詢的執行程序中,指定函數、運算式、其它次查詢或進行檔案連結,所建立的View即稱為複合式的View。因資料來源多樣化,甚或是運算後的結果,故不能接受DML指令的運作。 ex: CREATE VIEW dept_sum_vu (name, minsal, maxsal, avgsal) AS SELECT d.dname, MIN(e.sal), MAX(e.sal),AVG(e.sal) FROM emp e, dept d WHERE e.deptno = d.deptno GROUP BY d.dname; CHECK OPTION子句 在View要建立可維護資料完整性的資料檢核條件,可使用WITH CHECK OPTION子句的Constraint功能作用。WITH CHECK OPTION 設定當執行INSERT或UPDATE指令異動資料時,限定衹能異動符合View所擷取的資料範圍及設定條件。如範例所示,若欲將View資料中的部門編號,改為10,不符檢核條件,會出現錯誤訊息。 ex: CREATE OR REPLACE VIEW empvu20 AS SELECT * FROM emp WHERE deptno = 20 WITH CHECK OPTION CONSTRAINT empvu20_ck; READ ONLY子句 WITH READ ONLY子句,可確保該View,不容許有任何的DML指令的運作。包括INSERT、UPDATE或DELETE指令的運作,均會出現錯誤訊息。 ex: CREATE OR REPLACE VIEW emp10 (employee_number, employee_name, job_title) AS SELECT empno, ename, job FROM emp WHERE deptno = 10 WITH READ ONLY; 刪除VIEW 以DROP VIEW指令,刪除View時,系統亦會將該View的定義條件,從系統資料表格的記錄中移除。刪除View不會影響基本資料表格。若有使用該View的應用程式,則發生執行無效的狀況。衹有該View的擁有者,或擁有DROP ANY VIEW系統權限者,才可以刪除View。 ex:DROP VIEW emp10;
發表日期:2007/6/24 10:31
|
|
工具箱
|
||
Constraints約束條件 |
||
|---|---|---|
|
站長
![]()
註冊日期:
2007/2/15 16:05 來自 台北縣
所屬群組:
網站管理員 註冊會員 文章:
92
等級: 8; EXP: 57
HP : 0 / 189 MP : 30 / 1972 ![]() |
NOT NULL 設定該欄立不可含Null 值
UNIQUE 設定一個或多個欄位組合,資料內容需唯一不可重覆 PRIMARY KEY 設定資料表格不可重覆、空白或為Null的主鍵值 FOREIGN KEY 設定該欄位值的存在必須關連並參照指定資料表格的欄位值 CHECK 設定需符合所列示的條件值 注意事項 所有的Constraints資料均會存放在系統資料表格(Data Dictionary)中。建立Constraint時若賦予有意義的名稱,會較易查核Constraint的資料。Constraint標準的命名方式,應加入物件名稱。若未定名,則Oracle會自動以SYS_Cn的唯一名稱為之命名。USER_CONSTRAINTS可查核所設定的Constraintion資料。 設立Constraints CREATE TABLE [schema.]table (column datatype [DEFAULT expr] [column_constraint],... [table_constraint][,...]); Schema:與資料表格擁有者相同的名稱。 Table:設定資料表格名稱。 DEFAULT expr:為欄位設定預設值。 Column:設定資料表格內的欄位名稱。 Datatype:設定欄位資料型態及長度。 Column_constraint:設定欄位層級的約束條件,以維護資料的完整性。 Table_constraint:設定資料表格層級的約束條件,以維護資料的完整性。 ex: CREATE TABLE emp( empno NUMBER(4), ename VARCHAR2(10),... deptno NUMBER(7,2) NOT NULL, CONSTRAINT emp_empno_pk PRIMARY KEY (EMPNO)); 建立 Constraints 的層級 欄位層級的 constraint column [CONSTRAINT constraint_name] constraint_type, 資料表格層級的 constraint column,...[CONSTRAINT constraint_name] constraint_type(column, ...), Column 單一欄位的參照設定,可定義任何型態的Constraint。 Table 一個或多個欄位的參照設定,可定義除了NOT NULL以外的,任何型態Constraint。 NOT NULL Constraint的用途 新增資料時,Oracle會對不給值的欄位,預設填入Null值。若確保該欄位值不可為Null值,需於該欄位設定NOT NULL的Constraint條件,當資料異動時,即可自動執行資料內容檢核的動作。 ex: ..deptno NUMBER(7,2) CONSTRAINT emp_deptno_nn NOT NULL….. 使用 UNIQUE Constraint 為一個或組合性的欄位,設立UNIQUE Constraints可確保一個或組合性的欄位值的資料唯一。為一個欄立設立UNIQUE Constraint時,可接受Null值。 ex: CREATE TABLE dept( deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13), CONSTRAINT dept_dname_uk UNIQUE(dname)); 設立UNIQUE Constraint時,Oracle 會隱含式自動為所設立的欄位,建置Unique Index的索引檔。 PRIMARY KEYConstraint 每一個資料表格,僅能擁有一個PRIMARY KEY的Constraints,建立主鍵值。PRIMARY KEY可以是一個欄位或組合式欄位,其欄位值必須唯一且不可含Null值。 ex: CREATE TABLE dept( deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13), CONSTRAINT dept_dname_uk UNIQUE (dname), CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno)); 設立PRIMARY KEY Constraint時,Oracle 會隱含式自動為所設立的欄位,建置Unique Index的索引檔。 FOREIGN KEYConstraint FOREIGN KEY是維護資料庫資料完整性的Constraint。以FOREIGN KEY偵測一個或組合式欄位,與自有的或其他資料表格的PRIMARY KEY或UNIQUE Constraint欄位建立資料關連。如主檔與明細檔(父子檔)間的關連。單一的 FOREIGN KEY欄位,可接受Null值。設有FOREIGN KEY Constraint條件的欄位值(子檔),必須參照並符合被參照檔(父檔),已存在的欄位值。 ex: CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) REFERENCES dept (deptno)); FOREIGN KEY要設定前,應先確定所要參照的PRIMARY KEY 或 UNIQUE 已事先設置完成,可供參照。 FOREIGN KEY 的保留字 FOREIGN KEY定義於子檔中,且子檔含有可參照父檔的關連欄位。 FOREIGN KEY的設定,由下列保留字所組成: FOREIGN KEY:於子檔設定可關連參照的欄位。 REFERENCES:用以指定所參照的資料表格名稱及欄位名稱。 ON DELETE CASCADE:設定當父檔的資料刪除時,子檔中相關連的明細資料,亦會一併被刪除。 若未設定ON DELETE CASCADE,在刪除父檔的資料時,若子檔仍有相關連的明細資料存在,會產生錯誤訊息。 CHECK Constraint 若以CHECK Constraint為欄位設定列示值條件,資料表格中的每一筆資料列,均需符合所列示的限制條件。一個欄位,可設定多個CHECK Constraint列示條件,衹要邏輯條件不衝突,CHECK Constraint 的個數不限。CHECK Constraint,可設立於資料表格或欄位層級。 ex: CONSTRAINT emp_deptno_ck CHECK (DEPTNO BETWEEN 10 AND 99),... 每一資料列的資料內容,均需滿足檢核條件 不可做為檢核條件的表述句: 參照 CURRVAL, NEXTVAL, LEVEL, 及 ROWNUM 等虛擬欄位名稱呼叫 SYSDATE, UID, USER, 及 USERENV 等函數使用 以其它資料列的資料內容做為檢核條件 新增Constraints 於資料表格建置完成後,可使用ALTER TABLE..ADD方式新增Constraint。 Table:設定資料表格名稱。 Constraint:Constraint的保留字及所指定的Constraint名稱。 Type:設定所要新增的Constraint 種類。 Column:設定Constraint運作的欄位名稱。 ALTER TABLE table ADD [CONSTRAINT constraint] type (column); Constraint可以新增、刪除、啟動或關閉,但不能更改其架構。 欲在已建置完成的資料表格,新增NOT NULL Constraint時,需於 ALTER TABLE 指令中,使用 MODIFY子句,否則無法設立。新增NOT NULL Constraint 時,若資料表格中已有資料,Constraint會進行檢核,若已存在有Null值,設立Constraint時會產生錯誤訊息。 ex: ALTER TABLE emp ADD CONSTRAINT emp_mgr_fk FOREIGN KEY(mgr) REFERENCES emp(empno); 刪除Constraints 刪除Constraint前,可先查核系統資料表格中的USER_CONSTRAINTS及USER_CONS_COLUMNS資料內容。確定需求後,再進行刪除作業。 ALTER TABLE table DROP PRIMARY KEY | UNIQUE (column) | CONSTRAINT constraint [CASCADE]; DROP指令,若使用CASCADE子句,可將有參照關連的Constraint一併刪除。 關閉Constraints 對於不想刪除再重建的Constraint,可使用ALTER TABLE..DISABLE指令,暫時性關閉Constraint的檢核作用。 ALTER TABLE emp DISABLE CONSTRAINT emp_empno_pk CASCADE; DISABLE子句,可使用於CREATE TABLE 及ALTER TABLE語法中。 CASCADE子句,可同時關閉有參照關連的Constraint作用。 啟動Constraints 對於被設定為DISABLE的Constraint,可使用ALTER TABLE…..ENABLE指令,重新啟動Constraint的檢核作用。 ALTER TABLE table ENABLE CONSTRAINT constraint; 啟動Constraint作用時,會對資料表格中的所有資料列,檢核欄位值的合理性,故已存在的資料內容,需符合Constraint 的檢核條件。 啟動UNIQUE或PRIMARY KEY的Constraint 時,Oralce會自動為所設定的欄位,建置一個Unique Index索引檔。 ENABLE子句,可使用於CREATE TABLE 及ALTER TABLE語法中。 查核Constraints資訊 資料表格建置完成後,若以DESC指令查驗資料表格的檔案結構,針對Constraint,衹能查看是否有NOT NULL的Constraint記錄。若要查看資料表格上的所有Constraint設定,可查核USER_CONSTRAINTS系統資料表格檔。若Constraint設立之初,使用者未設定Constraint名稱,所查看到的會是系統所配置的系統名稱。 SELECT constraint_name,constraint_type,search_condition FROM user_constraints WHERE table_name = 'EMP'; USER_CONSTRAINT的Constraint Type欄位值定義: P:Primary key。 R:Foreign key。 U:Unique。 C:Check 或 Not Null。 查核USER_CONS_COLUMNS USER_CONS_COLUMNS系統資料表格,可查核Constraint所對應的欄位名稱。尤其是查核系統自動配置的系統名稱(SYS_Cn)所對應的欄位,非常有效。常與USER_CONSTRAINTS的查核,搭配使用。 ex: SELECT constraint_name,column_name FROM user_cons_columns WHERE table_name = 'EMP';
發表日期:2007/6/19 20:02
|
|
工具箱
|
||
為資料表格加註釋(Comments) |
||
|---|---|---|
|
站長
![]()
註冊日期:
2007/2/15 16:05 來自 台北縣
所屬群組:
網站管理員 註冊會員 文章:
92
等級: 8; EXP: 57
HP : 0 / 189 MP : 30 / 1972 ![]() |
COMMENT ON TALBE table | COLUMN table.column IS 'text';
COMMENT指令,可為Table、View加入註釋說明,一個欄位可容納2000個字元。註釋資料,會存放於系統資料表格(Data Dictionary)內供查核。 如: ALL_COL_COMMENTS。 USER_COL_COMMENTS。 ALL_TAB_COMMENTS。 USER_TAB_COMMENTS。 ex: COMMENT ON TABLE emp IS 'Employee Information'; 取消註釋的方式,以連續兩個單引號的空字串方式,取消註釋資料內容。 COMMENT ON TABLE emp IS '';
發表日期:2007/6/19 17:58
|
|
工具箱
|
||
Truncating 資料表格內的資料 |
||
|---|---|---|
|
站長
![]()
註冊日期:
2007/2/15 16:05 來自 台北縣
所屬群組:
網站管理員 註冊會員 文章:
92
等級: 8; EXP: 57
HP : 0 / 189 MP : 30 / 1972 ![]() |
TRUNCATE TABLE table;
移除資料表格內的所有資料列 釋放資料表格所佔用的儲存空間 TRUNCATE 指令無法還原(Rollback) 亦可使用DELETE指令刪除資料列,但無法釋放資料表格所佔用的儲存空間。 ex: TRUNCATE TABLE department;
發表日期:2007/6/19 17:54
|
|
工具箱
|
||


工具箱