MySQL之約束注意點

來源:互聯網
上載者:User

標籤:mysql 約束 注意點

  1. not null約束。

    not null約束只能在列名後面聲明,不能使用constraint語句聲明,當然也就沒無法聲明約束名稱了。更改欄位為null或者not null只能使用alter table table_name modify col_name (not) null;無法使用constraint語句修改。也就是說not null雖然是約束,但是卻和constraint語句扯不上關係。not null約束在information_schema裡面的table_constraints表中也無法查到。


  2. 主鍵約束。

    主鍵約束既可以在列名後面聲明,也可以在聲明完所有列之後聲明。前者只需要在列明後面跟上primary key就行了,後者的聲明方法是[CONSTRAINT [symbol]] PRIMARY KEY(COL1,...),這裡聲明約束名稱是沒有任何意義的,因為你假如使用CONSTRAINT [symbol]語句之後,MySQL會自動把約束名稱改為PRIMARY,可以到information_schema裡面的table_constriants表裡面驗證。所以我們在聲明所有列再聲明primary key都不會使用constraint關鍵字。主鍵即唯一索引加上not null約束,主鍵列上會建立唯一索引,索引的名稱和約束名稱相同,預設為BTREE索引,索引資訊可以在information_schema裡面的statistics表裡面查詢。

    刪除主鍵約束使用alter table table_name drop primary key;




  3. unique約束。

    unique約束也可以稱為unique索引,因為二者都是同時存在。建立表的時候可以使用如下兩種方法建立unique約束:

    (1)create table t1(id int primary key,name varchar(20) unique);無法指定約束名稱,系統預設約束名稱和欄位名相同。

    (2)create table t1(id int primary key,name varchar(20),constraint t1_unq unique(name));

     表已經存在時可以通過兩種方式添加unique約束。

    (1)alter table t1 modify name varchar(20) unique;

    (2)alter table t1 add constraint t1_unq unique(name);

    (3)alter table t1 add unique index t1_unq(name);

    因為unique約束就是unique索引,所以我們都會用第三種方式去添加unique索引,如果不帶unique關鍵字則說明添加的是普通索引。unique約束(unique索引)的資訊會同時在information_schema裡面的statistics表和table_constraints表裡面保持一致。

    刪除unique約束(索引)只能使用如下語句:

    alter table t1 drop index t1_unq;


4.  外鍵約束。

    在建表時建立外鍵約束可以使用如下方法(注意被引用的表的那個列必須有unique約束):

    (1)create table t1(id int primary key, name varchar(20) references t2(name));該方法無法聲明約束名稱。

    (2)create table t1(id int primary key,name varchar(20), constraint t1_fk_name foreign key(name) references t2(name));該方法可以聲明約束名。

    在表已經存在的時候添加外鍵約束可以使用如下語句:

    alter table add constraint t1_fk_name foreign key(name) references t2(name));

    刪除外鍵可以使用如下語句:

    alter table drop foreign key t1_fk_name;

本文出自 “trikker” 部落格,請務必保留此出處http://trikker.blog.51cto.com/7478890/1538373

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.