HOWTO · MySQL

從 MySQL 表中刪除約束

本文介紹如何從 MySQL 表中刪除約束。

本頁內容

約束是一組規則或限制,禁止在 MySQL 列中輸入資料。MySQL 中的表具有使用者想要限制的各種屬性或列。

應用的障礙禁用 MySQL 列集中所有型別的資料值的允許,從而提供跨列的一致性。它僅啟用應用的約束集定義中允許的值。

在 MySQL 中建立具有約束的表

在 MySQL 中,使用者可以將約束與表模式一起應用到列上。這些約束可以是下面給出的兩種型別。

  1. 列級約束
  2. 表級約束

使用約束建立表的語法:

Create table tablemname
 attributeName1 attributeType constraint,
 attributeName2 attributeType constraint,
 ...
 attributeNameN attributeType constraint,
 TableLevelConstraint(AttributeName)

上面程式碼中的語法顯示瞭如何為每個建立表級和列級約束。兩者背後的想法是賦予使用者根據需要新增約束的許可權。

  1. 列級約束:在定義屬性名稱時定義 non-nullunique 等約束型別。這意味著約束名稱在提供屬性的資料之後。
  2. 表級約束:約束的型別在表定義的末尾定義。這些約束類似於 PrimaryKey ForeignKeyIndex 約束。

實際查詢表之前的查詢列表:

create table studentPK ( id varchar(255) not null, firstName varchar(255), lastname varchar(255), age integer, primary key (id));

上面的命令建立了一個表 studentPK,其屬性包括 idfirstNamelastNameage主鍵 約束是 MySQL 中定義的一個關鍵字,用於建立表的主鍵或唯一識別符號。

該語法在其引數中採用引數以使屬性成為主鍵。

Describe studentPK;

另一個查詢是描述建立的表。下面顯示的影象說明了輸入到 studentPK 表的欄位中的約束。

表中有約束的實際執行

從 MySQL 表中刪除約束

在 MySQL 中執行 DROP 約束的查詢:

Alter table studentPK drop primary key;

上述語法使用 Alter 關鍵字更改 studentPk 的語法。由於約束在表級別,因此很容易在表級別很好地刪除。

Alter 命令最適合更改表的模式。它通過從同一表中刪除主鍵來更改 StudentPk 表的模式。

下面是相同的本地執行影象。

從 studentPk 表中刪除主鍵約束

同樣,當在其他表中使用相同的鍵時,它會通過刪除另一個表的外來鍵而被刪除。

查詢建立外來鍵約束:

create table studentDept ( deptid varchar(255) not null, deptName varchar(255), id varchar(255), foreign key(id) references studentPK (id));

上面的查詢在另一個關係 studentDept 表上建立了一個外來鍵作為 id。外來鍵是通過使用關鍵字 foreign key 形成的。

除了關鍵字之外,它還需要 references 關鍵字來連結父表以使兩個表相互依賴。references 關鍵字將 studentPk 表的 id 欄位繫結為 studentDept 表中的外來鍵。

輸出可以在下圖中得到驗證:

在 MySQL 中建立具有外來鍵約束的新表

在內部建立外來鍵時,會建立該鍵的新鍵名。描述表和檢視名稱的語句如下:

SHOW CREATE TABLE studentDept;

下面是控制檯輸出的圖片,可以看到 MySQL 中的表結構。

描述 MySQL 表和約束名稱

上圖顯示外來鍵是用名稱 studentdept_ibfk_1 建立的。現在,很容易刪除具有建立名稱的外來鍵。

Alter table studentDept drop foreign key studentdept_ibfk_1;

上面的查詢從 studentDept 表中刪除了外來鍵。Alter 命令表明更改發生在模式級別。

外來鍵從 studentDept 表中刪除。可以使用 describe 命令重新檢查它。

刪除外來鍵之前要記住的幾點:

  1. 外來鍵名是需要的。從表中刪除約束需要一個鍵。

  2. 不知道鍵名的 drop 命令導致如下所示的錯誤:

    不使用鍵名時刪除外來鍵約束時出錯

  3. SHOW CREATE TABLE 命令是強制性的。