文章目录
唯一约束、非空约束、主键约束都有自己的名字,只不过是系统自动给定的默认名称,我们也可以在创建约束的时候指定名称,这个需要使用constraint来创建。
DEMO:观察默认的约束名称
--删除数据表
DROP TABLE teacher PURGE;
--创建数据表
CREATE TABLE teacher(
tno NUMBER(4) PRIMARY KEY,--主键约束
tname VARCHAR2(10) UNIQUE,--唯一约束
tage NUMBER(3),
tdate DATE
);
--插入数据
INSERT INTO teacher VALUES(1001,‘X老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1002,‘Y老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1003,‘Z老师’,100,SYSDATE);
DEMO:指定自定义的约束名称
--删除列表
DROP TABLE teacher PURGE;
--创建数据表
CREATE TABLE teacher(
tno NUMBER(4),
tname VARCHAR(10),
tage NUMBER(3),
tdate DATE,
--创建主键约束(使用constraint关键字引导创建)
CONSTRAINT pk_tno PRIMARY KEY(tno),
--创建唯一约束(使用constraint关键字引导创建)
CONSTRAINT uk_tname UNIQUE(tname)
);
--插入数据
INSERT INTO teacher VALUES(1001,‘X老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1002,‘Y老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1003,‘Z老师’,100,SYSDATE);
除了以上三种约束之外还有其他约束比如检查约束,检查约束是可以为字段值进行简单的验证,比如要让年龄的范围是0~250岁,那么可以使用检查约束
DEMO:检查约束(CHECK)
--删除数据
DROP TABLE teacher PURGE;
--创建数据表
CREATE TABLE teacher (
tno NUMBER(4),
tname VARCHAR2(10),
tage NUMBER(3),
tdate DATE,
--创建主键约束
CONSTRAINT pk_tno PRIMARY KEY(tno),
--创建唯一约束
CONSTRAINT uk_tname UNIQUE(tname),
--创建检查约束
CONSTRAINT ck_tage CHECK(tage BETWEEN 0 AND 250)
);
--插入数据
INSERT INTO teacher VALUES(1001,‘X老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1002,‘Y老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1003,‘Z老师’,251,SYSDATE);
总结:
1、如果要指定约束的名称,那么需要使用CONSTRAINT引导创建 2、检查约束我们只是作为语法提出,在开发中不会去使用,因为很耗费性能,如果真有这样的需求是交给程序去实现。