今天我们谈一谈数据库中的约束,相信对于使用Oracle数据库的开发人员来说,约束一定不会陌生。那么,什么是约束?
数据库中的约束是为了保证数据完整性和一致性而引入的规则,这些规则定义了列或者表之间的关系,确保了数据不会出现不合法的情况。
1. 非空约束(NOT NULL)
CREATE TABLE customer ( customer_id NUMBER(10), name VARCHAR2(100) NOT NULL, email VARCHAR2(255), phone VARCHAR2(20) );
在这个例子中,我们定义了一个名为customer的表,其中的name列被标记为NOT NULL约束。这意味着如果我们向这个表中插入一条记录,name列不能为空。
2. 唯一约束(UNIQUE)
CREATE TABLE customer ( customer_id NUMBER(10), email VARCHAR2(255) UNIQUE, phone VARCHAR2(20) );
在这个例子中,我们定义了一个名为customer的表,其中的email列被标记为UNIQUE约束。这意味着email列的所有值必须是唯一的。如果我们试图向这个表中插入一个已经存在的email值,将会抛出一个错误。
3. 主键约束(PRIMARY KEY)
CREATE TABLE customer ( customer_id NUMBER(10) PRIMARY KEY, email VARCHAR2(255), phone VARCHAR2(20) );
在这个例子中,我们定义了一个名为customer的表,其中的customer_id列被标记为PRIMARY KEY约束。这意味着customer_id列的所有值必须是唯一的,并且不能为NULL。主键约束也可以跨越多个列,但是不是所有的DBMS都支持这个功能。
4. 外键约束(FOREIGN KEY)
CREATE TABLE order ( order_id NUMBER(10) PRIMARY KEY, customer_id NUMBER(10), FOREIGN KEY (customer_id) REFERENCES customer(customer_id) );
在这个例子中,我们定义了一个名为order的表,其中的customer_id列被标记为FOREIGN KEY约束。这意味着customer_id列的所有值必须是customer表中的customer_id列的值之一。这个约束确保了order表中的每条记录都直接关联着customer表中的一条记录。
以上就是Oracle数据库中的一些常见约束类型。当你创建表格或者进行数据操作时,应该根据实际需求选择合适的约束类型来保证数据的完整性和一致性。