hello oracle II

索引

CREATE INDEX idx_person_nameage ON T_Person(FName,FAge) 

Oracle 中的DROP INDEX语句不要求指定表名,只要指定索引名即可

DROP INDEX idx_person_name; 

约束

非空约束

指定一个字段为空的方式就是在字段定义后增加 NOT NULL

惟一性约束

单字段唯一约束,复合字段唯一约束

如果希望一个字段在表中的值是唯一的,那么就可以将唯一约束设置到这个字段上,设置方式就是在字段定义后增加UNIQUE

CREATE TABLE T_Person (FNumber VARCHAR2(20)  UNIQUE, 
FName VARCHAR2(20),FAge NUMBER (10)) 

复合唯一约束是建立在多个字段上的约束,被约束的字段在不能同时重复

CREATE TABLE T_Person (FNumber VARCHAR2(20), 
FDepartmentNumber VARCHAR(20), 
FName VARCHAR2(20),FAge NUMBER (10), 
CONSTRAINT unic_dep_num UNIQUE(FNumber,FDepartmentNumber))

有时我们需要在已经创建好的数据表上添加新的唯一约束,这时就需要使用ALTER TABLE

ALTER TABLE T_Person ADD  CONSTRAINT unic_3 UNIQUE(FName, FAge) 
ALTER TABLE T_Person DROP CONSTRAINT unic_1; 

CHECK约束

CREATE TABLE T_Person ( 
FNumber VARCHAR2(20),FName VARCHAR2(20), 
FAge NUMBER (10) CHECK(FAge >0), 
FWorkYear NUMBER (10) CHECK(FWorkYear>0)) 

CHECK中可以用函数

CREATE TABLE T_Person ( 
FNumber VARCHAR2(20) CHECK (LENGTH(FNumber)>12), 
FName VARCHAR2(20), 
FAge NUMBER (10) CHECK(FAge >0), 
FWorkYear NUMBER (10) CHECK(FWorkYear>12)) 

如果希望CHECK子句中的条件语句中使用其他列,则必须在CREATE TABLe语句的末尾使用CONSTRAINT关键字定义它

CREATE TABLE T_Person ( 
FNumber VARCHAR2(20), 
FName VARCHAR2(20), 
FAge NUMBER (10), 
FWorkYear NUMBER (10) , 
CONSTRAINT ck_1 CHECK(FWorkYear< FAge))

主键约束

主键约束是UNIQUE约束和非空约束的组合。虽然一张表中可以有多个UNIQUE约束和非空约束,但是每个表中却只能有一个主键约束。

CREATE TABLE T_Person 

FNumber VARCHAR2(20) PRIMARY KEY, FName VARCHAR2(20),FAge NUMBER (10)
)

复合主键

CREATE TABLE T_Person 
(
FNumber VARCHAR2(20), 
FName VARCHAR2(20),
FAge NUMBER (10) , 
CONSTRAINT pk_1 PRIMARY KEY(FNumber,FName)
) 

外键约束

当一些信息在表中重复出现的时候,我们就要考虑要将它们提取到另外一张表中了,然后在源表中引用新创建的中的数据。

CREATE TABLE T_AUTHOR 
( 
  FId VARCHAR2(20) PRIMARY KEY, 
  FName VARCHAR2(100), 
  FAge NUMBER (10), 
  FEmail VARCHAR2(20) 
); 
CREATE TABLE T_Book 
( 
  FId VARCHAR2(20) PRIMARY KEY, 
  FName VARCHAR2(100), 
  FPageCount NUMBER (10), 
  FAuthorId VARCHAR2(20) , 
  FOREIGN KEY (FAuthorId) REFERENCES T_AUTHOR(FId) 
);

 

posted on 2012-05-30 10:47  grep  阅读(247)  评论(0编辑  收藏  举报