SQL Server,Oracle,DB2上約束建立語(yǔ)句對(duì)比
作者:henrybai
本文我們主要對(duì)SQL Server,Oracle,DB2上約束建立語(yǔ)句進(jìn)行了對(duì)比與總結(jié),包括建立NOT NULL約束、CHECK約束等,希望能夠?qū)δ兴鶐椭?/div>
上次我們介紹了:SQL Server,Oracle,DB2索引建立語(yǔ)句的對(duì)比,本文我們介紹一下SQL Server,Oracle,DB2上約束建立語(yǔ)句的對(duì)比,接下來(lái)我們就開始介紹。
約束用于強(qiáng)制行數(shù)據(jù)滿足特定的商業(yè)規(guī)則(數(shù)據(jù)類型是強(qiáng)制列的數(shù)據(jù)滿足規(guī)則)
約束有五種類型:
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約束的幾個(gè)特點(diǎn):
1.FOREIGN KEY:在表級(jí)定義時(shí)需要
2.REFERENCES:指定主表及其主鍵列
3.ON DELETE CASCADE:級(jí)聯(lián)刪除選項(xiàng)
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))
關(guān)于SQL Server,Oracle,DB2上約束建立語(yǔ)句的對(duì)比就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】
責(zé)任編輯:趙鵬
來(lái)源:
CSDN博客


相關(guān)推薦




