SQL Server,Oracle,DB2上约束建立语句对比

2026-02-26 04:40 栏目: 技术学堂 查看( )

上次我们介绍了: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上约束建立语句的对比就介绍到这里了,希望本次的介绍能够对您有所收获!

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

郑重申明:某某网络以外的任何单位或个人,不得使用该案例作为工作成功展示!