HOWTO · MySQL
從 MySQL 表中刪除約束
本文介紹如何從 MySQL 表中刪除約束。
本頁內容
約束是一組規則或限制,禁止在 MySQL 列中輸入資料。MySQL 中的表具有使用者想要限制的各種屬性或列。
應用的障礙禁用 MySQL 列集中所有型別的資料值的允許,從而提供跨列的一致性。它僅啟用應用的約束集定義中允許的值。
在 MySQL 中建立具有約束的表
在 MySQL 中,使用者可以將約束與表模式一起應用到列上。這些約束可以是下面給出的兩種型別。
- 列級約束
- 表級約束
使用約束建立表的語法:
Create table tablemname
attributeName1 attributeType constraint,
attributeName2 attributeType constraint,
...
attributeNameN attributeType constraint,
TableLevelConstraint(AttributeName)
上面程式碼中的語法顯示瞭如何為每個建立表級和列級約束。兩者背後的想法是賦予使用者根據需要新增約束的許可權。
列級約束:在定義屬性名稱時定義non-null和unique等約束型別。這意味著約束名稱在提供屬性的資料之後。表級約束:約束的型別在表定義的末尾定義。這些約束類似於PrimaryKeyForeignKey和Index約束。
實際查詢表之前的查詢列表:
create table studentPK ( id varchar(255) not null, firstName varchar(255), lastname varchar(255), age integer, primary key (id));
上面的命令建立了一個表 studentPK,其屬性包括 id、firstName、lastName 和 age。主鍵 約束是 MySQL 中定義的一個關鍵字,用於建立表的主鍵或唯一識別符號。
該語法在其引數中採用引數以使屬性成為主鍵。
Describe studentPK;
另一個查詢是描述建立的表。下面顯示的影象說明了輸入到 studentPK 表的欄位中的約束。
從 MySQL 表中刪除約束
在 MySQL 中執行 DROP 約束的查詢:
Alter table studentPK drop primary key;
上述語法使用 Alter 關鍵字更改 studentPk 的語法。由於約束在表級別,因此很容易在表級別很好地刪除。
Alter 命令最適合更改表的模式。它通過從同一表中刪除主鍵來更改 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 表中的外來鍵。
輸出可以在下圖中得到驗證:
在內部建立外來鍵時,會建立該鍵的新鍵名。描述表和檢視名稱的語句如下:
SHOW CREATE TABLE studentDept;
下面是控制檯輸出的圖片,可以看到 MySQL 中的表結構。
上圖顯示外來鍵是用名稱 studentdept_ibfk_1 建立的。現在,很容易刪除具有建立名稱的外來鍵。
Alter table studentDept drop foreign key studentdept_ibfk_1;
上面的查詢從 studentDept 表中刪除了外來鍵。Alter 命令表明更改發生在模式級別。
外來鍵從 studentDept 表中刪除。可以使用 describe 命令重新檢查它。
刪除外來鍵之前要記住的幾點:
-
外來鍵名是需要的。從表中刪除約束需要一個鍵。
-
不知道鍵名的
drop命令導致如下所示的錯誤:
-
SHOW CREATE TABLE命令是強制性的。