查看所有文章 (cdavid)


« 1 2 (3) 4 5 6 ... 10 »


類別與物件
站長
註冊日期:
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
應用擴展 工具箱



« 1 2 (3) 4 5 6 ... 10 »