的字符Oracle中固定不能为空的字符(oracle中不为空格)
Oracle中固定不能为空的字符
在Oracle数据库中,有些字符属性是固定不能为空的,这些字符属性在创建表时就需要被设定好。本文将介绍这些属性以及如何处理它们。
1. NOT NULL
NOT NULL是最常见的固定不能为空的字符属性。 在创建表时,如果一个列被定义为 NOT NULL,则在插入数据时不允许该列为空。 若尝试在该列中插入NULL值,将会抛出一个错误。
以下是一个示例代码创建一个简单的表stu,其中定义了id和name两个字段。 id字段必须为非空值;但是,由于未定义name字段为非空字段,因此可以插入空值:
CREATE TABLE stu (
id NUMBER(5) NOT NULL, name VARCHAR2(20)
);
插入数据时,插入NULL值会导致错误:
INSERT INTO stu (id, name) VALUES (1, NULL);
2. PRIMARY KEY
PRIMARY KEY也是固定不能为空的字符属性,但是它比NOT NULL更具特殊性。 PRIMARY KEY是表中的唯一标识符,没有两行记录可以有相同的主键值。
以下是一个示例代码创建一个带有主键的表stu2,id字段是非空并且是主键:
CREATE TABLE stu2 (
id NUMBER(5) PRIMARY KEY, name VARCHAR2(20)
);
插入一个具有相同ID的记录将导致唯一约束冲突的错误:
INSERT INTO stu2 (id, name) VALUES (1, 'Alice');
INSERT INTO stu2 (id, name) VALUES (1, 'Bob');
3. UNIQUE
UNIQUE约束是另一个固定不能为空的字符属性。 UNIQUE约束保证列中的所有值都是唯一的,但与主键不同,UNIQUE允许列中包含NULL值。
以下是一个示例代码创建一个带有UNIQUE约束的表stu3,name字段是非空并且具有唯一性:
CREATE TABLE stu3 (
id NUMBER(5), name VARCHAR2(20) NOT NULL UNIQUE
);
插入一个具有相同名称的记录将导致唯一约束冲突的错误:
INSERT INTO stu3 (id, name) VALUES (1, 'Alice');
INSERT INTO stu3 (id, name) VALUES (2, 'Alice');
插入一个具有NULL名称的记录是允许的:
INSERT INTO stu3 (id, name) VALUES (3, NULL);
4. FOREIGN KEY
FOREIGN KEY就是外键,是另一个固定不能为空的字符属性。 它在两个表之间创建关联,FOREIGN KEY约束确保只有存在于另一个表中的相应记录才能在此表中插入。
以下是一个示例代码创建带有外键的表dep和emp。 dep表中的ID是主键,并且与emp表中的dept_id字段相关联。 emp表中的dept_id字段是一个FOREIGN KEY,并且引用了dep表中的ID字段。
CREATE TABLE dep (
id NUMBER(5) PRIMARY KEY, name VARCHAR2(20) NOT NULL
);
CREATE TABLE emp ( id NUMBER(5) PRIMARY KEY,
name VARCHAR2(20) NOT NULL, dept_id NUMBER(5) NOT NULL REFERENCES dep(id)
);
插入一个不存在于dep表中的部门会导致外键冲突的错误:
INSERT INTO emp (id, name, dept_id) VALUES (1, 'Alice', 100);
插入一个存在于dep表中的部门是可以的:
INSERT INTO dep (id, name) VALUES (100, 'IT');
INSERT INTO emp (id, name, dept_id) VALUES (1, 'Alice', 100);
本文介绍了Oracle中固定不能为空的字符属性,包括NOT NULL、PRIMARY KEY、UNIQUE和FOREIGN KEY。 掌握这些约束可以帮助您更好地设计和控制数据库表。