勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

MySQLのtinyintのカラムにbool値を入れた場合

   2024/02/25  MySQL

他所のシステムに携わることがあり中身を色々見ているとMySQLでtinyint(1)のカラムがあり、PHP側からbool値で格納しているというケースがあった。

tinyintは数値が入るものと認識していたのでよく分からなかったんだけど、以下テストすると問題なく動くようだった。

 

テスト内容

//テーブル作成
CREATE TABLE `tinyint_test` (
  `flg` tinyint(1) NOT NULL,
  `ymd` timestamp NOT NULL
)

//テーブル構造
+-------+------------+------+-----+-------------------+-----------------------------+
| Field | Type       | Null | Key | Default           | Extra                       |
+-------+------------+------+-----+-------------------+-----------------------------+
| flg   | tinyint(1) | NO   |     | NULL              |                             |
| ymd   | timestamp  | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+------------+------+-----+-------------------+-----------------------------+

//インサートテスト
INSERT INTO tinyint_test 
    (flg) 
VALUES 
    (true),
    (false),
    (1),
    (0),
    ('1'),
    ('0')

//テスト結果
+-----+---------------------+
| flg | ymd                 |
+-----+---------------------+
|   1 | 2015-12-15 22:57:09 |
|   0 | 2015-12-15 22:57:09 |
|   1 | 2015-12-15 22:57:09 |
|   0 | 2015-12-15 22:57:09 |
|   1 | 2015-12-15 22:57:09 |
|   0 | 2015-12-15 22:57:09 |
+-----+---------------------+

 

所感

trueは1に、falseは0になるというのは知らなかったので勉強になった。

 - MySQL

  関連記事

MySQLでパターンマッチの逆

LIKE検索の逆ってなったのでメモ。 NOT LIKE '%あああ%' が正解み ...

MySQLで「server has gone~」というエラーの対応方法

MySQLで「MySQL server has gone away」というエラー ...

MySQLでサイズの大きいファイルをインポートする際の注意点

MySQLでサイズの大きい(3GBほどの)dumpファイルを異なるサーバに移行し ...

MySQLにてUUIDを発行しプライマリキー(主キー)にする方法

普段MySQLでプライマリキー(主キー)を使う場合、オートインクリメントを利用し ...

PHPでmysqli関数使用時のプリペアドステートメントの利用方法

PHPでMySQLを扱う際はmysqli関数を、エスケープの際はreal_esc ...