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

上次我们介绍了:SQL Server,Oracle,DB2索引建立语句的对比,本文我们介绍一下SQL Server,Oracle,DB2上约束建立语句的对比,接下来我们就开始介绍。

约束用于强制行数据满足特定的商业规则(数据类型是强制列的数据满足规则)

约束有五种类型:

NOT NULL

UNIQUE

PRIMARY KEY

FOREIGN KEY

CHECK

SQL SERVER上的NOT NULL约束:

 
 
 
  1. CREATE TABLE U_emp(  
  2. empno bigint,  
  3. ename VARCHAR(10) NOT NULL,  
  4. job VARCHAR(9),  
  5. mgr bigint,  
  6. hiredate DATE,  
  7. sal decimal(7,2),  
  8. comm decimal(7,2),  
  9. deptno decimal(7,2) NOT NULL); 

ORACLE上的NOT NULL约束:

 
 
 
  1. CREATE TABLE emp(   
  2. empno NUMBER(4),   
  3. ename VARCHAR2(10) NOT NULL,   
  4. job VARCHAR2(9),   
  5. mgr NUMBER(4),   
  6. hiredate DATE,   
  7. sal NUMBER(7,2),   
  8. comm NUMBER(7,2),   
  9. deptno NUMBER(7,2) NOT NULL); 

DB2上的NOT NULL约束:

 
 
 
  1. CREATE TABLE U_emp(  
  2. empno INTEGER,  
  3. ename VARCHAR(10) NOT NULL,  
  4. job VARCHAR(9),  
  5. mgr INTEGER,  
  6. hiredate DATE,  
  7. sal DECIMAL(7,2),  
  8. comm DECIMAL(7,2),  
  9. deptno DECIMAL(7,2) NOT NULL); 

SQL SERVER上的UNIQUE约束:

 
 
 
  1. CREATE TABLE U_dept(  
  2. deptno INTEGER,  
  3. dname VARCHAR(14),  
  4. loc VARCHAR(13),  
  5. CONSTRAINT dept_dname_uk UNIQUE(dname)); 

ORACLE上的UNIQUE约束:

 
 
 
  1. CREATE TABLE dept(   
  2. deptno NUMBER(2),   
  3. dname VARCHAR2(14),   
  4. loc VARCHAR2(13),   
  5. CONSTRAINT dept_dname_uk UNIQUE(dname)); 

DB2上的UNIQUE约束:

 
 
 
  1. CREATE TABLE U_dept(  
  2. deptno INTEGER,  
  3. dname VARCHAR(14) not null,  
  4. loc VARCHAR(13),  
  5. CONSTRAINT dept_dname_uk UNIQUE(dname)); 

SQL SERVER上的PK 约束:

 
 
 
  1. CREATE TABLE P_dept(  
  2. deptno INTEGER,  
  3. dname VARCHAR(14),  
  4. loc VARCHAR(13),  
  5. CONSTRAINT dept_dname_uk1 UNIQUE (dname),  
  6. CONSTRAINT dept_deptno_pk1 PRIMARY KEY(deptno)); 

ORACLE上的PK约束

 
 
 
  1. CREATE TABLE dept(   
  2. deptno NUMBER(2),   
  3. dname VARCHAR2(14),   
  4. loc VARCHAR2(13),   
  5. CONSTRAINT dept_dname_uk UNIQUE (dname),   
  6. CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno)); 

DB2和的PK约束:

 
 
 
  1. CREATE TABLE P_dept(  
  2. deptno INTEGER not null,  
  3. dname VARCHAR(14) not null,  
  4. loc VARCHAR(13),  
  5. CONSTRAINT dept_dname_uk1 UNIQUE (dname),  
  6. CONSTRAINT dept_deptno_pk1 PRIMARY KEY(deptno)); 

SQL SERVER上的FK 约束:

 
 
 
  1. CREATE TABLE F_emp(  
  2. empno INTEGER,  
  3. ename VARCHAR(10) NOT NULL,  
  4. job VARCHAR(9),  
  5. mgr INTEGER,  
  6. hiredate DATE,  
  7. sal DECIMAL(7,2),  
  8. comm DECIMAL(7,2),  
  9. deptno INTEGER NOT NULL,  
  10. CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)  
  11. REFERENCES p_dept (deptno)); 

ORACLE上的FK约束:

 
 
 
  1. CREATE TABLE emp(   
  2. empno NUMBER(4),   
  3. ename VARCHAR2(10) NOT NULL,   
  4. job VARCHAR2(9),   
  5. mgr NUMBER(4),   
  6. hiredate DATE,   
  7. sal NUMBER(7,2),   
  8. comm NUMBER(7,2),   
  9. deptno NUMBER(7,2) NOT NULL,   
  10. CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)   
  11. REFERENCES dept (deptno));  

DB2上的FK约束:

 
 
 
  1. CREATE TABLE F_emp(  
  2. empno INTEGER,  
  3. ename VARCHAR(10) NOT NULL,  
  4. job VARCHAR(9),  
  5. mgr INTEGER,  
  6. hiredate DATE,  
  7. sal DECIMAL(7,2),  
  8. comm DECIMAL(7,2),  
  9. deptno INTEGER NOT NULL,  
  10. CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)  
  11. REFERENCES p_dept (deptno)); 

FK约束的几个特点:

1.FOREIGN KEY:在表级定义时需要

2.REFERENCES:指定主表及其主键列

3.ON DELETE CASCADE:级联删除选项

SQL SERVER上的CHECK约束:

 
 
 
  1. create table test ( deptno bigint constraint emp_deptno_ck check (deptno   
  2. between 10 and 99)) 

ORACLE上的CHECK约束:

 
 
 
  1. create table test ( deptno number(2) constraint emp_deptno_ck check (deptno  
  2. between 10 and 99))  

DB2 上的CHECK约束:

 
 
 
  1. create table test ( deptno number(2) constraint emp_deptno_ck check (deptno  
  2. between 10 and 99))  

关于SQL Server,Oracle,DB2上约束建立语句的对比就介绍到这里了,希望本次的介绍能够对您有所收获!

文章题目:SQLServer,Oracle,DB2上约束建立语句对比
URL网址:http://www.shufengxianlan.com/qtweb/news48/370198.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联