约束存在的目的其实就是更具需要把商业规则应用到数据库的设计当中
1.唯一(Identifier标识) -- 主键 能够唯一确定实体的某一个实例的属性或者属性组
主键
CREATE TABLE EMP(
EMP_ID CHAR(6) NOT NULL,
EMP_NAME VARCHAR(50) NOT NULL,
ENP_EMALI_ADDRESS VARCHAR(50) NULL,
CONSTRAINT PK_EMP PRIMARY KEY (EMP_ID) -----PK为主键缩写
);
唯一标识约束
CREATE TABLE EMP(
EMP_ID CHAR(6) NOT NULL,
EMP_NAME VARCHAR(50) NOT NULL,
ENP_EMALI_ADDRESS VARCHAR(50) NULL,
CONSTRAINT PK_EMP PRIMARY KEY (EMP_ID), -----PK为主键名
CONSTRAINT AK_IDENTIFIER_EMAIL_EMP UNIQUE (EMP_EMALL_ADDRESS) --AK可选键缩写
);
唯一索引
CREATE UNIQUE INDEX UI_EMP ON EMP(
EMP_EMAIL_ADDRESS
);
确保数据唯一性的同时可以提高查询的性能
2.非空约束(Not Null)
在Power Designer的逻辑模型中,前面标有*的属性不可以为空。在属性具体定义里要勾选M
CREATE TABLE EMP(
EMP_ID CHAR(6) NOT NULL,
EMP_NAME VARCHAR(50) NOT NULL,
ENP_EMALI_ADDRESS VARCHAR(50) NULL,
CONSTRAINT PK_EMP PRIMARY KEY (EMP_ID),
CONSTRAINT CKNONULL_EMPNAME CHECK(EMP_NAME is not null)
);
null值就是null值,不是空字符串,不弄用0 代替 ,null值表示的是未知。
3.默认值(Default value)
默认值(Default value)经常和not null配合使用,对于我们已经知道的字段进行自动的求值。
4.检查 (Check)
CONSTRAINT CNC_NORMAL_PRICE_PRODDCT CHECK(NORMAL_PRICE IS NULL OR (NORMAL_PRICE BETWEEN 0 AND 1000))
PRICE可以为空或者只能在0~1000之内
5.参照完整性(Referential Integrity) RI 主外键关系的约束 在数据仓库中运用较少
Cascade:当你删除或者修改主表数据的时候数据库会自动的把从表对应的外键相关的数据也做相应的删除或者修改
每个表可以有多个UNIQUE约束,但是每个表只能有一个PRIMARY KEY约束
1.下面的SQL 在‘person’表创建时在“ID_P”列创建unique约束
SQL Server/Oracle
create table persons(
ID_P int not null UNIQUE,
LastName varchar(200) not null,
FirstName varchar(200),
Address varchar(200),
)
2.如果需要命名unique约束,以及为多个列定义UNIQUE约束,请使用下面的SQL语法
create table persons(
ID_P int not null,
LastName varchar(200) not null,
FirstName varchar(200),
Address varchar(200),
CONSTRAINT UC_PersonID UNIQUE (ID_P,LastName)
)
3.当表已被创建时,如需在 ID_P列创建UNIQUE约束,请使用下列SQL
ALTER TABLE Persons
ADD UNIQUE (ID_P)
4.如需命名UNIQUE 约束,并定义多个列的UNIQUE 约束,请使用下面的SQL语法
ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (ID_P,LastName)
5.撤销UNIQUE约束,请用下面的SQL (SQL Server/Oracle)
ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID