從 MySQL 表中刪除約束
約束是一組規則或限制,禁止在 MySQL 列中輸入資料。MySQL 中的表具有使用者想要限制的各種屬性或列。
應用的障礙禁用 MySQL 列集中所有型別的資料值的允許,從而提供跨列的一致性。它僅啟用應用的約束集定義中允許的值。
在 MySQL 中建立具有約束的表
在 MySQL 中,使用者可以將約束與表模式一起應用到列上。這些約束可以是下面給出的兩種型別。
- 列級約束
- 表級約束
使用約束建立表的語法:
Create table tablemname
attributeName1 attributeType constraint,
attributeName2 attributeType constraint,
...
attributeNameN attributeType constraint,
TableLevelConstraint(AttributeName)
上面程式碼中的語法顯示瞭如何為每個建立表級和列級約束。兩者背後的想法是賦予使用者根據需要新增約束的許可權。
列級約束
:在定義屬性名稱時定義non-null
和unique
等約束型別。這意味著約束名稱在提供屬性的資料之後。表級約束
:約束的型別在表定義的末尾定義。這些約束類似於PrimaryKey
ForeignKey
和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
命令是強制性的。
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