MYSQL資料庫-約束

來源:互聯網
上載者:User

標籤:

約束是一種限制,它通過對錶的行或列的資料做出限制,來確保表的資料的完整性、唯一性。

MYSQL中,常用的幾種約束:

約束類型: 主鍵 預設值 唯一 外鍵 非空
關鍵字: PRIMARY KEY DEFAULT UNIQUE FOREIGN KEY

NOT NULL

===================================================

主鍵(PRIMARY KEY)是用於約束表中的一行,作為這一行的標識符,在一張表中通過主鍵就能準確定位到一行,因此主鍵十分重要。主鍵要求這一行的資料不能有重複且不可為空。

還有一種特殊的主鍵——複合主鍵。主鍵不僅可以是表中的一列,也可以由表中的兩列或多列來共同標識

===================================================

預設值約束(DEFAULT)規定,當有DEFAULT約束的列,插入資料為空白時該怎麼辦。

DEFAULT約束只會在使用INSERT語句(上一實驗介紹過)時體現出來,INSERT語句中,如果被DEFAULT約束的位置沒有值,那麼這個位置將會被DEFAULT的值填充

===================================================

唯一約束(UNIQUE)比較簡單,它規定一張表中指定的一列的值必須不能有重複值,即這一列每個值都是唯一的。

當INSERT語句新插入的資料和已有資料重複的時候,如果有UNIQUE約束,則INSERT失敗.

===================================================

外鍵(FOREIGN KEY)既能確保資料完整性,也能表現表之間的關係。

一個表可以有多個外鍵,每個外鍵必須REFERENCES(參考)另一個表的主鍵,被外鍵約束的列,取值必須在它參考的列中有對應值。

在INSERT時,如果被外鍵約束的值沒有在參考列中有對應,比如以下命令,參考列(department表的dpt_name)中沒有dpt3,則INSERT失敗

===================================================

非空約束(NOT NULL),聽名字就能理解,被非空約束的列,在插入值時必須非空。

在MySQL中違反非空約束,不會報錯,只會有警告.

附: SQL語句

 1 CREATE DATABASE mysql_shiyan; 2  3 use mysql_shiyan; 4  5 CREATE TABLE department 6 ( 7   dpt_name   CHAR(20) NOT NULL, 8   people_num INT(10) DEFAULT ‘10‘, 9   CONSTRAINT dpt_pk PRIMARY KEY (dpt_name)10  );11 12 CREATE TABLE employee13 (14   id      INT(10) PRIMARY KEY,15   name    CHAR(20),16   age     INT(10),17   salary  INT(10) NOT NULL,18   phone   INT(12) NOT NULL,19   in_dpt  CHAR(20) NOT NULL,20   UNIQUE  (phone),21   CONSTRAINT emp_fk FOREIGN KEY (in_dpt) REFERENCES department(dpt_name)22  );23  24 CREATE TABLE project25 (26   proj_num   INT(10) NOT NULL,27   proj_name  CHAR(20) NOT NULL,28   start_date DATE NOT NULL,29   end_date   DATE DEFAULT ‘2015-04-01‘,30   of_dpt     CHAR(20) REFERENCES department(dpt_name),31   CONSTRAINT proj_pk PRIMARY KEY (proj_num,proj_name)32  );

 

MYSQL資料庫-約束

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.