上次我们介绍了:SQL Server,Oracle,DB2索引建立语句的对比,本文我们介绍一下SQL Server,Oracle,DB2上约束建立语句的对比,接下来我们就开始介绍。
约束用于强制行数据满足特定的商业规则(数据类型是强制列的数据满足规则)
约束有五种类型:
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
SQL SERVER上的NOT NULL约束:
CREATE TABLE U_emp( empno bigint, ename VARCHAR(10) NOT NULL, job VARCHAR(9), mgr bigint, hiredate DATE, sal decimal(7,2), comm decimal(7,2), deptno decimal(7,2) NOT NULL);
ORACLE上的NOT NULL约束:
CREATE TABLE emp( empno NUMBER(4), ename VARCHAR2(10) NOT NULL, job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(7,2) NOT NULL);
DB2上的NOT NULL约束:
CREATE TABLE U_emp( empno INTEGER, ename VARCHAR(10) NOT NULL, job VARCHAR(9), mgr INTEGER, hiredate DATE, sal DECIMAL(7,2), comm DECIMAL(7,2), deptno DECIMAL(7,2) NOT NULL);
SQL SERVER上的UNIQUE约束:
CREATE TABLE U_dept( deptno INTEGER, dname VARCHAR(14), loc VARCHAR(13), CONSTRAINT dept_dname_uk UNIQUE(dname));
ORACLE上的UNIQUE约束:
CREATE TABLE dept( deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13), CONSTRAINT dept_dname_uk UNIQUE(dname));
DB2上的UNIQUE约束:
CREATE TABLE U_dept( deptno INTEGER, dname VARCHAR(14) not null, loc VARCHAR(13), CONSTRAINT dept_dname_uk UNIQUE(dname));
SQL SERVER上的PK 约束:
CREATE TABLE P_dept( deptno INTEGER, dname VARCHAR(14), loc VARCHAR(13), CONSTRAINT dept_dname_uk1 UNIQUE (dname), CONSTRAINT dept_deptno_pk1 PRIMARY KEY(deptno));
ORACLE上的PK约束
CREATE TABLE dept( deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13), CONSTRAINT dept_dname_uk UNIQUE (dname), CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno));
DB2和的PK约束:
CREATE TABLE P_dept( deptno INTEGER not null, dname VARCHAR(14) not null, loc VARCHAR(13), CONSTRAINT dept_dname_uk1 UNIQUE (dname), CONSTRAINT dept_deptno_pk1 PRIMARY KEY(deptno));
SQL SERVER上的FK 约束:
CREATE TABLE F_emp( empno INTEGER, ename VARCHAR(10) NOT NULL, job VARCHAR(9), mgr INTEGER, hiredate DATE, sal DECIMAL(7,2), comm DECIMAL(7,2), deptno INTEGER NOT NULL, CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) REFERENCES p_dept (deptno));
ORACLE上的FK约束:
CREATE TABLE emp( empno NUMBER(4), ename VARCHAR2(10) NOT NULL, job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(7,2) NOT NULL, CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) REFERENCES dept (deptno));
DB2上的FK约束:
CREATE TABLE F_emp( empno INTEGER, ename VARCHAR(10) NOT NULL, job VARCHAR(9), mgr INTEGER, hiredate DATE, sal DECIMAL(7,2), comm DECIMAL(7,2), deptno INTEGER NOT NULL, CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) REFERENCES p_dept (deptno));
FK约束的几个特点:
1.FOREIGN KEY:在表级定义时需要
2.REFERENCES:指定主表及其主键列
3.ON DELETE CASCADE:级联删除选项
SQL SERVER上的CHECK约束:
create table test ( deptno bigint constraint emp_deptno_ck check (deptno between 10 and 99))
ORACLE上的CHECK约束:
create table test ( deptno number(2) constraint emp_deptno_ck check (deptno between 10 and 99))
DB2 上的CHECK约束:
create table test ( deptno number(2) constraint emp_deptno_ck check (deptno between 10 and 99))
关于SQL Server,Oracle,DB2上约束建立语句的对比就介绍到这里了,希望本次的介绍能够对您有所收获!