MySQL裡 沒有 boolean型別 怎麼辦?MySQL 裡的 tinyint(1)

del88發表於2024-04-18

之前我寫的部落格:https://www.cnblogs.com/del88/p/12538470.html
由於之前的部落格,沒有使用markdown 懶得重新排版了,重新寫一篇;

直接看AI給的答案吧:

MySQL裡 沒有 boolean型別 怎麼辦?

在MySQL中,確實沒有專門的boolean資料型別。不過,MySQL通常使用TINYINT(1)作為布林值的替代。當使用TINYINT(1)來表示布林值時,通常約定0代表false,而1代表true

例如,你可以在建立表時使用TINYINT(1)來表示一個布林欄位:

CREATE TABLE example (
    id INT AUTO_INCREMENT PRIMARY KEY,
    is_active TINYINT(1) NOT NULL
);

在這個例子中,is_active欄位可以儲存01,分別代表falsetrue

當你查詢這個欄位時,可以像這樣使用:

SELECT * FROM example WHERE is_active = 1; -- 查詢所有活躍的記錄

或者:

UPDATE example SET is_active = 0 WHERE id = 5; -- 將ID為5的記錄的is_active設定為false

雖然TINYINT(1)在MySQL中用於表示布林值,但實際上它可以儲存從-128到127的任何整數值(當使用有符號整數時)。因此,為了確保資料的準確性,你可能需要在應用層或者在資料庫層面透過觸發器或約束來確保該欄位只包含01

另外,從MySQL 8.0.16版本開始,MySQL也支援了使用BOOLEANBOOL作為別名來定義TINYINT(1)欄位,但這僅僅是語法上的便利,內部表示仍然是TINYINT(1)。例如:

CREATE TABLE example (
    id INT AUTO_INCREMENT PRIMARY KEY,
    is_active BOOLEAN NOT NULL -- 實際上是TINYINT(1)
);

在這個例子中,is_active欄位在功能上與使用TINYINT(1)定義是相同的。

相關文章