在數據庫中,約束(constraint)是非常重要的概念。它可以保證數據的完整性和一致性,并幫助我們在開發數據庫應用時降低錯誤風險。使用Oracle數據庫時,可以通過各種類型的約束來保護數據的完整性。下面我們將介紹常見的幾種Oracle約束。
首先是非空約束(NOT NULL)。
CREATE TABLE employees ( emp_id NUMBER(5) PRIMARY KEY, emp_name VARCHAR2(50) NOT NULL, emp_phone VARCHAR2(20) );
這個例子中,emp_name列定義為NOT NULL,這意味著當我們向employees表插入新記錄時,該列必須包含一個非空值。如果我們忘記給emp_name分配值,則Oracle將拒絕該插入。
其次是唯一性約束(UNIQUE)。
CREATE TABLE employees ( emp_id NUMBER(5) PRIMARY KEY, emp_email VARCHAR2(50) UNIQUE, emp_addr VARCHAR2(200) );
在這個例子中,emp_email列被定義為UNIQUE。這意味著我們不能在該列中插入重復的值。如果我們嘗試在該列中插入帶有現有值的新記錄,則Oracle將拒絕該插入。
接下來是主鍵約束(PRIMARY KEY)。
CREATE TABLE employees ( emp_id NUMBER(5) PRIMARY KEY, emp_name VARCHAR2(50) NOT NULL, emp_phone VARCHAR2(20) );
在這個例子中,emp_id列被定義為PRIMARY KEY。這意味著它將作為employees表中記錄的唯一標識符。我們不能在該列中插入重復的值。如果我們嘗試在該列中插入帶有現有值的新記錄,則Oracle將拒絕該插入。
最后是外鍵約束(FOREIGN KEY)。
CREATE TABLE employees ( emp_id NUMBER(5) PRIMARY KEY, dept_id NUMBER(5), emp_name VARCHAR2(50) NOT NULL, CONSTRAINT fk_dept_id FOREIGN KEY (dept_id) REFERENCES departments(dept_id) );
在這個例子中,dept_id列被定義為FOREIGN KEY。這意味著它將參考departments表中的一個現有值。如果我們嘗試在dept_id列中插入一個不存在的值,Oracle將拒絕該插入,因為該值無法找到對應的departments表中的記錄。
總的來說,約束是Oracle數據庫中非常重要的概念。它們有助于保護數據的一致性和完整性,并減少了數據入庫時發生錯誤的風險。