勉強したことのメモ

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で経度緯度から半径○Kmのデータを抽出する方法

経度と緯度をtext型として格納しているMySQLのテーブルがあり、指定した経度 ...

SSH接続でMySQLにダンプファイルをインポートする方法

phpMyAdminやAdminerが入っていなかったり、ダンプファイルのサイズ ...

MySQLでdatetime型データの〇日後を取得する方法(DATEDIFF)

MySQLでdatetime型データがあり、何日経過しているかを取得し、〇日経過 ...

phpMyAdminでのエクスポート/インポート

DBのバックアップを取る際にエクスポート/インポートを行うが、 データ件数が多い ...

MySQLで特定の値を加算しつつNULL値の場合は0にする方法

いくつかのコードに対して投票を行い、その合計値をスコアとして出したい。ただ、投票 ...