數據庫SQL 約束

http://blog.csdn.net/fancy050821/article/details/4176212
1、not null :用於控制字段的內容一定不能爲空(NULL)。
     用法 :Create table MyTable
               (
                   id varchar(32) not null,
                   name varchar (32)
               )

2、Unique :控件字段內容不能重複,一個表允許有多個 Unique 約束。
      在Sql Server、Orcale、MS Access 支持的添加 Unique 語法
             Create table MyTable
                (
                    id varchar(32) not null unique,
                    name varchar (32)
                )

      在Sql Server、 My Sql 支持的添加 Unique 語法
             Create table MyTable
                (
                    id varchar(32) not null,
                    name varchar (32),
                   unique (id,.....)
                 )

      在Sql Server、Orcale、MS Access、My Sql 都支持的添加 Unique 語法
              Create table MyTable
                  (
                      id varchar(32) not null,
                      name varchar (32),
                     Constraint uniqueName unique(UniqueColumn,.....)
                   )

      :第一種寫法(也就是在字段後面直接添加約束),保證每個字段數據唯一性。
          第二種寫法(也就是同時添加幾個字段爲約束),這個是保證幾個字段數據同時是唯一的,比如 Unique(id,name) 兩個字段爲約束,那麼當 id 有重複值,而 name 沒有重複值的情況下是允許的,只有當兩個字段數據都與原數據重複的情況下才是不允許的。
   
   在Sql Server、Oracle、MS Access 刪除 Unique 約束語法:drop constraint UniqueName;
   在My Sql 刪除 Unique 約束語法:drop index UniqueName;

3、Primary Key :也是用於控件字段內容不能重複,但它在一個表只允許出現一個。
      在Sql Server、Orcale、MS Access 支持的添加Primary Key語法
              Create table myTB1
             (
                 id nvarchar(32) not null primary key,
                 name nvarchar(32)
              )
      在Sql Server、My Sql 支持的添加Primary Key 語法
             Create table myTB1
             (
                 id nvarchar(32) not null,
                 name nvarchar(32),
                 primary key (id)
             )
       在Sql Server、Orcale、MS Access、My Sql 支持的添加Primary Key 語法
             Create table myTB1
             (
                  id nvarchar(32) not null,
                 name nvarchar(32),
                 constraint PrimaryName primary key (id)
              )
在Sql Server、Orcale、MS Access、My Sql 表已存在的情況下,添加表的Primary Key約束語法
              Alter table myTB1
              ADD Primary Key (id,......) --這樣的寫法,系統會自定義約束名稱

              Alter table myTB1
              Add Constaint PrimaryName primary key (id) --這樣的寫法,自己可以自定義約束名稱

在Sql Server、Orcale、MS Access 刪除表已存在的 Primary Key 約束的語法:
              Alter table myTB1
              Drop Constraint PrimaryName

在My Sql 刪除表已存在的 Primary Key 約束的語法:
              Alter table myTB1
              Drop Primary Key
Unique 與 Primary 的相同之處:UNIQUE 和 PRIMARY KEY 約束均爲列或列集合提供了唯一性的保證。
Unique 與 Primary 的不同之處:每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束,Unique允許有NULL值,而 Primary key 不允許有NULL值。

:在同一個數據庫中,就算在不同的表中,約束名稱是不允許相同的。

4、Foreign Key :FOREIGN KEY 約束用於預防破壞表之間連接的動作,FOREIGN KEY 約束也能防止非法數據插入外鍵列,因爲它必須是它指向的那個表中的值之一。
   在Sql Server、My Sql 支持的添加Foreign Key語法
              Create table myTB1
              (
                   id nvarchar(32) not null primary key,
                   name nvarchar(32),
                   foreign key(id) references myTB(id)
              )

   在Sql Server、Orcale、MS Access 支持的添加Foreign Key語法
              Create table myTB1
              (
                   id nvarchar(32) not null foreign key references myTB(id),
                   name nvarchar(32)
              )

   在Sql Server、Orcale、MS Access、My Sql 都支持的添加Foreign Key語法
              Create table myTB1
              (
                   id nvarchar(32) not null primary key,
                   name nvarchar(32),
                    Constraint foreignName foreign key(id) references myTB(id)
              )

在Sql Server、Orcale、MS Access、My Sql 的表已存在情況下,向表添加外鍵約束的語法:
              Alter table myTB1
              Add foreign key(id) references myTB(id) --這樣寫系統會自定義約束名稱

               Alter table myTB1
              Add Constraint foreignName foreign key(id) references myTB(id) --這樣寫自己可以自定義約束名稱

在Sql Server、Orcale、MS Access 中刪除外鍵約束的語法:
              Alter table myTB1
              Drop Constraint foreignName; 

在My Sql 中刪除外鍵約束的語法:
              Alter table myTB1
              Drop foreign key foreignName;


5、Check :用於控制字段的值範圍。
      在Sql Server、My Sql 支持的添加check 語法
              Create table myCheck
              (
                   id nvarchar(32) not null,
                   age int not null, 
                  
 check (age>15 and age <30)
              )

       在Sql Server、Orcale、MS Access 支持的添加 check 語法
              Create table myCheck
              (
                   id nvarchar(32) not null,
                   age int not null check (age>15 and age<30)
              )

      在Sql Server、Orcale、MS Access、My Sql 都支持的添加 check 語法
               Create table myCheck
              (
                   id nvarchar(32) not null,
                   age int not null,
                   constraint checkName check (age<15 and age>30)
              )

在Sql Server、Orcale、MS Access、My Sql 的表已存在情況下,向表添加check約束的語法:
              Alter table myCheck
              add check (id='celly'); --這樣定義是系統自定義 check約束名稱。

              Alter table myCheck
               add constraint checkName check(id='celly'); --這樣定義是自己自定義 check約束名稱。


在 Sql Server、Orcale、MS Access 刪除表已存在的 check 約束的語法:
              Alter table myCheck
              drop constraint checkName

6、Default :用於設置新記錄的默認值。

      在Sql Server、Orcale、MS Access、My Sql 添加default約束的語法:
              Create table myDefault
              (
                  id int,
                  name nvarchar(32) default 'celly' 
              )

      在My Sql 的已存在表中添加 字段默認值:
               Alter table myDefault
              Alter [id] set default 0

      在 Sql Server、Orcale、MS Access 的已存在表中添加 字段默認值:
              Alter table myDefault
              Alter column [id] set default 0

      在 My Sql 中刪除字段默認值語法:
              Alter table myDefault
              Alter ColumnName drop default
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章