勉強したことのメモ

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で同一サーバーの異なるDB内のテーブルをJOINする
MySQLで同一サーバーの異なるDB内のテーブルをJOINする

同一のMySQLサーバーでdb1データベースのtable1テーブルと、db2デー ...

MySQLでカラム内容によって条件分岐させたい場合の対応方法
MySQLでカラム内容によって条件分岐させたい場合の対応方法

MySQLでカラムの内容によって条件を分岐させたかった。またPHPで処理するので ...

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

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

MySQLが起動も再起動もできない際の対応方法
MySQLが起動も再起動もできない際の対応方法

サイトで障害が発生した。FTPやSSH接続は出来るけどサイト自体は表示されない。 ...

MySQLのトリガーを使用して特定のテーブルの操作を行った際に別テーブルにログを残す方法
MySQLのトリガーを使用して特定のテーブルの操作を行った際に別テーブルにログを残す方法

MySQLにトリガーという機能があるらしくどのようなものか調べたところ、事前に「 ...