從 MySQL 表中刪除約束

Rashmi Patidar 2023年1月30日 2022年7月18日
  1. 在 MySQL 中建立具有約束的表
  2. 從 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 命令是強制性的。

Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

相關文章 - MySQL Table