MySQLのTINYINT(1)とブール型(BOOLEAN)の違いとは?
結論から言うと、TINYINT(1)とブール型(BOOLEAN)の間に違いはありません。MySQLでは、BOOLまたはBOOLEANというキーワードは内部的にTINYINT(1)へと変換されます。つまり、BOOLやBOOLEANはTINYINT(1)の別名(シノニム)として扱われるのです。
それでは、実際にテーブルを作成して確認してみましょう。
BOOLEAN型でテーブルを作成する
mysql> create table DemoTable
(
isMarried Boolean
);
Query OK, 0 rows affected (1.77 sec)次に、作成したテーブルの構造を確認します。
mysql> desc DemoTable;
実行結果は以下の通りです。
+-----------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------+------+-----+---------+-------+ | isMarried | tinyint(1) | YES | | NULL | | +-----------+------------+------+-----+---------+-------+ 1 row in set (0.01 sec)
このように、BOOLEANで列を定義しても、実際にはtinyint(1)という型で格納されていることがわかります。
データの挿入と表示
INSERTコマンドを使って、trueとfalseのレコードを挿入してみます。
mysql> insert into DemoTable values(true); Query OK, 1 row affected (0.30 sec) mysql> insert into DemoTable values(false); Query OK, 1 row affected (0.16 sec)
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+-----------+ | isMarried | +-----------+ | 1 | | 0 | +-----------+ 2 rows in set (0.00 sec)
trueが「1」、falseが「0」として保存されていることが確認できます。
このように、MySQLのブール値は内部的には数値(0または1)で管理されており、可読性を高めるための便利な別名だと理解しておくとよいでしょう。
-
MySQLの「AND」と「&&」の違いを徹底解説
MySQLには、論理積(AND)を求めるための演算子として「AND」と「&&」の2種類が用意されています。両者の違いは実はただ1点。「AND」が標準SQLで定められた標準の記法であるのに対し、「&&」はMySQL固有の独自構文であるという点です。この違い以外に、両者の間に機能上の差異は一切ありません。以下では、さまざまな条件における動作を具体例とともに確認していきましょう。ANDと&&の基本的な動作ANDおよび&&の演算結果は、必ず「1」か「0」のどちらかになります。どちらも論理演算子であり、複数のオペランド(被演算子)の中に1つでも値が0のものが含まれていれば結果は0となり、すべてが0以外で
-
MySQLにおける「!=NULL」と「IS NOT NULL」の違いとは?
MySQLでは、値を!=NULLと比較すると、結果は必ずNULLになります。つまり、!=NULLという比較は意味を持ちません。NULLは「不明な値」を表すため、通常の比較演算子では判定できないのです。NULL値を判定するには、専用の演算子であるIS NOT NULLを使用します。ここでは、!=NULLとIS NOT NULLの違いを実際に確認するために、まずテーブルを作成します。テーブルの作成まず、次のコマンドでテーブルを作成します。mysql> create table DemoTable1970 (