MySQL没有内置的boolean数据类型。存储布尔值(true/false)的最佳方式是使用 TINYINT(1) 类型。在该类型中,1 代表 TRUE,0 代表 FALSE。虽然可以使用 BOOLEAN 关键字,但MySQL会将其自动转换为 TINYINT(1)。
详细操作指南
-
建表定义
使用
TINYINT(1)或BOOLEAN(会被自动转换)。sql
sqlCREATE TABLE example ( id INT PRIMARY KEY, is_active TINYINT(1) -- 推荐 -- or is_active BOOLEAN (会被转换成TINYINT(1)) ); -
插入数据
直接使用
TRUE/FALSE关键字,或数字1/0。sql
sqlINSERT INTO example (id, is_active) VALUES (1, TRUE); INSERT INTO example (id, is_active) VALUES (2, 0); -
查询数据
查询结果仍为数字0或1。
sql
sqlSELECT * FROM example WHERE is_active = 1; -- 查询为true的记录
关键点与注意事项
- 兼容性 :
TRUE和FALSE是常量,分别等价于1和0。 - ORM映射 :在Java (Hibernate/MyBatis) 中,
TINYINT(1)通常映射为Boolean类型,即1->true,0->false。 - 为什么是TINYINT(1) :虽然
TINYINT可以存储 -128 到 127,但TINYINT(1)的设计初衷是为了明确表示这是一个布尔值字段。